Skip to main content

새벽 3시에 회사를 지키는 것은 의지가 아니라 시스템이다

1인 회사의 가장 무서운 순간은 바쁠 때가 아니다. 아무 일도 없는 줄 알고 잠들었는데, 그사이에 결제 웹훅이 멈추고, 가입 메일이 발송되지 않고, 서버 디스크가 99%까지 차오르고, OpenAI API 비용이 평소의 세 배로 뛰어오르는 순간이다.

직원이 여러 명인 회사라면 누군가가 슬랙을 보고, 누군가가 서버 대시보드를 보고, 누군가가 고객 문의를 먼저 발견할 수 있다. 그러나 혼자 일하는 사람에게는 그런 여분의 눈이 없다. 더 정확히 말하면, 사람의 눈으로는 만들 수 없다. 우리는 잠을 자야 하고, 밥을 먹어야 하며, 때로는 노트북을 닫고 산책도 해야 한다.

그래서 운영 자동화의 목적은 "편해지기"가 아니다. 회사가 내 시야 밖에서도 무너지지 않게 만드는 것이다. n8n은 콘텐츠를 올리고 고객 메일을 보내는 도구이기도 하지만, 동시에 24시간 깨어 있는 감시자다. 서비스가 살아 있는지, 워크플로우가 실패하지 않는지, 비용이 폭주하지 않는지, 이상한 로그인 시도가 반복되지 않는지 계속 신호를 확인할 수 있다.

이번 장에서는 1인 운영자가 최소한으로 갖춰야 할 운영 감시 체계를 만든다. 목표는 거창한 관제센터가 아니다. 혼자서도 매일 같은 기준으로 회사를 점검하고, 위험 신호가 생기면 사용자가 알아차리기 전에 먼저 알 수 있는 안전망을 만드는 것이다.

서버와 인프라 모니터링이라는 1인 운영자의 안전망

모니터링은 '살아 있음'과 '일하고 있음'을 구분하는 일이다

초보자가 가장 자주 하는 실수는 서버가 켜져 있으면 서비스가 정상이라고 생각하는 것이다. 하지만 서버가 켜져 있어도 결제 알림 워크플로우가 실패할 수 있고, n8n 화면이 열려도 특정 API 인증키가 만료되어 고객 온보딩이 멈출 수 있다.

운영 감시는 크게 두 가지 질문으로 나눠야 한다.

첫 번째 질문은 "시스템이 살아 있는가?"다. n8n 인스턴스, 데이터베이스, 서버, 네트워크가 응답하는지 확인한다. n8n은 서버 상태를 빠르게 확인할 수 있는 헬스체크 엔드포인트를 제공한다. 일반적으로 /healthz에 HTTP GET 요청을 보내 200 OK 응답이 오는지 확인하는 식이다. 단, 이것은 건물의 불이 켜져 있는지 확인하는 정도에 가깝다. 실제로 안에서 일이 제대로 처리되고 있는지는 별도로 봐야 한다.1

두 번째 질문은 "시스템이 일을 제대로 하고 있는가?"다. 워크플로우 성공률, 실패율, 평균 실행 시간, 실행 지연, 큐 적체, 특정 노드의 반복 오류를 확인해야 한다. 예를 들어 신규 가입자 환영 메일 워크플로우가 30분째 실패 중이라면 서버가 살아 있어도 사업은 이미 손상되고 있다.

따라서 운영 감시 체계는 다음 순서로 쌓아 올리는 것이 좋다.

  • 서비스 생존 확인: n8n, 웹사이트, API, 데이터베이스가 응답하는지 확인한다.

  • 워크플로우 실행 확인: 중요한 자동화가 성공했는지, 실패했는지, 느려졌는지 추적한다.

  • 인프라 자원 확인: CPU, 메모리, 디스크, 네트워크, 프로세스 상태를 감시한다.

  • 비용과 보안 확인: 사용량 기반 과금과 비정상 접근 신호를 조기에 발견한다.

  • 일일 운영 리포트: 매출, 장애, 비용, CS, 워크플로우 상태를 한 장으로 요약한다.

