Skip to content

Commit 2bbe9e1

Browse files
ThomasDeBeclaude
andcommitted
docs: add doctor service, fix FHIR Spec MCP port, add DNS troubleshooting
- index.md: add Doctor service to Betrieb section - installation.md: replace manual curl checks with docker compose run --rm doctor - mcp-bridge.md: fix FHIR Spec MCP URL (was :3001, correct :8080) - troubleshooting.md: add Snowstorm DNS resolution issue, replace bash health check script with doctor service documentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 336d7a7 commit 2bbe9e1

4 files changed

Lines changed: 62 additions & 45 deletions

File tree

input/pagecontent/index.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ Details: [Terminology MCP Server](terminologie-mcp.html) · [Terminologie-Tools]
4444
| Zotero Comfort | 3001 | Literaturverwaltung MCP (Gruppen- + persönliche Bibliothek) |
4545
| FHIR Spec MCP | 8002 | FHIR R4 Spezifikationsnavigator |
4646

47+
#### Betrieb
48+
49+
| Service | Aufruf | Funktion |
50+
|---------|--------|----------|
51+
| Doctor | `docker compose run --rm doctor` | Funktionaler Health Check aller Services (DNS, SNOMED Routing, LOINC Tools) |
52+
4753
### Schnellstart
4854

4955
```bash

input/pagecontent/installation.md

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -111,38 +111,31 @@ Beim ersten Start passiert automatisch:
111111

112112
### Schritt 8: Verifizierung
113113

114-
Prüfe den Status aller Services:
114+
Prüfe den Status aller Container:
115115

116116
```bash
117117
docker compose ps
118118
```
119119

120-
Health-Checks für einzelne Services:
120+
Führe den integrierten Doctor-Service aus, um alle Services, DNS-Auflösung und funktionale Routen zu prüfen:
121121

122122
```bash
123-
# Elasticsearch
124-
curl -s http://localhost:9200/_cluster/health | jq .status
123+
docker compose run --rm doctor
124+
```
125125

126-
# Snowstorm
127-
curl -s http://localhost:8090/fhir/metadata | jq .software
126+
Der Doctor prüft DNS-Auflösung, Snowstorm FHIR-Endpunkte, SNOMED-Routing durch den Terminology Proxy, LOINC deutsche Labels und Panel-Index sowie alle Health-Endpunkte. Bei Problemen zeigt er genau an, welcher Check fehlschlägt.
128127

129-
# Terminology MCP (HTTP Proxy)
130-
curl -s http://localhost:3000/health
128+
Alternativ für einzelne Services:
131129

132-
# Terminology MCP (MCP SSE)
133-
curl -s http://localhost:3002/health
130+
```bash
131+
# Snowstorm
132+
curl -s http://localhost:8090/fhir/metadata | jq .software
134133

135-
# AskMII
136-
curl -s http://localhost:2026/health
134+
# Terminology MCP
135+
curl -s http://localhost:3002/health | jq .
137136

138137
# MCP Bridge
139-
curl -s http://localhost:8000/health
140-
141-
# Ollama
142-
curl -s http://localhost:11434
143-
144-
# Open WebUI
145-
curl -s http://localhost:3080
138+
curl -s http://localhost:8000/health | jq .
146139
```
147140

148141
### Elasticsearch-Speicher anpassen

input/pagecontent/mcp-bridge.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Beim Start fragt die Bridge alle konfigurierten MCP-Server nach ihren Tools ab:
2626
|-----------|-----|-------|
2727
| Terminology MCP | `http://terminology-mcp:3000` | 8 Terminologie-Tools |
2828
| AskMII | `http://ask-mii:2026` | FDPG Query Tools |
29-
| FHIR Spec MCP | `http://fhir-spec:3001` | FHIR-Navigations-Tools |
29+
| FHIR Spec MCP | `http://fhir-spec-mcp:8080` | FHIR-Navigations-Tools |
3030

3131
Die entdeckten Tools werden in das OpenAI Function Format konvertiert und bei jedem Chat-Request an Ollama mitgegeben.
3232

