Änderungen von Dokument NATS - Technisches Setup
Zuletzt geändert von Daniel Herrmann am 2025/12/14 16:20
Von Version
4.1
bearbeitet von Daniel Herrmann
am 2025/09/08 18:03
am 2025/09/08 18:03
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version
9.1
bearbeitet von Daniel Herrmann
am 2025/09/10 09:08
am 2025/09/10 09:08
Ä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,61 @@ 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_created │ │ 2025-09-10 08:30:12 │ 0 │ 12 │ never │ 290 +│ backend_briefing_offer_cancelled │ │ 2025-09-10 08:21:02 │ 0 │ 0 │ never │ 291 +│ backend_briefing_offer_created │ │ 2025-09-10 08:28:25 │ 0 │ 0 │ never │ 292 +│ backend_briefing_offer_updated │ │ 2025-09-10 08:29:19 │ 0 │ 0 │ never │ 293 +│ backend_key_assigned │ │ 2025-09-10 08:21:04 │ 0 │ 0 │ never │ 294 +╰──────────────────────────────────┴─────────────┴─────────────────────┴─────────────┴─────────────┴───────────────╯ 295 +{{/code}} 296 + 297 +In dieser Tabelle sieht man bereits die "unprocessed" Nachrichten. Ist diese Zahl größer als 0 s sieht also gut, wenn n8n die Nachrichten nicht korrekt verarbeitet. Man kann sich ebenfalls die Details eines Consumers anzeigen lassen: 298 + 299 +{{code language="json"}} 300 +$ nats consumer info backend_events backend_briefing_offer_cancelled 301 + 302 +Information for Consumer backend_events > backend_briefing_offer_cancelled created 2025-09-09 22:53:26 303 + 304 +Configuration: 305 + 306 + Name: backend_briefing_offer_cancelled 307 + Pull Mode: true 308 + Filter Subject: mksp.backend.briefing.offer.cancelled 309 + Deliver Policy: All 310 + Ack Policy: Explicit 311 + Ack Wait: 30.00s 312 + Replay Policy: Instant 313 + Max Ack Pending: 1,000 314 + Max Waiting Pulls: 512 315 + 316 +State: 317 + 318 + Host Version: 2.11.8 319 + Required API Level: 0 hosted at level 1 320 + Last Delivered Message: Consumer sequence: 0 Stream sequence: 10 321 + Acknowledgment Floor: Consumer sequence: 0 Stream sequence: 0 322 + Outstanding Acks: 0 out of maximum 1,000 323 + Redelivered Messages: 0 324 + Unprocessed Messages: 0 325 + Waiting Pulls: 1 of maximum 512 326 +{{/code}} 327 + 328 +Insbesondere die letzten beiden Zeilen sind wichtig: 329 + 330 +* **Unprocessed Messages** sind Nachrichten, die noch nicht abgerufen wurden. Dies sollte immer 0 sein 331 +* **Waiting Pulls**: die Anzahl der verbundenen Clients. Üblicherweise sollte das nur n8n sein, also immer 1. 332 + 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 │346 +│ 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 │ ... ... @@ -198,7 +198,7 @@ 198 198 Beschreibung 199 199 ))) 200 200 |((( 201 -backend_ki qer379 +backend_kicker 202 202 )))|((( 203 203 1 204 204 )))|(((
- Confluence.Code.ConfluencePageClass[0]
-
- Id
-
... ... @@ -1,1 +1,1 @@ 1 -20781466 81 +207814660 - URL
-
... ... @@ -1,1 +1,1 @@ 1 -https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/20781466 8/NATS Setup1 +https://wiki.makerspace-darmstadt.de/spaces/PROJ/pages/207814660/NATS Setup