이 다섯 층이 쌓이면 1인 회사는 "운영자가 감으로 버티는 상태"에서 "시스템이 먼저 말해주는 상태"로 바뀐다.

첫 번째 안전망: n8n이 살아 있는지 확인하기

가장 먼저 만들 워크플로우는 단순하다. 일정 시간마다 n8n과 핵심 서비스에 HTTP 요청을 보내고, 응답이 이상하면 알림을 보내는 구조다. 너무 단순해서 우습게 보일 수 있지만, 실제 장애 대응에서 가장 먼저 필요한 것은 바로 이 단순한 신호다.

워크플로우 구조는 이렇게 잡는다.

Schedule Trigger
→ HTTP Request: n8n /healthz 확인
→ IF: 상태 코드가 200인가?
→ 정상: 로그 저장
→ 비정상: 장애 등급 분류
→ Slack / Email / Telegram 알림

예를 들어 5분마다 https://your-n8n-domain.com/healthz를 호출한다. 200 응답이면 정상으로 기록한다. 연결 오류, 타임아웃, 500번대 응답이 오면 장애로 분류한다. 여기서 중요한 것은 "알림을 보낸다"가 아니라 "장애 등급을 나눈다"다.

모든 장애를 같은 방식으로 알리면 얼마 지나지 않아 알림을 무시하게 된다. 이것을 알림 피로라고 한다. 1인 운영자에게 알림 피로는 치명적이다. 알림을 너무 많이 받으면 진짜 위험한 신호도 광고 문자처럼 느껴진다.

장애 등급은 단순하게 시작해도 충분하다.

  • P1 긴급: 서비스 접속 불가, 결제 실패 반복, 데이터 손실 가능성, 보안 침해 의심

  • P2 중요: 핵심 워크플로우 실패, API 비용 급증, 서버 자원 임계치 초과

  • P3 주의: 일시적 지연, 비핵심 워크플로우 실패, 사용량 증가 추세

P1은 Slack, Telegram, 이메일을 동시에 보낸다. 휴대폰 푸시를 받을 수 있는 채널을 하나 이상 포함하는 것이 좋다. P2는 Slack과 이메일로 보낸다. P3는 즉시 깨우지 말고 일일 리포트에 포함한다.

이렇게 하면 모니터링은 소음이 아니라 신호가 된다.

워크플로우 실패는 '조용한 장애'다

서버가 완전히 죽으면 비교적 빨리 알아차린다. 사이트가 열리지 않고, 고객이 문의하고, 외부 모니터링도 잡아낸다. 하지만 n8n 워크플로우 실패는 훨씬 조용하다. RSS 요약이 하루 빠져도 당장 티가 나지 않는다. 신규 가입자 온보딩 메일이 멈춰도 처음에는 아무도 모른다. 결제 완료 후 내부 DB 기록이 누락되어도 며칠 뒤 매출 정산 때야 발견할 수 있다.

그래서 핵심 워크플로우에는 실행 상태 감시를 붙여야 한다. 방법은 두 가지다.

첫 번째는 n8n의 실행 기록을 정기적으로 확인하는 방식이다. n8n의 Executions 화면에서는 실패한 실행을 열어 어떤 노드에서 문제가 생겼는지 확인할 수 있다. 실패한 노드는 보통 빨간색으로 표시되며, 입력값, 출력값, 오류 메시지를 따라가면 원인을 좁힐 수 있다. 특히 오류가 난 노드만 보지 말고 바로 이전 노드의 출력부터 거슬러 올라가는 습관이 중요하다. 실패한 노드는 피해자이고, 실제 원인은 앞단에서 빈 데이터나 잘못된 형식을 넘긴 것일 때가 많다.2

두 번째는 실패를 감지하는 별도 워크플로우를 만드는 방식이다. 예를 들어 "최근 15분 안에 P1 워크플로우 실패가 1건 이상이면 즉시 알림", "1시간 안에 같은 워크플로우가 3번 이상 실패하면 장애 티켓 생성", "평균 실행 시간이 평소보다 2배 이상 길어지면 지연 경고" 같은 규칙을 둔다.