input/pagecontent/troubleshooting.md

Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,27 @@ docker volume rm ceir-os_sct_files
4848
docker compose up -d
4949
```
5050

51+
### Snowstorm DNS-Auflösung fehlgeschlagen
52+
53+
**Symptom:** Der Terminology MCP Server kann Snowstorm nicht erreichen. `lookup_code` für SNOMED CT schlägt fehl, obwohl Snowstorm läuft.
54+
55+
**Ursache:** Wenn Snowstorm einzeln neu gestartet wird (z.B. `docker restart ceir-snowstorm`), verliert der Container seinen DNS-Alias im Docker-Netzwerk. Andere Container können `snowstorm` dann nicht mehr auflösen.
56+
57+
**Diagnose:**
58+
59+
```bash
60+
# Doctor-Service ausführen — prüft DNS und alle Routen
61+
docker compose run --rm doctor
62+
```
63+
64+
**Lösung:** Snowstorm und abhängige Services über Docker Compose neu erstellen:
65+
66+
```bash
67+
docker compose up -d --force-recreate snowstorm terminology-mcp
68+
```
69+
70+
> **Wichtig:** `docker restart` reicht nicht — es muss `--force-recreate` sein, damit Docker die DNS-Einträge im Netzwerk neu registriert.
71+
5172
### SNOMED-Import dauert sehr lange
5273

5374
Der initiale Import kann je nach Paketgröße 10-30 Minuten dauern. Fortschritt prüfen:
@@ -184,40 +205,37 @@ BRIDGE_PORT=8001
184205

185206
### Health Checks für alle Services
186207

187-
Nutze folgendes Skript, um den Status aller Services zu prüfen:
208+
CEIR-OS enthält einen integrierten **Doctor-Service**, der alle Services, DNS-Auflösung und funktionale Routen prüft:
188209

189210
```bash
190-
echo "=== CEIR-OS Health Check ==="
191-
192-
echo -n "Elasticsearch: "
193-
curl -sf http://localhost:9200/_cluster/health | jq -r .status 2>/dev/null || echo "NICHT ERREICHBAR"
194-
195-
echo -n "Snowstorm: "
196-
curl -sf http://localhost:8090/fhir/metadata | jq -r .software.version 2>/dev/null || echo "NICHT ERREICHBAR"
197-
198-
echo -n "Terminology HTTP: "
199-
curl -sf http://localhost:3000/health | jq -r .status 2>/dev/null || echo "NICHT ERREICHBAR"
211+
docker compose run --rm doctor
212+
```
200213

201-
echo -n "Terminology MCP: "
202-
curl -sf http://localhost:3002/health | jq -r .status 2>/dev/null || echo "NICHT ERREICHBAR"
214+
Der Doctor führt 20 Checks aus:
203215

204-
echo -n "AskMII: "
205-
curl -sf http://localhost:2026/health | jq -r .status 2>/dev/null || echo "NICHT ERREICHBAR"
216+
| Kategorie | Was wird geprüft |
217+
|-----------|-----------------|
218+
| DNS-Auflösung | Alle 5 Service-Hostnamen im Docker-Netzwerk |
219+
| Elasticsearch | Cluster Health |
220+
| Snowstorm (direkt) | FHIR Metadata, CodeSystems, Concept Lookup, FHIR CodeSystem Lookup |
221+
| SNOMED Routing | Terminology Proxy → Snowstorm (POST /lookup mit echten SNOMED-Codes) |
222+
| LOINC Local Tools | Deutsche Labels (Körpertemperatur, Kreatinin), Panel-Index |
223+
| Service Health | Proxy HTTP, MCP SSE, Snowstorm-Verbindung, LOINC-Panels geladen |
224+
| MCP Bridge | Health Check |
206225

207-
echo -n "MCP Bridge: "
208-
curl -sf http://localhost:8000/health | jq -r .status 2>/dev/null || echo "NICHT ERREICHBAR"
226+
Alternativ gibt es das Host-seitige Script `./doctor.sh`, das zusätzlich Container-Status und Cross-Service-Konnektivität von außen prüft.
209227

210-
echo -n "Ollama: "
211-
curl -sf http://localhost:11434 >/dev/null 2>&1 && echo "OK" || echo "NICHT ERREICHBAR"
228+
Für einzelne Services:
212229

213-
echo -n "OpenWebUI: "
214-
curl -sf http://localhost:3080 >/dev/null 2>&1 && echo "OK" || echo "NICHT ERREICHBAR"
230+
```bash
231+
# Snowstorm
232+
curl -s http://localhost:8090/fhir/metadata | jq .software
215233

216-
echo -n "FHIR Spec MCP: "
217-
curl -sf http://localhost:8002/health | jq -r .status 2>/dev/null || echo "NICHT ERREICHBAR"
234+
# Terminology MCP
235+
curl -s http://localhost:3002/health | jq .
218236

219-
echo -n "Zotero Comfort: "
220-
curl -sf http://localhost:3001/health | jq -r .status 2>/dev/null || echo "NICHT ERREICHBAR"
237+
# MCP Bridge
238+
curl -s http://localhost:8000/health | jq .
221239
```
222240

223241
### Vollständiger Neustart

0 commit comments

Comments
 (0)