{ "name": "robeing-admin-service-health-check", "nodes": [ { "parameters": { "rule": { "interval": [ { "field": "minutes", "interval": 10 } ] } }, "id": "health-001", "name": "Every 10 mins", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.1, "position": [200, 240] }, { "parameters": { "jsCode": "return [\n { name: 'robeing-gateway', url: 'http://192.168.219.45:8100/health' },\n { name: 'auth-server', url: 'http://192.168.219.45:9000/health' },\n { name: 'rb8001', url: 'http://192.168.219.52:8001/health' },\n { name: 'skill-email', url: 'http://192.168.219.52:8501/healthz' },\n { name: 'skill-news', url: 'http://192.168.219.52:8505/healthz' },\n { name: 'skill-rag-file', url: 'http://192.168.219.52:8508/healthz' },\n { name: 'skill-calendar', url: 'http://192.168.219.52:8512/health' }\n];" }, "id": "health-002", "name": "Service List", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [440, 240] }, { "parameters": { "method": "GET", "url": "={{ $json.url }}", "options": { "response": { "response": { "fullResponse": true } }, "timeout": 5000 } }, "id": "health-003", "name": "Check Health", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [680, 240], "onError": "continueErrorOutput" }, { "parameters": { "jsCode": "const service = $item.input.json.name;\nconst response = $json.body || {};\nconst statusCode = $json.statusCode;\nconst isUp = statusCode === 200 || statusCode === 201;\nreturn {\n service,\n is_up: isUp,\n status: isUp ? 'UP' : 'DOWN',\n code: statusCode || 'TIMEOUT/ERROR'\n};" }, "id": "health-004", "name": "Assess Status", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [940, 240] }, { "parameters": { "conditions": { "boolean": [ { "value1": "={{ $json.is_up }}", "value2": false } ] } }, "id": "health-005", "name": "Is Down?", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": [1180, 240] }, { "parameters": { "resource": "message", "operation": "post", "channel": "C07...", "text": "=🚨 *μ„œλΉ„μŠ€ μž₯μ•  감지*\\n\\nμ„œλΉ„μŠ€: *{{ $json.service }}*\\nμƒνƒœ: DOWN (Code: {{ $json.code }})\\n\\n확인이 ν•„μš”ν•©λ‹ˆλ‹€.", "otherOptions": {} }, "id": "health-006", "name": "Alert Slack", "type": "n8n-nodes-base.slack", "typeVersion": 2, "position": [1440, 180] } ], "connections": { "Every 10 mins": { "main": [[{ "node": "Service List", "type": "main", "index": 0 }]] }, "Service List": { "main": [[{ "node": "Check Health", "type": "main", "index": 0 }]] }, "Check Health": { "main": [[{ "node": "Assess Status", "type": "main", "index": 0 }]] }, "Assess Status": { "main": [[{ "node": "Is Down?", "type": "main", "index": 0 }]] }, "Is Down?": { "main": [ [{ "node": "Alert Slack", "type": "main", "index": 0 }], [] ] } }, "pinData": {}, "meta": { "templateCredsSetupCompleted": true, "instanceId": "robeing-admin" } }