이때 모든 워크플로우를 같은 기준으로 감시할 필요는 없다. 콘텐츠 예약 발행이 한 번 실패한 것과 결제 이벤트 처리 실패는 무게가 다르다. 앞장에서 만든 사업 시스템 관점으로 워크플로우를 분류해보자.

Critical: 결제, 가입, 인증, 데이터 백업, 장애 알림
Important: 온보딩, CS 분류, 리텐션 캠페인, 리포트 생성
Normal: 콘텐츠 재가공, 아이디어 수집, 내부 정리 자동화

Critical 워크플로우는 실패 1회에도 즉시 알림을 보낸다. Important 워크플로우는 반복 실패나 일정 시간 이상 지연될 때 알린다. Normal 워크플로우는 일일 리포트에 묶어 확인한다. 이렇게 해야 혼자 운영해도 집중력을 아낄 수 있다.

셀프호스팅이라면 Prometheus와 Grafana로 눈을 달아라

n8n Cloud를 사용한다면 인프라 관리 부담이 줄어든다. 하지만 셀프호스팅 n8n을 운영한다면 이야기가 달라진다. n8n 자체뿐 아니라 서버, 컨테이너, 데이터베이스, 큐, 리버스 프록시까지 모두 운영자의 책임이 된다.

이때 가장 많이 쓰는 조합이 Prometheus와 Grafana다. Prometheus는 시간에 따라 변하는 숫자 데이터를 수집하고 저장하는 도구다. 예를 들어 "최근 5분간 실패한 실행 수", "현재 메모리 사용량", "큐에 대기 중인 작업 수" 같은 값을 일정 간격으로 긁어간다. Grafana는 이 데이터를 사람이 보기 쉬운 그래프와 대시보드로 보여준다.

n8n 셀프호스팅 환경에서는 로그, 실행 데이터, 워크플로우 인사이트, 메트릭 엔드포인트를 활용해 운영 상태를 관찰할 수 있다. Prometheus·Grafana 스택을 붙이면 성공률, 실패율, 평균 실행 시간, 큐 적체, 노드별 오류 같은 지표를 대시보드와 알림 규칙으로 관리할 수 있다.3

처음부터 화려한 대시보드를 만들 필요는 없다. 1인 운영자에게 필요한 첫 화면은 단순해야 한다. 아침에 커피를 마시며 30초 안에 판단할 수 있어야 한다.

첫 번째 줄에는 지금 살아 있는지를 둔다. n8n 인스턴스 상태, 데이터베이스 상태, 웹훅 응답 상태, 최근 5분 오류 수를 보여준다. 두 번째 줄에는 처리량을 둔다. 오늘 실행 수, 성공률, 실패율, 평균 실행 시간을 보여준다. 세 번째 줄에는 병목을 둔다. CPU, 메모리, 디스크, 큐 대기 수, 데이터베이스 연결 수를 보여준다. 네 번째 줄에는 비용과 보안 신호를 둔다. 오늘 API 비용, 월 예산 소진율, 로그인 실패 수, 비정상 웹훅 요청 수를 보여준다.

대시보드는 멋있어 보이기 위해 만드는 것이 아니다. "지금 내가 개입해야 하는가?"라는 질문에 빠르게 답하기 위해 만든다.

서버 리소스 감시: CPU보다 디스크가 먼저 회사를 멈춘다

서버 모니터링이라고 하면 많은 사람이 CPU 사용률을 먼저 떠올린다. 물론 CPU도 중요하다. 하지만 1인 운영자가 실제로 자주 당하는 장애는 디스크에서 시작하는 경우가 많다. 로그 파일이 쌓이고, 실행 데이터가 계속 저장되고, 백업 파일이 정리되지 않으면 어느 날 디스크가 꽉 찬다. 디스크가 가득 차면 데이터베이스가 쓰기를 멈추고, n8n 실행 기록이 저장되지 않고, 웹훅 처리가 실패할 수 있다.

n8n으로 서버 리소스를 감시하는 가장 쉬운 방법은 SSH 노드를 사용하는 것이다. SSH는 원격 서버에 명령을 보내는 통로다. n8n에서 일정 시간마다 서버에 접속해 CPU, 메모리, 디스크, 네트워크, 주요 프로세스 상태를 가져올 수 있다.

