Service Health Check
One-Click Diagnosis
Single-node
bash
./scripts/doctor.sh # Key service status + health check
./scripts/doctor.sh --all # Check all services
./scripts/doctor.sh --logs # Include the last 20 lines of logs for key servicesK8s
bash
./scripts/verify-k8s-install.sh
# Pod status
kubectl -n <ns> get pods -o wide
kubectl -n <ns> get deploy -o wide
# Events
kubectl -n <ns> get events --sort-by=.lastTimestamp
# Logs
kubectl -n <ns> logs -l app=<svc> --tail=100
kubectl -n <ns> logs <pod> --previous # Previous container logsSingle-Point Health Probe
finclaw Microservices (21)
bash
curl http://localhost:26100/health # api-gateway
curl http://localhost:26101/health # identity-service
curl http://localhost:26102/health # orchestrator
curl http://localhost:26103/health # ag-ui-server
curl http://localhost:26104/health # persona-service
curl http://localhost:26105/health # skill-service
curl http://localhost:26107/health # claw-fleet-manager
curl http://localhost:26108/health # a2a-gateway
curl http://localhost:26109/health # auth-fabric-proxy (profile gated)
curl http://localhost:26115/health # auth-fabric (profile gated)
curl http://localhost:26200/health # conversation-store
curl http://localhost:26201/health # delivery
curl http://localhost:26202/health # inbox-service
curl http://localhost:26203/health # push-service
curl http://localhost:26205/health # document-service
curl http://localhost:26450/health # ai-infra-rs
curl http://localhost:26118/healthz # searxng (note: /healthz, not /health)
curl http://localhost:26460/health # feishu-connector
curl http://localhost:26461/health # doc-toolkit
curl http://localhost:26462/health # dingtalk-connector
curl http://localhost:26550/health # wecom-connectorIn K8s, use kubectl port-forward or kubectl exec curl.
Infrastructure Services
bash
# PostgreSQL
docker exec chatkit-postgres pg_isready -U postgres -d chatkit
# Or (probe the port from the host)
pg_isready -h <host> -p 26110
# TimescaleDB
pg_isready -h <host> -p 26111
# NATS (client port connectivity)
nc -z <host> 26112
# Without nc: timeout 3 bash -c 'echo > /dev/tcp/<host>/26112'
# Redis
docker exec chatkit-redis redis-cli ping
# TEI
curl http://localhost:26117/health
# Restate
curl http://localhost:26181/healthContract Version Handshake (Critical)
bash
curl http://localhost:26450/health | jq .contract_versionExpected: returns a version number other than unknown (for example, 1.2.1).
If unknown is returned: the contract version is baked into the image at build time, so unknown indicates a defective image - contact Finogeeks support. See Viewing Service Logs.
License Health
bash
# Single-node
curl -s http://localhost:26101/health | jq .deployment_license
# K8s (port-forward first, then hit the local port)
kubectl -n <ns> port-forward svc/identity-service 26101:26101Expected: status is active; expired / unloaded means the license has expired or is not loaded (see expires_at for the expiry time). If abnormal, contact Finogeeks to renew; see Update License.
Troubleshooting Recommendations
When a health check fails, the standard three steps:
doctor.sh(single-node) orverify-k8s-install.sh(K8s) to get the overall status- Check the logs for the specific service (see Viewing Service Logs)
- Single-point
/healthprobe to confirm
