Änderungen von Dokument NATS - Technisches Setup
Zuletzt geändert von Daniel Herrmann am 2025/12/14 16:20
Von Version
5.1
bearbeitet von Daniel Herrmann
am 2025/09/08 22:10
am 2025/09/08 22:10
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version
8.1
bearbeitet von Daniel Herrmann
am 2025/09/09 22:59
am 2025/09/09 22:59
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -83,6 +83,26 @@ 83 83 84 84 Da ein User nur einem Account zugeordnet werden kann, gibt es einen admin User für administrative Tätigkeiten sowie einen JetStream Admin User für die Account-Verwaltung. 85 85 86 +== {{id name="NATSSetup-NATSCoremitAccounts"/}}NATS Core mit Accounts == 87 + 88 +Damit die NATS Core Messages auch weiterhin funktionieren müssen publish und subscribe Berechtigungen vergeben werden. NATS wird neben dem Eventmanagement auch noch für die Task Queue mit Taskiq eingesetzt, hier werden zur Zeit noch Core Funktionalitäten verwendet. Daher muss die Berechtigung für den backend User erweitert werden: 89 + 90 +{{code language="json"}} 91 +accounts: { 92 + MKSP: { 93 + users: [ 94 + { 95 + user: "CN=backend.mksp-da.de,OU=Makerspace Darmstadt IT,O=Makerspace Darmstadt e.V.,C=DE" 96 + permissions: { 97 + publish: [">"] 98 + subscribe: [">"] 99 + } 100 + }, 101 +... 102 +{{/code}} 103 + 104 +Wichtig sind hier die zusätzlichen Permissions, die den Zugriff auf Core Events regeln. 105 + 86 86 == {{id name="NATSSetup-JetStreamKonfiguration"/}}JetStream Konfiguration == 87 87 88 88 In unserem Fall ist Persistenz auch bei einem zeitweisen Ausfall der Internetverbindung im Makerspace notwendig, sodass wir JetStream mit Message Retention verwenden. Dabei müssen die wichtigen Komponenten vorab angelegt werden. ... ... @@ -120,8 +120,109 @@ 120 120 121 121 Consumer sind eine Auswahl / Ansicht von Teilen eines Streams. Details finden sich wieder in der NATS Dokumentation: [[https:~~/~~/docs.nats.io/nats-concepts/jetstream/consumers>>url:https://docs.nats.io/nats-concepts/jetstream/consumers||shape="rect"]] 122 122 123 -Consumer können entweder persistent sein (dauerhaft, ein Client kann dann den bestehenden Consumer neben) oder flüchtig (ephemeral), in diesem Fall wird der Consumer beim Erstellen des Clients (beispielsweise durch N8n) angelegt. In der Regel werden Consumer durch einen Filter auf bestimmte Subjects beschränkt, diese dürfen sich nicht überschneiden. 143 +Consumer können entweder persistent sein (dauerhaft, ein Client kann dann den bestehenden Consumer neben) oder flüchtig (ephemeral), in diesem Fall wird der Consumer beim Erstellen des Clients (beispielsweise durch N8n) angelegt. In der Regel werden Consumer durch einen Filter auf bestimmte Subjects beschränkt, diese dürfen sich nicht überschneiden. Da die NATS JavaScript Client Library (die von n8n verwendet wird) es leider nicht sinnvoll erlaubt, ephemeral Consumer anzulegen verwenden wir dauerhafte Consumer-Namen. 124 124 145 +|=(% scope="col" %)((( 146 +Backend Event 147 +)))|=(% scope="col" %)((( 148 +Consumer Name 149 +)))|=(% scope="col" %)((( 150 +Schema 151 +))) 152 +|((( 153 +{{code language="none"}} 154 +mksp.backend.briefing.offer.cancelled 155 +{{/code}} 156 +)))|((( 157 +backend_briefing_offer_cancelled 158 +)))|((( 159 +##(% class="nc" %)BriefingOfferEvent(%%)## 160 +))) 161 +|((( 162 +{{code language="none"}} 163 +mksp.backend.briefing.offer.created 164 +{{/code}} 165 +)))|((( 166 +backend_briefing_offer_created 167 +)))|((( 168 +##(% class="nc" %)BriefingOfferEvent(%%)## 169 +))) 170 +|((( 171 +##(% class="s" %)mksp.backend.briefing.offer.updated(%%)## 172 +)))|((( 173 +backend_briefing_offer_updated 174 +)))|((( 175 +##(% class="nc" %)BriefingOfferEvent(%%)## 176 +))) 177 +|((( 178 +{{code language="none"}} 179 +mksp.backend.briefing.created 180 +{{/code}} 181 +)))|((( 182 +backend_briefing_created 183 +)))|((( 184 +##(% class="n" %)BriefingEvent(%%)## 185 +))) 186 +|((( 187 +##(% class="s" %)mksp.backend.key.assigned(%%)## 188 +)))|((( 189 +backend_key_assigned 190 +)))|((( 191 +##(% class="nc" %)KeyEvent(%%)## 192 +))) 193 +|((( 194 +##(% class="s" %)mksp.backend.key.unassigned(%%)## 195 +)))|((( 196 +backend_key_unassigned 197 +)))|((( 198 +##(% class="nc" %)KeyEvent(%%)## 199 +))) 200 +|((( 201 +##(% class="s" %)mksp.backend.storage.reserved(%%)## 202 +)))|((( 203 +backend_storage_reserved 204 +)))|((( 205 +##(% class="nc" %)StorageSpaceEvent(%%)## 206 +))) 207 +|((( 208 +(% class="s" %){{code language="none"}}mksp.backend.storage.released{{/code}} 209 +)))|((( 210 +backend_storage_released 211 +)))|((( 212 +##(% class="nc" %)StorageSpaceEvent(%%)## 213 +))) 214 +|((( 215 +(% class="s" %){{code language="none"}}mksp.backend.storage.expired{{/code}} 216 +)))|((( 217 +backend_storage_expired 218 +)))|((( 219 +(% class="nc" %){{code language="none"}}StorageSpaceEvent{{/code}} 220 +))) 221 +|((( 222 +(% class="s" %){{code language="none"}}mksp.backend.user.converted_to_member{{/code}} 223 +)))|((( 224 +backend_user_converted_to_member 225 +)))|((( 226 +(% class="nc" %){{code language="none"}}UserEvent{{/code}} 227 +))) 228 +|((( 229 +(% class="s" %){{code language="none"}}mksp.backend.user.converted_to_guest{{/code}} 230 +)))|((( 231 +backend_user_converted_to_guest 232 +)))|((( 233 +(% class="nc" %){{code language="none"}}UserEvent{{/code}} 234 +))) 235 + 236 +Die Consumer können dann wie folgt angelegt werden: 237 + 238 +{{code language="json"}} 239 +$ nats consumer add backend_events <name> --pull --filter="<filter>" --defaults 240 + 241 +# Beispiel 242 +nats consumer add backend_events backend_briefing_offer_cancelled --pull --filter="mksp.backend.briefing.offer.cancelled" --defaults 243 +nats consumer add backend_events backend_key_assigned --pull --filter="mksp.backend.key.assigned" --defaults 244 +{{/code}} 245 + 125 125 = {{id name="NATSSetup-Troubleshooting"/}}Troubleshooting = 126 126 127 127 Man kann über die NATS CLI mit dem Server interagieren. ... ... @@ -128,6 +128,8 @@ 128 128 129 129 == {{id name="NATSSetup-JetStream"/}}JetStream == 130 130 252 +=== {{id name="NATSSetup-Streams"/}}Streams === 253 + 131 131 Man kann sich die vorhandenen Streams und die Anzahl der Nachrichten anschauen. Die Anzahl sollte üblicherweise 0 sein, wenn die Zahl höher ist, werden Events nicht richtig abgearbeitet. 132 132 133 133 {{code language="shell"}} ... ... @@ -152,6 +152,58 @@ 152 152 {"timestamp":"2025-09-08T09:06:00.062358","stora 153 153 {{/code}} 154 154 278 +=== {{id name="NATSSetup-Consumer"/}}Consumer === 279 + 280 +Die bestehenden Consumer kann man sich ebenfalls im Jetstream Context anzeigen lassen: 281 + 282 +{{code language="json"}} 283 +$ nats consumer ls backend_events 284 +╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ 285 +│ Consumers │ 286 +├──────────────────────────────────┬─────────────┬─────────────────────┬─────────────┬─────────────┬───────────────┤ 287 +│ Name │ Description │ Created │ Ack Pending │ Unprocessed │ Last Delivery │ 288 +├──────────────────────────────────┼─────────────┼─────────────────────┼─────────────┼─────────────┼───────────────┤ 289 +│ backend_briefing_offer_cancelled │ │ 2025-09-09 22:53:26 │ 0 │ 0 │ never │ 290 +│ backend_key_assigned │ │ 2025-09-09 22:54:01 │ 0 │ 0 │ never │ 291 +╰──────────────────────────────────┴─────────────┴─────────────────────┴─────────────┴─────────────┴───────────────╯ 292 +{{/code}} 293 + 294 +In dieser Tabelle sieht man bereits die "unprocessed" Nachrichten, sieht also gut, wenn n8n die Nachrichten nicht korrekt verarbeitet. Man kann sich ebenfalls die Details eines Consumers anzeigen lassen: 295 + 296 +{{code language="json"}} 297 +$ nats consumer info backend_events backend_briefing_offer_cancelled 298 + 299 +Information for Consumer backend_events > backend_briefing_offer_cancelled created 2025-09-09 22:53:26 300 + 301 +Configuration: 302 + 303 + Name: backend_briefing_offer_cancelled 304 + Pull Mode: true 305 + Filter Subject: mksp.backend.briefing.offer.cancelled 306 + Deliver Policy: All 307 + Ack Policy: Explicit 308 + Ack Wait: 30.00s 309 + Replay Policy: Instant 310 + Max Ack Pending: 1,000 311 + Max Waiting Pulls: 512 312 + 313 +State: 314 + 315 + Host Version: 2.11.8 316 + Required API Level: 0 hosted at level 1 317 + Last Delivered Message: Consumer sequence: 0 Stream sequence: 10 318 + Acknowledgment Floor: Consumer sequence: 0 Stream sequence: 0 319 + Outstanding Acks: 0 out of maximum 1,000 320 + Redelivered Messages: 0 321 + Unprocessed Messages: 0 322 + Waiting Pulls: 1 of maximum 512 323 +{{/code}} 324 + 325 +Insbesondere die letzten beiden Zeilen sind wichtig: 326 + 327 +* **Unprocessed Messages** sind Nachrichten, die noch nicht abgerufen wurden. Dies sollte immer 0 sein 328 +* **Waiting Pulls**: die Anzahl der verbundenen Clients. Üblicherweise sollte das nur n8n sein, also immer 1. 329 + 155 155 == {{id name="NATSSetup-Server"/}}Server == 156 156 157 157 Man kann sich ebenfalls die aktiven Verbindungen anzeigen: ... ... @@ -165,7 +165,7 @@ 165 165 ├─────┬──────────────────────────┬──────────────┬─────────┬───────────────────┬─────────┬──────────┬─────────┬──────────┬──────────┬───────────┬──────┤ 166 166 │ CID │ Name │ Server │ Cluster │ IP │ Account │ Uptime │ In Msgs │ Out Msgs │ In Bytes │ Out Bytes │ Subs │ 167 167 ├─────┼──────────────────────────┼──────────────┼─────────┼───────────────────┼─────────┼──────────┼─────────┼──────────┼──────────┼───────────┼──────┤ 168 -│ 83 │ backend_ki qer│ mksp-nats-01 │ │ 172.18.0.33:52808 │ MKSP │ 2h24m18s │ 0 │ 0 │ 0 B │ 0 B │ 0 │343 +│ 83 │ backend_kicker │ mksp-nats-01 │ │ 172.18.0.33:52808 │ MKSP │ 2h24m18s │ 0 │ 0 │ 0 B │ 0 B │ 0 │ 169 169 │ 93 │ backend_scheduler │ mksp-nats-01 │ │ 172.18.0.29:47620 │ MKSP │ 2h23m23s │ 0 │ 0 │ 0 B │ 0 B │ 0 │ 170 170 │ 82 │ backend_fastapi │ mksp-nats-01 │ │ 172.18.0.33:52798 │ MKSP │ 2h24m18s │ 1 │ 1 │ 345 B │ 838 B │ 1 │ 171 171 │ 94 │ backend_worker │ mksp-nats-01 │ │ 172.18.0.37:53550 │ MKSP │ 2h23m23s │ 0 │ 0 │ 0 B │ 0 B │ 1 │
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -2078146 691 +207814677 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/2078146 69/NATS Setup1 +https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/207814677/NATS Setup