예를 들어 15분마다 다음 흐름을 실행한다.

Schedule Trigger
→ 서버 목록 불러오기
→ Loop Over Items
→ SSH: CPU/메모리/디스크/프로세스 상태 조회
→ Code: 결과 파싱
→ IF: 임계치 초과 여부 판단
→ 정상: DB 또는 시트에 기록
→ 경고: Slack 알림
→ 심각: 재시작 또는 운영자 호출

수집할 기본 지표는 다음 정도면 충분하다.

  • CPU 사용률: 지속적으로 80%를 넘는지 확인한다.

  • 메모리 사용률: 85% 이상이 반복되는지 확인한다.

  • 디스크 사용률: 80%는 주의, 90%는 경고, 95%는 긴급으로 본다.

  • 네트워크 트래픽: 평소보다 비정상적으로 증가했는지 확인한다.

  • 주요 프로세스: n8n, Postgres, Redis, 프록시가 살아 있는지 확인한다.

SSH 명령으로 /proc/stat, free, df, systemctl, docker ps 등을 조회할 수 있다. 여러 서버를 운영한다면 서버 목록을 Google Sheets, Airtable, Postgres 같은 곳에 저장해두고 반복 처리하면 된다. 서버가 하나일 때부터 이 구조로 만들어두면 나중에 서버가 두 개, 세 개로 늘어도 워크플로우를 크게 바꾸지 않아도 된다.

임계치를 넘었다고 무조건 자동 재시작을 걸면 위험하다. 자동 대응은 단계적으로 적용해야 한다. 처음에는 알림만 보낸다. 그다음 안전한 조치부터 자동화한다. 예를 들어 임시 파일 삭제, 오래된 로그 압축, 재시도 큐 확인 같은 작업은 비교적 안전하다. 반면 데이터베이스 재시작, 서버 리부팅, 스케일링 변경은 반드시 조건을 까다롭게 두거나 사람 승인 단계를 거치는 편이 낫다.

운영 자동화의 원칙은 "사람을 없애는 것"이 아니다. 위험한 순간에 사람이 더 좋은 결정을 내릴 수 있도록 맥락을 모아주는 것이다.

비용 모니터링: API 비용은 조용히 자란다

AI 자동화를 붙인 1인 회사에서 비용 폭주는 장애만큼 위험하다. 서버가 죽으면 바로 불편함이 보이지만, API 비용은 조용히 자란다. 매번 몇 원, 몇십 원처럼 보이는 호출이 반복되다가 월말에 카드 명세서로 나타난다.

특히 OpenAI, Claude, Gemini 같은 LLM API, Pinecone·Qdrant·Supabase 같은 벡터DB, AWS·GCP·Azure 같은 클라우드, 이미지 생성 API, 이메일 발송량 기반 과금 서비스는 반드시 감시해야 한다. n8n은 이런 서비스들의 API를 주기적으로 호출해 사용량과 비용을 기록하는 비용 감시 워크플로우를 만들 수 있다. 멀티 클라우드 비용을 시간 단위로 조회하고 예산 초과나 급증을 감지해 Slack, 이메일 등으로 알리는 n8n 워크플로우 패턴도 이미 실무에서 활용되고 있다.4

비용 감시의 핵심은 총액만 보는 것이 아니다. 속도를 봐야 한다. 오늘까지 10만 원을 썼다는 사실보다 더 중요한 것은 "어제는 3천 원이었는데 오늘 오전에만 2만 원을 썼다"는 변화다.

비용 모니터링 워크플로우는 이렇게 설계할 수 있다.

Schedule Trigger: 매일 오전 8시, 또는 매시간
→ HTTP Request: AWS Cost Explorer / OpenAI Usage / Vector DB Usage API 호출
→ Code: 서비스별 비용을 공통 형식으로 변환
→ DB 저장: 날짜, 서비스, 사용량, 예상 비용, 워크플로우 태그
→ IF: 예산 대비 소진율 계산
→ IF: 전일 대비 급증률 계산
→ 알림 또는 일일 리포트 반영

