로그 스트리밍
로그 스트리밍은 모든 Enterprise 플랜에서 사용 가능합니다. 로그 스트리밍을 통해 n8n에서 자체 로깅 도구로 이벤트를 전송할 수 있습니다. 로그 스트리밍을 사용하려면 스트리밍 대상을 추가해야 합니다. n8n을 셀프 호스팅하는 경우, 환경 변수를 사용하여 추가 로그 스트리밍 동작을 구성할 수 있습니다.
로그 스트리밍은 모든 Enterprise 플랜에서 사용 가능합니다.
로그 스트리밍을 통해 n8n에서 자체 로깅 도구로 이벤트를 전송할 수 있습니다. 이를 통해 n8n 모니터링을 자체 알림 및 로깅 프로세스에서 관리할 수 있습니다.
로그 스트리밍 설정#
로그 스트리밍을 사용하려면 스트리밍 대상을 추가해야 합니다.
- 설정 > 로그 스트리밍으로 이동합니다.
- 새 대상 추가를 선택합니다.
- 대상 유형을 선택합니다. n8n이 새 이벤트 대상 모달을 엽니다.
- 새 이벤트 대상 모달에서 이벤트 대상에 대한 구성 정보를 입력합니다. 이는 사용 중인 대상 유형에 따라 다릅니다.
- 이벤트를 선택하여 스트리밍할 이벤트를 선택합니다.
- 저장을 선택합니다.
n8n을 셀프 호스팅하는 경우, 환경 변수를 사용하여 추가 로그 스트리밍 동작을 구성할 수 있습니다. 환경 변수에서 대상을 관리할 수도 있습니다. 환경 변수를 사용한 로그 스트리밍 대상 구성을 참조하세요.
프로세스별 이벤트 로그 파일#
n8n은 스트리밍 대상으로 전달하기 전에 각 발행된 이벤트를 로컬 로그 파일에 저장합니다. 이 파일은 재시작 후에도 유지되며, 아직 전달되지 않은 이벤트를 n8n이 재발행할 수 있도록 합니다.
기본적으로 n8n은 <n8n-user-folder>/n8nEventLog.log에 이벤트 로그를 기록하며, 해당 프로세스에서는 -worker 또는 -webhook-processor 접미사가 붙습니다. 단일 n8n 프로세스가 파일을 소유할 때 이 기본값이 예상대로 작동합니다.
여러 n8n 프로세스가 하나의 쓰기 가능한 볼륨을 공유하는 경우, 예를 들어 NFS 또는 EFS의 공유 영구 볼륨을 사용하는 큐 모드 워커의 경우, 같은 이벤트 로그 파일에 쓰면 안 됩니다. 여러 프로세스에서의 동시 추가는 파일이 뒤섞이거나 손상될 수 있으며, 복구 실패와 이벤트 손실로 이어질 수 있습니다.
이를 방지하려면 각 프로세스에서 N8N_EVENTBUS_LOGWRITER_LOGFULLPATH를 .log로 끝나는 고유한 절대 경로로 설정하세요. n8n은 구성된 경로를 그대로 사용하며 프로세스 유형 접미사를 추가하지 않으므로, 오케스트레이터가 프로세스 간 고유성을 관리해야 합니다.
동반 변수인 N8N_EVENTBUS_LOGWRITER_MAXTOTALMESSAGESPERFILE은 복구 중 단일 이벤트 로그 파일에서 n8n이 파싱하는 줄 수를 제한하므로, 손상된 파일이 프로세스 메모리를 고갈시키는 것을 방지합니다.
참고 사항:
N8N_EVENTBUS_LOGWRITER_LOGFULLPATH가 설정되지 않은 경우 기본 동작은 변경되지 않습니다.- 변수가 설정되면 n8n은 경로에 자동으로 접미사를 추가하지 않습니다. 각 프로세스는 자체 값을 받아야 합니다.
- 이전 배포에서 공유
n8nEventLog-worker.log파일이 이미 존재하는 경우, 옵트인하기 전에 수동으로 격리하세요. n8n은 레거시 파일을 자동으로 삭제하지 않습니다.
이벤트#
다음 이벤트를 사용할 수 있습니다. 설정 > 로그 스트리밍 > 이벤트에서 스트리밍할 이벤트를 선택할 수 있습니다.
- 워크플로
- 시작됨
- 성공
- 실패
- 취소됨
- 노드 실행
- 시작됨
- 완료됨
- 감사
- 사용자 로그인 성공
- 사용자 로그인 실패
- 사용자 가입
- 사용자 업데이트됨
- 사용자 삭제됨
- 사용자 초대됨
- 사용자 초대 수락됨
- 사용자 재초대됨
- 사용자 이메일 실패
- 사용자 재설정 요청됨
- 사용자 재설정됨
- 사용자 자격 증명 생성됨
- 사용자 자격 증명 공유됨
- 사용자 자격 증명 업데이트됨
- 사용자 자격 증명 삭제됨
- 사용자 API 생성됨
- 사용자 API 삭제됨
- 사용자 MFA 활성화됨
- 사용자 MFA 비활성화됨
- 사용자 실행 삭제됨
- 실행 데이터 표시됨
- 실행 데이터 표시 실패
- 패키지 설치됨
- 패키지 업데이트됨
- 패키지 삭제됨
- 워크플로 생성됨
- 워크플로 삭제됨
- 워크플로 업데이트됨
- 워크플로 보관됨
- 워크플로 보관 해제됨
- 워크플로 활성화됨
- 워크플로 비활성화됨
- 워크플로 버전 업데이트됨
- 워크플로 실행됨
- 워크플로 대기 중
- 워크플로 재개됨
- 변수 생성됨
- 변수 업데이트됨
- 변수 삭제됨
- 외부 시크릿 공급자 설정 저장됨
- 외부 시크릿 공급자 새로고침됨
- 외부 시크릿 연결 생성됨
- 외부 시크릿 연결 업데이트됨
- 외부 시크릿 연결 삭제됨
- 외부 시크릿 연결 테스트됨
- 외부 시크릿 연결 새로고침됨
- 개인 게시 제한 활성화됨
- 개인 게시 제한 비활성화됨
- 개인 공유 제한 활성화됨
- 개인 공유 제한 비활성화됨
- 2FA 강제 활성화됨
- 2FA 강제 비활성화됨
- 토큰 교환 성공
- 토큰 교환 실패
- 토큰 교환 임베드 로그인
- 토큰 교환 임베드 로그인 실패
- 토큰 교환 ID 연결됨
- 토큰 교환 사용자 프로비저닝됨
- 토큰 교환 역할 업데이트됨
- 역할 매핑 역할 해결됨
- 역할 매핑 규칙 생성됨
- 역할 매핑 규칙 업데이트됨
- 역할 매핑 규칙 삭제됨
- 역할 매핑 규칙 대량 삭제됨
- 워커
- 시작됨
- 중지됨
- AI 노드 로그
- 메모리 메시지 가져오기
- 메모리 메시지 추가됨
- 출력 파서 파싱됨
- 리트리버 관련 문서 가져오기
- 임베딩 문서 임베딩됨
- 임베딩 쿼리 임베딩됨
- 문서 처리됨
- 텍스트 분할기 분할됨
- 도구 호출됨
- 벡터 스토어 검색됨
- LLM 생성됨
- LLM 오류
- 벡터 스토어 채워짐
- 벡터 스토어 업데이트됨
- 러너
- 태스크 요청됨
- 응답 수신됨
- 큐
- 작업 큐에 추가됨
- 작업 큐에서 제거됨
- 작업 완료됨
- 작업 실패됨
- 작업 중단됨
대상#
n8n은 세 가지 대상 유형을 지원합니다:
- syslog 서버
- 일반 웹훅
- Sentry 클라이언트
환경 변수를 사용한 구성#
n8n을 셀프 호스팅하는 경우, UI 대신 환경 변수로 로그 스트리밍 대상을 관리할 수 있습니다. n8n v2.19.0부터 사용 가능합니다. N8N_LOG_STREAMING_MANAGED_BY_ENV를 true로 설정하고 N8N_LOG_STREAMING_DESTINATIONS에 JSON 배열로 대상을 제공합니다. n8n은 시작 시마다 이를 재적용하고 Log Streaming UI를 읽기 전용으로 잠급니다. 전체 패턴은 환경 변수를 사용한 인스턴스 설정 관리를 참조하세요.
이 섹션의 내용은 원문 문서를 참조하세요. (log-streaming.md)
공통 필드#
대상 유형과 관계없이 모든 대상은 다음 필드를 허용합니다.
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
type |
"webhook" | "syslog" | "sentry" |
예 | 대상 유형. 어떤 유형별 필드가 적용되는지 결정합니다. |
label |
string | 아니요 | UI에 표시되는 이름. |
enabled |
boolean | 아니요 | 대상이 이벤트를 전달할지 여부. |
subscribedEvents |
string[] | 아니요 | 전달할 이벤트 이름 또는 그룹 접두사(예: n8n.audit, n8n.workflow). |
anonymizeAuditMessages |
boolean | 아니요 | n8n.audit.* 이벤트에서 민감한 페이로드 데이터를 제거합니다. |
circuitBreaker |
object | 아니요 | 장애 보호 설정. 서킷 브레이커를 참조하세요. |
Webhook#
| 필드 | 유형 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
url |
string (URL) | 예 | - | 이벤트 페이로드를 수신하는 엔드포인트. |
method |
"GET" | "POST" | "PUT" |
아니요 | "POST" |
전달에 사용되는 HTTP 메서드. |
sendQuery |
boolean | 아니요 | false |
쿼리 매개변수를 전송할지 여부. |
specifyQuery |
"keypair" | "json" |
아니요 | "keypair" |
sendQuery가 true일 때 쿼리 매개변수의 형식. |
queryParameters |
{ parameters: [{ name, value }] } |
아니요 | - | 키/값 쌍으로 표현된 쿼리 매개변수. specifyQuery가 "keypair"일 때 사용. |
jsonQuery |
string | 아니요 | "" |
JSON 문자열로 표현된 쿼리 매개변수. specifyQuery가 "json"일 때 사용. |
sendHeaders |
boolean | 아니요 | false |
헤더를 전송할지 여부. |
specifyHeaders |
"keypair" | "json" |
아니요 | "keypair" |
sendHeaders가 true일 때 헤더의 형식. |
headerParameters |
{ parameters: [{ name, value }] } |
아니요 | - | 키/값 쌍으로 표현된 헤더. specifyHeaders가 "keypair"일 때 사용. |
jsonHeaders |
string | 아니요 | "" |
JSON 문자열로 표현된 헤더. specifyHeaders가 "json"일 때 사용. |
options |
object | 아니요 | {} |
연결 수준 옵션. Webhook 옵션을 참조하세요. |
Webhook 옵션#
| 필드 | 유형 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
allowUnauthorizedCerts |
boolean | 아니요 | false |
SSL 인증서 검증을 무시합니다. |
queryParameterArrays |
"repeat" | "brackets" | "indices" |
아니요 | "brackets" |
쿼리 매개변수에 사용되는 배열 형식. sendQuery가 true일 때 사용. |
redirect |
{ redirect: { followRedirects, maxRedirects } } |
아니요 | { redirect: {} } |
HTTP 리다이렉트 따라가기. followRedirects의 기본값은 false; maxRedirects의 기본값은 21. |
proxy |
{ proxy: { protocol, host, port } } |
아니요 | { proxy: {} } |
HTTP/HTTPS 프록시. protocol은 "https" 또는 "http"; host 기본값은 "127.0.0.1"; port 기본값은 9000. |
timeout |
integer ≥ 1 (ms) | 아니요 | 5000 |
중단 전 서버가 응답을 시작할 때까지 기다리는 시간. |
socket |
{ keepAlive, maxSockets, maxFreeSockets } |
아니요 | { keepAlive: true, maxSockets: 50, maxFreeSockets: 5 } |
소켓 풀 구성. maxSockets와 maxFreeSockets는 ≥ 1인 정수. |
[
{
"type": "webhook",
"label": "Audit",
"subscribedEvents": ["n8n.audit", "n8n.workflow"],
"anonymizeAuditMessages": true,
"url": "https://hooks.example.com/n8n",
"method": "POST",
"sendHeaders": true,
"specifyHeaders": "keypair",
"headerParameters": {
"parameters": [
{ "name": "Authorization", "value": "Bearer s3cret" }
]
},
"options": {
"timeout": 5000,
"redirect": { "redirect": { "followRedirects": true, "maxRedirects": 5 } }
}
}
]
Syslog#
| 필드 | 유형 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
host |
string | 예 | - | Syslog 서버 호스트명 또는 IP. |
port |
number | 아니요 | 514 |
Syslog 서버 포트. |
protocol |
"udp" | "tcp" | "tls" |
아니요 | "udp" |
전송 프로토콜. |
tlsCa |
string | protocol이 "tls"인 경우 |
"" |
TLS 연결에 사용되는 PEM 형식 CA 인증서. |
facility |
number | 아니요 | 16 |
Syslog facility 코드. 허용 값: 0 (Kernel), 1 (User), 3 (System), 13 (Audit), 14 (Alert), 1623 (Local0 |
app_name |
string | 아니요 | "n8n" |
syslog APP-NAME으로 사용되는 값. |
[
{
"type": "syslog",
"label": "SIEM",
"subscribedEvents": ["n8n.audit", "n8n.workflow"],
"host": "syslog.example.com",
"port": 514,
"protocol": "tls",
"tlsCa": "-----BEGIN CERTIFICATE-----\n…\n-----END CERTIFICATE-----",
"facility": 16,
"app_name": "n8n"
}
]
Sentry#
| 필드 | 유형 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
dsn |
string (URL) | 예 | - | Sentry DSN 클라이언트 키. |
[
{
"type": "sentry",
"label": "Sentry prod",
"subscribedEvents": ["n8n.workflow"],
"dsn": "https://public@sentry.example.com/1"
}
]
서킷 브레이커#
서킷 브레이커는 반복적인 장애 후 대상으로의 전달을 일시적으로 중단하여, 문제가 있는 다운스트림 서비스에 대한 부하를 방지합니다. 모든 대상 유형에서 사용 가능합니다.
| 필드 | 유형 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
maxFailures |
integer ≥ 1 | 아니요 | 5 |
failureWindow 내에서 장애가 이 숫자에 도달하면 n8n은 대상으로의 요청 전송을 중단합니다. |
failureWindow |
integer ≥ 100 (ms) | 아니요 | 60000 |
장애를 카운트하는 슬라이딩 윈도우. 오래된 장애는 만료됩니다. |
{ "circuitBreaker": { "maxFailures": 3, "failureWindow": 30000 } }
전체 예시#
N8N_LOG_STREAMING_MANAGED_BY_ENV=true
N8N_LOG_STREAMING_DESTINATIONS='[
{
"type": "webhook",
"label": "Ops webhook",
"enabled": true,
"subscribedEvents": ["n8n.workflow", "n8n.audit"],
"anonymizeAuditMessages": true,
"url": "https://hooks.example.com/n8n",
"method": "POST",
"sendHeaders": true,
"specifyHeaders": "keypair",
"headerParameters": {
"parameters": [
{ "name": "Authorization", "value": "Bearer s3cret" }
]
},
"circuitBreaker": { "maxFailures": 5, "failureWindow": 60000 }
},
{
"type": "sentry",
"label": "Sentry prod",
"subscribedEvents": ["n8n.workflow"],
"dsn": "https://public@sentry.example.com/1"
}
]'
