Slack 경고와 자동 에러 작업지 생성을 포함한 에러 로그 모니터링
이것은DevOps분야의자동화 워크플로우로, 20개의 노드를 포함합니다.주로 If, Set, Ssh, Code, Jira 등의 노드를 사용하며. SSH, Slack 경고와 Jira 작업 명령 생성을 포함한 에러 로그 모니터링 도구
- •Slack Bot Token 또는 Webhook URL
카테고리
{
"id": "VbL8CupBzmcRolP4",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "Error Log Monitor with Slack Alerts & Auto Bug Ticket Creation",
"tags": [],
"nodes": [
{
"id": "44f0eba7-b92a-47f0-a7b0-c90eb5d9e8f0",
"name": "수동 트리거",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-480,
60
],
"parameters": {},
"typeVersion": 1
},
{
"id": "19a920cb-28da-4388-80f2-a1b7bd87badb",
"name": "설정 구성",
"type": "n8n-nodes-base.set",
"position": [
-260,
160
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "cf9f1b38-541c-4311-9fea-c66d7fd39473",
"name": "오류 로그 읽기",
"type": "n8n-nodes-base.ssh",
"position": [
-40,
160
],
"parameters": {
"command": "tail -n 50 /var/log/application/error.log | grep -E '(CRITICAL|ERROR|FATAL)' || echo 'No critical errors found'",
"authentication": "privateKey"
},
"credentials": {
"sshPrivateKey": {
"id": "ilPh8oO4GfSlc0Qy",
"name": "SSH Password account - test "
}
},
"typeVersion": 1
},
{
"id": "87962f71-2a7b-4913-b660-c3b1d7ee328d",
"name": "로그 파싱",
"type": "n8n-nodes-base.code",
"position": [
400,
160
],
"parameters": {
"jsCode": "const logOutput = $input.first().json.stdout || '';\nconst lines = logOutput.split('\\n').filter(line => line.trim() !== '' && line !== 'No critical errors found');\n\nconst errors = [];\n\nlines.forEach((line, index) => {\n let errorLevel = 'ERROR';\n \n if (line.includes('CRITICAL') || line.includes('FATAL')) {\n errorLevel = 'CRITICAL';\n }\n \n const timestamp = new Date().toISOString();\n const errorId = `ERR-${Date.now()}-${index}`;\n \n errors.push({\n id: errorId,\n level: errorLevel,\n message: line.trim(),\n timestamp: timestamp,\n raw_log: line\n });\n});\n\nreturn errors.map(error => ({ json: error }));"
},
"typeVersion": 2
},
{
"id": "093e59c5-8c25-4c70-9f61-418cfded5f40",
"name": "IF 치명적 오류",
"type": "n8n-nodes-base.if",
"position": [
620,
160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "={{ $json.level }}",
"operation": "equal",
"rightValue": "CRITICAL"
}
}
},
"typeVersion": 2
},
{
"id": "0ca2c626-4dd7-42f8-837d-559c9df7657b",
"name": "Slack 알림 전송",
"type": "n8n-nodes-base.slack",
"position": [
840,
-180
],
"webhookId": "a6dc2a87-e06c-463e-b63c-c08f8bf457ca",
"parameters": {
"text": "🚨 CRITICAL ERROR DETECTED",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "C0987654"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "MQ0fgwuS8AzfwFvy",
"name": "Slack account - test "
}
},
"typeVersion": 2
},
{
"id": "05e1b571-702b-4744-a3b7-38300058e3ff",
"name": "Jira 티켓 생성",
"type": "n8n-nodes-base.jira",
"position": [
840,
160
],
"parameters": {
"project": {
"mode": "name",
"value": "BUG"
},
"summary": "Critical Error: {{ $json.id }}",
"issueType": {
"mode": "name",
"value": "Bug"
},
"additionalFields": {
"labels": [
"auto-generated",
"critical-error"
],
"priority": {
"mode": "name",
"value": "Highest"
},
"description": "**Error Details:**\\n\\nError ID: {{ $json.id }}\\nLevel: {{ $json.level }}\\nTimestamp: {{ $json.timestamp }}\\n\\n**Error Message:**\\n```\\n{{ $json.message }}\\n```\\n\\n**Raw Log:**\\n```\\n{{ $json.raw_log }}\\n```\\n\\n*This ticket was automatically created by the Error Monitoring System.*"
}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "cP7JyAE1RB0zcBon",
"name": "Jira SW Cloud - test"
}
},
"typeVersion": 1
},
{
"id": "0b13473e-63de-4874-8d9e-843cc8e51c1d",
"name": "비치명적 알림 전송",
"type": "n8n-nodes-base.slack",
"position": [
860,
520
],
"webhookId": "7fdc3628-087e-4fc3-ba38-56c54461b293",
"parameters": {
"text": "⚠️ Error Detected: {{ $json.level }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "C098765"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "MQ0fgwuS8AzfwFvy",
"name": "Slack account - test "
}
},
"typeVersion": 2
},
{
"id": "4374ae68-f2a2-46f1-82e9-a98e3dc7886f",
"name": "모든 로그 대기",
"type": "n8n-nodes-base.wait",
"position": [
180,
160
],
"webhookId": "fdde8463-2899-4169-891b-7a5df07b4f34",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "d90c28f1-6013-4e04-b676-7f8d831ab1d3",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
40
],
"parameters": {
"color": 5,
"width": 160,
"height": 280,
"content": "Configures basic parameters"
},
"typeVersion": 1
},
{
"id": "7e3948e4-5ac8-4a98-a45d-5c8097208b46",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
-20
],
"parameters": {
"color": 4,
"width": 150,
"height": 220,
"content": "For testing"
},
"typeVersion": 1
},
{
"id": "702b64fb-c7b9-44b6-9d5f-d3597a2d366b",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
300
],
"parameters": {
"color": 3,
"width": 150,
"height": 220,
"content": "Runs every 5 minutes automatically"
},
"typeVersion": 1
},
{
"id": "0ba8b489-3f92-4d0a-93f7-121aaca95771",
"name": "5분마다 예약",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-480,
380
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes"
}
]
}
},
"typeVersion": 1
},
{
"id": "2250de6b-468a-49bb-a6ef-76be482fe3a9",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
360,
40
],
"parameters": {
"color": 3,
"width": 160,
"height": 280,
"content": "JavaScript code to parse and categorize errors"
},
"typeVersion": 1
},
{
"id": "2231a875-1367-47d0-aab0-7a4fcc03fe5c",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
40
],
"parameters": {
"color": 6,
"width": 160,
"height": 280,
"content": "Wait for all error logs read"
},
"typeVersion": 1
},
{
"id": "f3c58543-431e-40aa-9e30-f5bc0a181c0d",
"name": "스티커 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
40
],
"parameters": {
"width": 160,
"height": 280,
"content": "SSH into server and reads error logs"
},
"typeVersion": 1
},
{
"id": "8e5766d8-d40b-4867-8a17-88fdf9a40b29",
"name": "스티커 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
840,
400
],
"parameters": {
"color": 5,
"width": 160,
"height": 260,
"content": "Sends simple alert for non-critical errors"
},
"typeVersion": 1
},
{
"id": "c71bc4f9-a96e-4b08-beba-5b3c3bce86c7",
"name": "스티커 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
820,
40
],
"parameters": {
"width": 160,
"height": 260,
"content": "Auto-creates bug ticket for critical errors"
},
"typeVersion": 1
},
{
"id": "fa119483-66e9-40e5-9e50-4837807f50e0",
"name": "스티커 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
-300
],
"parameters": {
"color": 6,
"width": 160,
"height": 280,
"content": " Sends detailed alert for critical errors"
},
"typeVersion": 1
},
{
"id": "7f07dd84-a237-4b62-9e32-7b431c844152",
"name": "스티커 노트9",
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
40
],
"parameters": {
"color": 4,
"width": 160,
"height": 280,
"content": "Filters critical errors from regular errors\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "9ee70159-d6b0-4271-bda9-3ab79401d38e",
"connections": {
"87962f71-2a7b-4913-b660-c3b1d7ee328d": {
"main": [
[
{
"node": "093e59c5-8c25-4c70-9f61-418cfded5f40",
"type": "main",
"index": 0
}
]
]
},
"19a920cb-28da-4388-80f2-a1b7bd87badb": {
"main": [
[
{
"node": "cf9f1b38-541c-4311-9fea-c66d7fd39473",
"type": "main",
"index": 0
}
]
]
},
"44f0eba7-b92a-47f0-a7b0-c90eb5d9e8f0": {
"main": [
[
{
"node": "19a920cb-28da-4388-80f2-a1b7bd87badb",
"type": "main",
"index": 0
}
]
]
},
"cf9f1b38-541c-4311-9fea-c66d7fd39473": {
"main": [
[
{
"node": "4374ae68-f2a2-46f1-82e9-a98e3dc7886f",
"type": "main",
"index": 0
}
]
]
},
"0ca2c626-4dd7-42f8-837d-559c9df7657b": {
"main": [
[]
]
},
"093e59c5-8c25-4c70-9f61-418cfded5f40": {
"main": [
[
{
"node": "0ca2c626-4dd7-42f8-837d-559c9df7657b",
"type": "main",
"index": 0
},
{
"node": "05e1b571-702b-4744-a3b7-38300058e3ff",
"type": "main",
"index": 0
}
],
[
{
"node": "0b13473e-63de-4874-8d9e-843cc8e51c1d",
"type": "main",
"index": 0
}
]
]
},
"4374ae68-f2a2-46f1-82e9-a98e3dc7886f": {
"main": [
[
{
"node": "87962f71-2a7b-4913-b660-c3b1d7ee328d",
"type": "main",
"index": 0
}
]
]
},
"05e1b571-702b-4744-a3b7-38300058e3ff": {
"main": [
[]
]
},
"0ba8b489-3f92-4d0a-93f7-121aaca95771": {
"main": [
[
{
"node": "19a920cb-28da-4388-80f2-a1b7bd87badb",
"type": "main",
"index": 0
}
]
]
},
"0b13473e-63de-4874-8d9e-843cc8e51c1d": {
"main": [
[]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 데브옵스
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Oneclick AI Squad
@oneclick-aiThe AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.
이 워크플로우 공유