여기서 공통 형식이 중요하다. 서비스마다 비용 단위가 다르기 때문이다. 어떤 곳은 요청 수를 기준으로, 어떤 곳은 토큰 수를 기준으로, 어떤 곳은 저장 용량과 처리량을 함께 계산한다. 그래서 내부적으로는 다음과 같은 형태로 맞춰두면 좋다.

{
  "date": "2026-05-06",
  "service": "openai",
  "category": "llm",
  "usage_unit": "tokens",
  "usage_amount": 1250000,
  "estimated_cost_usd": 3.42,
  "workflow": "cs_auto_reply",
  "environment": "prod"
}

가능하다면 워크플로우별 비용 태그를 남겨야 한다. 예를 들어 고객지원 AI 답변에 들어간 비용과 콘텐츠 초안 생성에 들어간 비용은 성격이 다르다. 고객지원은 응답 속도와 고객 만족에 직접 연결되지만, 콘텐츠 초안은 더 저렴한 모델로 바꿔도 괜찮을 수 있다.

AI API 비용은 특히 주의해야 한다. n8n 자체가 각 워크플로우의 외부 API 비용을 자동으로 계산해주지는 않기 때문에, API 응답에 포함된 토큰 사용량을 파싱하거나 제공자의 사용량 API를 별도로 조회해 기록해야 한다. 일부 AI API는 응답에 total_tokens 같은 사용량 정보를 포함하므로, 이를 저장하고 모델별 단가를 곱하면 실행 단위 비용을 추정할 수 있다.5

비용 알림 규칙은 세 가지로 나누면 실용적이다.

첫째, 예산 소진율 알림이다. 월 예산의 50%, 80%, 100%에 도달하면 알린다. 둘째, 급증 알림이다. 최근 24시간 비용이 7일 평균의 2배를 넘으면 알린다. 셋째, 반복 호출 알림이다. 같은 워크플로우가 짧은 시간 안에 비정상적으로 많이 실행되면 무한 루프나 외부 공격 가능성을 의심한다.

1인 회사에서 비용 통제는 절약이 아니라 생존이다. 자동화가 돈을 벌어주기 전에 돈을 새어나가게 만들면 안 된다.

일일 운영 리포트: 매일 아침 회사를 한 장으로 본다

알림은 즉시 대응을 위한 것이고, 리포트는 판단을 위한 것이다. 알림만 받으면 하루가 사건 중심으로 흘러간다. 반대로 일일 리포트가 있으면 매일 같은 기준으로 회사를 볼 수 있다. 혼자 일하는 사람에게 이 루틴은 생각보다 강력하다.

일일 운영 리포트는 매일 아침 정해진 시간에 자동 생성되도록 만든다. 예를 들어 오전 8시 30분에 n8n이 전날 데이터를 모아 Slack, 이메일, Notion, Google Docs 중 원하는 곳으로 보내는 식이다.

리포트에는 너무 많은 내용을 넣지 않는다. 한 장으로 끝나야 한다. 1인 운영자가 보고 싶은 것은 "어제 회사가 건강했는가?"다.

일일 리포트에 넣을 핵심 항목은 다음과 같다.

  • 매출: 일일 매출, 결제 건수, 환불, 결제 실패 수

  • 성장: 신규 가입자, 활성 사용자, 주요 전환 이벤트

  • 운영: 장애 건수, 평균 복구 시간, 워크플로우 실패 수

  • 인프라: CPU, 메모리, 디스크 최고치, 서버 상태

  • 비용: API 비용, 클라우드 비용, 월 예산 소진율

  • 고객: 주요 CS 문의, 부정 피드백, 긴급 처리 필요 건

리포트 생성 워크플로우는 여러 데이터 소스를 모아 하나의 문장으로 요약하는 구조다.

Schedule Trigger: 매일 오전 8:30
→ 결제 데이터 조회
→ 사용자 데이터 조회
→ n8n 실행 실패 데이터 조회
→ 서버 리소스 로그 조회
→ API 비용 데이터 조회
→ CS 문의 데이터 조회
→ Code: 요약 지표 계산
→ AI: 운영 요약 문장 생성
→ Slack/Email/Notion 발송

