Meraki 네트워크 성능 모니터링 및 경고
Meraki Network Monitor
Cisco Meraki 네트워크의 지연 시간과 패킷 손실률을 자동으로 모니터링하며, 성능이 설정된 임계값을 초과할 경우 Teams를 통해 경고를 전송하고 Redis를 사용해 중복 알림을 방지합니다.
워크플로우 개요
이 n8n 워크플로우는 Cisco Meraki 네트워크 모니터링 및 경고 시스템으로, 네트워크 성능 지표(지연 시간 및 패킷 손실률)를 자동으로 모니터링하고 문제가 감지되면 경고 알림을 전송합니다. 이 워크플로우는 Meraki API를 통해 조직, 네트워크 및 업링크 통계 데이터를 가져와 평균 성능 지표를 계산한 후 문제 있는 사이트를 필터링하여 Microsoft Teams로 경고 메시지를 전송하며, 동시에 Redis 데이터베이스를 사용해 중복 경고를 방지합니다.
워크플로우 구조
1. 트리거 노드
노드 이름:
When clicking "Execute Workflow"(수동 트리거)Schedule Trigger(스케줄 트리거)
기능 설명: 이 워크플로우는 두 가지 방식으로 실행됩니다:
- 수동 실행: "워크플로우 실행" 버튼을 클릭하여 수동으로 트리거
- 정기 실행: 사전 설정된 시간에 따라 자동 실행(지속적인 모니터링용)
2. 데이터 수집 단계
2.1 Meraki 조직 정보 가져오기
노드 이름: Get Meraki Organizations
기능 설명:
- HTTP 요청을 통해 Meraki API(
https://api.meraki.com/api/v1/organizations) 호출 - 헤더 인증 방식 사용(Meraki API 키 필요)
- 계정이 접근 권한을 가진 모든 조직 목록을 가져옴
기술 세부사항:
- 요청 유형: GET
- 인증 방식: HTTP Header Auth
- 필수 헤더:
Authorization: 인증용Accept: application/json: JSON 형식의 응답 지정
2.2 조직 데이터 정리
노드 이름: Get Org Name & ID
기능 설명:
- Set 노드를 사용하여 핵심 필드를 추출 및 이름 변경
- 원본 데이터에서 다음 항목 추출:
CompanyName: 조직 이름OrgID: 조직 ID
2.3 네트워크 ID 가져오기
노드 이름: Get Network IDs
기능 설명:
- 각 조직 ID에 대해 API를 호출하여 해당 조직 아래의 모든 네트워크를 가져옴
- 동적 URL 사용:
https://api.meraki.com/api/v1/organizations/{{ $json.OrgID }}/networks - 이후 네트워크 모니터링을 위한 네트워크 목록 제공
2.4 네트워크 변수 정리
노드 이름: Sets Network Variables
기능 설명:
- 네트워크 정보를 추출 및 포맷팅
- 네트워크 이름, 네트워크 ID, 네트워크 URL 등 핵심 필드 포함
2.5 업링크 통계 데이터 가져오기
노드 이름: Get Uplink Loss and Latency
기능 설명:
- 네트워크 장치의 업링크 성능 통계를 가져옴
- 포함 항목:
- 패킷 손실률 백분율(Loss Percent)
- 지연 시간 밀리초(Latency Ms)
- 시계열 데이터(최근 5개 시간 포인트의 데이터)
3. 데이터 처리 및 분석 단계
3.1 데이터 병합
노드 이름: Combine latency to its respective Network
기능 설명:
- Merge 노드를 사용하여 네트워크 정보와 성능 통계 데이터를 병합
- 매칭 필드:
NetworkID와networkId - 병합 모드: enrichInput1(입력1의 데이터를 풍부하게 확장)
3.2 데이터 재구성
노드 이름: Makes Latency and Loss Filterable
기능 설명:
- 데이터 구조를 재조직하여 지연 시간과 패킷 손실 데이터를 더 쉽게 필터링 및 분석 가능하도록 함
- 5개의 시계열 데이터 포인트 추출:
TS0-Loss~TS4-Loss: 5개 시간 포인트의 패킷 손실률TS0-Latency~TS4-Latency: 5개 시간 포인트의 지연 시간
- 네트워크 이름, 시리얼 번호, URL 등의 메타데이터 유지
3.3 평균값 계산
노드 이름: Average Latency & Loss over 5m
기능 설명:
- JavaScript 코드를 사용하여 최근 5개 시간 포인트의 평균값 계산
- 계산 대상 주요 지표:
AverageLoss: 평균 패킷 손실률AverageLatency: 평균 지연 시간(밀리초)
- 이러한 평균값은 성능 문제를 보다 정확하게 식별하는 데 사용됨
코드 로직:
// 5개 시간 포인트의 총 패킷 손실률과 총 지연 시간 계산
// 5로 나누어 평균값 도출
// 결과를 데이터 항목에 추가
3.4 문제 있는 사이트 필터링
노드 이름: Filters Problematic sites
기능 설명:
- JavaScript 코드를 사용하여 임계값을 초과하는 사이트를 필터링
- 임계값 기준:
- 평균 지연 시간 > 300ms
- 또는 평균 패킷 손실률 > 2%
- 위 조건 중 하나라도 만족하는 사이트만 다음 단계로 전달됨
필터링 로직:
// AverageLatency > 300 또는 AverageLoss > 2일 경우
// 해당 사이트는 문제 있음으로 표시됨
4. 경고 중복 방지 및 알림 단계
4.1 경고 존재 여부 확인
노드 이름: Check if Alert Exists
기능 설명:
- Redis 데이터베이스를 조회하여 해당 네트워크에 이미 경고가 전송되었는지 확인
- 네트워크 이름을 키로 사용
- 키가 존재하면 TTL 시간 내에 이미 경고가 전송된 상태임을 의미
4.2 응답 데이터 생성
노드 이름: Create Response
기능 설명:
- JavaScript를 사용하여 Redis 조회 결과를 처리
- 결과를 사용 가능한 불리언 값 또는 식별자로 변환
- 새로운 경고를 전송할지 여부 판단
4.3 중복 제거 병합
노드 이름: Merge
기능 설명:
- 문제 있는 사이트 데이터와 기존 경고 데이터를 병합
- 매칭 필드:
NetworkName - 병합 모드: 일치하지 않는 항목 모두 유지
- 핵심 로직: 네트워크 이름이 일치하면 이미 경고가 전송된 것이므로 더 이상 전송하지 않음; 일치하지 않는(즉, 새로 발생한 문제) 경우에만 계속 진행
4.4 Teams 메시지 전송
노드 이름: Message Techs
기능 설명:
- Microsoft Teams Webhook을 통해 경고 메시지 전송
- 메시지 내용:
- 네트워크 이름
- 평균 지연 시간 및 패킷 손실률 데이터
- 네트워크 URL(하이퍼링크 형태로 문제 사이트로 직접 이동 가능)
- 기술 팀에게 성능 임계값을 초과한 사이트가 있음을 알림
4.5 경고 로그 기록
노드 이름: Log the Alert
기능 설명:
- 경고를 Redis 데이터베이스에 기록
- TTL(Time-To-Live, 생존 시간)을 3시간으로 설정
- 중복 방지 로직: 동일한 사이트의 문제가 3시간 내 해결되지 않으면, 3시간 후 다시 경고를 전송함
5. 보조 설명 노드
워크플로우에는 여러 Sticky Note(스티커 메모) 노드가 포함되어 있으며, 상세한 사용 설명을 제공합니다:
- Sticky Note3: Meraki API 인증 설정 방법 설명
- Sticky Note4: 데이터 병합 및 통계 계산 로직 설명
- Sticky Note5: 경고 중복 방지 메커니즘 및 알림 프로세스 상세 설명
- Sticky Note6: 기타 활용 시나리오 제안(예: PSA 도구와 통합하여 작업 티켓 생성)
워크플로우 다이어그램
[트리거] → [조직 가져오기] → [조직 데이터 정리] → [네트워크 ID 가져오기] → [네트워크 데이터 정리]
↓ ↓
[업링크 데이터 가져오기] ----------------------------------------→ [데이터 병합]
↓
[지연 및 패킷 손실 데이터 재구성]
↓
[5분 평균값 계산]
↓
[문제 있는 사이트 필터링]
↓
[경고 존재 여부 확인] ← → [중복 제거 병합]
↓ ↓
[응답 생성] ----------------→ [Teams 메시지 전송]
↓
[경고 로그 기록]
핵심 기술 요점
1. API 인증
- Meraki Dashboard에서 API 키 생성 필요
- 참고 문서: https://documentation.meraki.com/General_Administration/Other_Topics/Cisco_Meraki_Dashboard_API
- HTTP Header Authentication 사용
2. 성능 임계값
- 지연 시간 임계값: 300 밀리초
- 패킷 손실 임계값: 2%
- 실제 요구사항에 따라 조정 가능
3. 경고 중복 방지 메커니즘
- 이미 전송된 경고를 Redis에 저장
- TTL을 3시간으로 설정
- TTL 기간 내 동일 사이트에 대한 경고는 중복 전송되지 않음
4. 데이터 처리 방식
- 최근 5개 시간 포인트의 데이터 수집
- 순간적인 변동 영향을 줄이기 위해 평균값 계산
- 복잡한 데이터 처리 및 필터링을 위해 JavaScript 코드 노드 사용
활용 시나리오
- 네트워크 성능 모니터링: Meraki 네트워크의 지연 시간 및 패킷 손실 상황을 지속적으로 모니터링
- 사전 경고: 성능 저하 시 자동으로 기술 팀에 알림
- 장애 해결: 문제 사이트로 직접 이동 가능한 네트워크 URL 제공, 빠른 문제 위치 파악
- 경고 관리: 경고 폭주 방지, 3시간 내 동일 사이트에 대해 한 번만 경고 전송
확장 제안
Sticky Note6의 설명에 따라 다음과 같이 확장 가능:
- PSA 시스템 통합: Teams 메시지 노드를 PSA 도구 노드(예: ConnectWise Manage)로 교체하여 메시지 전송 대신 자동으로 작업 티켓 생성
- 다중 채널 알림: Teams 외에도 이메일, Slack 등 다양한 알림 채널 추가
- 맞춤형 임계값: 서로 다른 네트워크에 대해 각기 다른 성능 임계값 설정
- 히스토리 데이터 저장: 모니터링 데이터를 데이터베이스에 저장하여 장기 분석 및 트렌드 예측 수행
요약
이 워크플로우는 n8n의 다음 기능을 최대한 활용한 완전한 네트워크 모니터링 자동화 솔루션입니다:
- 외부 API와의 HTTP 요청 통합
- 데이터 변환 및 처리(Set, Code 노드)
- 데이터 병합(Merge 노드)
- 조건 필터링 및 논리 판단
- 외부 알림(Teams Webhook)
- 데이터 지속성(Redis)
자동화된 모니터링과 스마트한 경고 기능을 통해 네트워크 운영 효율성을 크게 향상시키고, 수동 점검 작업량을 줄였습니다.