AI를 활용하면 숫자 나열을 넘어 운영자에게 필요한 해석을 붙일 수 있다. 예를 들어 이런 식이다.

어제 매출은 42만 원으로 7일 평균보다 18% 높았습니다.
신규 가입자는 31명이며, 결제 실패가 4건 발생했습니다.
cs_auto_reply 워크플로우가 3회 실패했으나 재시도 후 모두 성공했습니다.
OpenAI 비용은 7일 평균 대비 2.4배 증가했습니다. 원인은 review_classifier 워크플로우의 반복 실행으로 보입니다.
디스크 사용률이 87%까지 상승했습니다. 3일 내 로그 정리가 필요합니다.

이 리포트는 작은 CEO 회의다. 참석자는 나 한 명뿐이지만, 데이터는 여러 직원처럼 각자 보고서를 들고 온다. 결제 담당, 인프라 담당, CS 담당, 마케팅 담당, 재무 담당이 매일 아침 한 장의 문서로 말을 거는 구조다.

보안 이벤트 감시: 공격은 대개 반복 신호로 먼저 나타난다

보안은 대기업만의 문제가 아니다. 오히려 1인 회사는 보안 이벤트를 놓치기 쉽다. 로그인 실패가 반복되어도 볼 사람이 없고, 웹훅 URL이 외부에 노출되어도 한동안 모를 수 있다. API 키 권한이 과도하게 넓어도 당장 문제를 일으키지 않으면 방치된다.

n8n은 많은 시스템의 권한을 연결하는 중심 허브다. Gmail, Slack, 결제 시스템, CRM, 데이터베이스, AI API, 서버까지 이어진다. 이 말은 n8n이 편리한 만큼 권한의 폭발 반경도 커질 수 있다는 뜻이다. 특히 AI Agent가 외부 입력을 읽고 도구를 호출하는 구조에서는 입력 조작, 과도한 권한, 민감 데이터 로그 저장 같은 위험을 함께 관리해야 한다.6

보안 이벤트 감시는 다음 신호부터 시작하면 된다.

  • 로그인 실패 반복

  • 낯선 IP에서의 관리자 접근

  • 웹훅 반복 요청 또는 비정상적으로 큰 요청

  • API 인증 실패 증가

  • 권한 오류 반복

  • 사용하지 않는 credential 또는 오래된 credential

  • 위험한 노드 사용, 파일 시스템 접근, SQL 실행 노드 사용

n8n에는 보안 감사를 실행하는 기능도 있다. CLI, API, 또는 n8n 노드를 통해 감사 리포트를 생성할 수 있으며, credential, 데이터베이스, 파일 시스템, 노드, 인스턴스 설정과 관련된 위험 요소를 확인할 수 있다. 예를 들어 사용되지 않는 credential, SQL 노드의 위험한 표현식, 파일 시스템에 접근하는 노드, 커뮤니티 노드, 보호되지 않은 웹훅, 누락된 보안 설정 등을 점검할 수 있다.7

이 보안 감사도 n8n 워크플로우로 정기 실행할 수 있다. 매주 월요일 오전에 감사 리포트를 생성하고, 위험 항목이 있으면 운영 리포트에 넣는다. 긴급도가 높은 항목, 예를 들어 보호되지 않은 웹훅이나 오래된 인스턴스는 즉시 알림으로 보낸다.

하지만 보안 알림도 너무 많으면 무시된다. 그래서 보안 이벤트에는 중복 제거와 빈도 제한이 필수다. 같은 IP에서 1분 동안 로그인 실패가 20번 발생했다면 알림 20개를 보내는 대신 하나의 집계 알림을 보내야 한다.

보안 경고: 로그인 실패 급증
기간: 최근 10분
IP: 203.0.113.10
실패 횟수: 37회
대상 계정: [email protected]
권장 조치: IP 차단, 비밀번호 변경 여부 확인, 최근 성공 로그인 점검

이런 알림은 운영자가 바로 판단할 수 있게 만든다. 단순히 "오류가 발생했습니다"가 아니라 "무엇이, 얼마나, 왜 위험하며, 다음에 무엇을 해야 하는지"를 알려줘야 한다.

다중 채널 알림은 보험이다

장애 알림을 Slack 하나에만 의존하면 Slack 장애나 휴대폰 알림 설정 문제로 놓칠 수 있다. 이메일 하나에만 의존하면 메일함에 묻힐 수 있다. Telegram이나 문자만 쓰면 맥락을 충분히 전달하기 어렵다.

그래서 장애 등급별로 채널을 나눠야 한다. P1은 반드시 두 개 이상의 채널을 사용한다. 예를 들어 Slack DM, Telegram, 이메일을 동시에 보낸다. P2는 Slack 채널과 이메일이면 충분하다. P3는 즉시 보내지 않고 일일 리포트나 주간 리포트에 묶는다.

알림 메시지에는 반드시 다섯 가지가 들어가야 한다.

  • 무슨 일이 일어났는가

  • 어느 서비스 또는 워크플로우에서 일어났는가

  • 언제부터 발생했는가

  • 사용자나 매출에 어떤 영향을 줄 수 있는가

  • 지금 무엇을 확인해야 하는가

나쁜 알림은 이렇다.

Workflow failed.

좋은 알림은 이렇다.

🚨 P1 결제 이벤트 처리 실패
워크플로우: stripe_payment_to_db
발생 시각: 2026-05-06 03:12 KST
실패 횟수: 최근 10분간 5회
오류: 401 Unauthorized - Stripe API key rejected
영향: 결제 완료 고객의 내부 DB 반영 지연 가능
우선 확인: Stripe credential 만료 여부, 최근 키 교체 기록
실행 링크: https://n8n.example.com/execution/12345

혼자 운영할수록 알림 문장이 좋아야 한다. 잠에서 막 깬 상태에서도 무엇을 봐야 할지 알 수 있어야 하기 때문이다.

자동 대응은 '작은 것'부터 시작한다

모니터링을 만들다 보면 자연스럽게 자동 복구까지 하고 싶어진다. 디스크가 차면 로그를 지우고, 프로세스가 죽으면 재시작하고, 비용이 폭주하면 워크플로우를 비활성화하고 싶다. 방향은 맞다. 다만 처음부터 강한 자동 대응을 넣으면 오히려 사고를 키울 수 있다.

자동 대응은 세 단계로 나눠 설계하자.

첫 번째 단계는 관찰이다. 상태를 수집하고 기록하고 알린다. 이 단계에서는 시스템을 바꾸지 않는다. 최소 1~2주 동안 정상 범위와 이상 범위를 파악한다.

두 번째 단계는 안전한 조치다. 오래된 임시 파일 삭제, 로그 압축, 실패한 알림 재전송, 외부 API 재시도, 비핵심 워크플로우 일시 중단처럼 되돌리기 쉬운 작업만 자동화한다.

세 번째 단계는 승인 기반 조치다. 서버 재시작, 데이터베이스 복구, 결제 워크플로우 비활성화, 방화벽 규칙 변경처럼 영향이 큰 작업은 Slack 버튼이나 Telegram 승인 메시지를 통해 사람이 확인한 뒤 실행한다.

n8n에서는 이 승인 단계를 만들기 쉽다. 장애 감지 후 Slack에 "재시작 실행" 버튼을 보내고, 버튼 클릭 웹훅이 들어오면 재시작 워크플로우를 실행하는 구조를 만들 수 있다. 이것이 1인 회사에 맞는 휴먼 인 더 루프 운영이다. 사람은 계속 감시하지 않는다. 다만 위험한 결정의 마지막 문턱에만 서 있으면 된다.

1인 회사 운영 감시 청사진

이제 전체 구조를 하나로 묶어보자. 운영 감시 시스템은 여러 개의 작은 워크플로우가 서로 연결된 형태가 좋다. 모든 것을 하나의 거대한 워크플로우로 만들면 수정하기 어렵고, 하나가 실패할 때 전체가 흔들린다.

추천하는 구성은 다음과 같다.

[서비스 생존 감시]
- n8n /healthz
- 웹사이트 / API 상태
- DB 연결 상태

[워크플로우 실행 감시]
- Critical workflow 실패 즉시 알림
- 반복 실패 집계
- 평균 실행 시간 지연 감지

[서버 리소스 감시]
- CPU / 메모리 / 디스크
- Docker 컨테이너 상태
- Postgres / Redis 상태

[비용 감시]
- AWS / 호스팅 비용
- OpenAI / LLM API 비용
- Vector DB / 이메일 발송 비용

[보안 감시]
- 로그인 실패
- 웹훅 반복 요청
- 권한 오류
- n8n 보안 감사 리포트

[일일 운영 리포트]
- 매출 / 가입 / 결제 실패
- 장애 / 워크플로우 실패
- 서버 / 비용 / CS 요약

각 워크플로우는 결과를 공통 로그 저장소에 남긴다. 처음에는 Google Sheets나 Airtable도 괜찮다. 조금 더 안정적으로 운영하려면 Postgres나 Supabase 같은 데이터베이스를 쓰는 편이 좋다. 중요한 것은 모든 신호가 흩어지지 않고 한곳에 쌓이는 것이다.

공통 로그에는 최소한 다음 필드를 넣는다.

{
  "timestamp": "2026-05-06T09:00:00+09:00",
  "source": "n8n_workflow_monitor",
  "severity": "P2",
  "service": "stripe_payment_to_db",
  "status": "failed",
  "message": "Stripe API authentication failed",
  "details_url": "https://n8n.example.com/execution/12345",
  "resolved": false
}

이 구조가 있으면 나중에 Grafana 대시보드, Notion 리포트, Slack 알림, AI 요약, 월간 회고까지 모두 같은 데이터를 기반으로 만들 수 있다.

운영자는 모든 것을 볼 필요가 없다. 중요한 것만 놓치지 않으면 된다

1인 운영자는 모든 로그를 읽을 수 없다. 모든 그래프를 볼 수도 없다. 모든 실패를 직접 고칠 수도 없다. 그러므로 좋은 모니터링은 더 많은 정보를 보여주는 시스템이 아니라, 지금 봐야 할 것만 남기는 시스템이다.

n8n으로 운영 감시를 구축한다는 것은 회사를 향해 센서를 붙이는 일이다. 서비스가 숨을 쉬는지, 자동화가 일하는지, 비용이 새고 있는지, 누군가 문고리를 흔들고 있는지 감지하는 것이다. 이 센서들이 생기면 혼자 일하는 사람의 밤이 달라진다. 불안해서 새벽에 관리자 페이지를 열어보는 대신, 문제가 생기면 시스템이 깨워줄 것이라는 믿음을 가질 수 있다.

물론 처음부터 완벽한 관제 시스템을 만들 필요는 없다. 오늘 당장 시작해야 할 것은 세 가지면 충분하다. n8n 헬스체크를 5분마다 확인한다. Critical 워크플로우 실패를 즉시 알린다. 매일 아침 운영 리포트를 한 장 받는다.

이 세 가지만 있어도 회사는 이전보다 훨씬 덜 취약해진다. 그리고 여기에 서버 리소스, 비용, 보안 이벤트 감시를 하나씩 붙이면 1인 회사는 점점 더 단단해진다.

자동화의 진짜 가치는 내가 일하지 않는 시간에 드러난다. 내가 자는 동안에도 가입자가 들어오고, 결제가 처리되고, 문의가 분류되고, 서버가 감시된다. 그리고 이상 신호가 생기면 n8n이 먼저 말한다.

"지금 봐야 합니다."

그 한마디를 제때 듣는 것이, 혼자 일하는 사람이 회사를 오래 운영하는 가장 현실적인 안전망이다.

참고

1n8n Monitoring with Prometheus and Grafana on Docker 2026

2Part 3 — Advanced n8n: Error Handling, Scaling, Monitoring, and Workflow Optimization

3Monitoring and Observability | n8n-io/n8n-docs | DeepWiki

4AWS Azure GCP multi-cloud cost monitoring & alerts for budget control

5How to Track AI API Costs in n8n Workflows: A Comprehensive Guide

6n8n Security in 2026: How to Secure AI Agent Workflows and SaaS Integrations

7Security audit | n8n Docs

책 목록

혼자 일하는 사람의 n8n: AI 에이전트로 1인 회사를 시스템화하는 법

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기