Meraki 네트워크 성능 모니터링 및 경고

Meraki Network Monitor

Cisco Meraki 네트워크의 지연 시간과 패킷 손실률을 자동으로 모니터링하며, 성능이 설정된 임계값을 초과할 경우 Teams를 통해 경고를 전송하고 Redis를 사용해 중복 알림을 방지합니다.

23 NodesIndustry Vertical네트워크 모니터링성능 경고Meraki

워크플로우 개요

이 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 노드를 사용하여 네트워크 정보와 성능 통계 데이터를 병합
  • 매칭 필드: NetworkIDnetworkId
  • 병합 모드: 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 인증

2. 성능 임계값

  • 지연 시간 임계값: 300 밀리초
  • 패킷 손실 임계값: 2%
  • 실제 요구사항에 따라 조정 가능

3. 경고 중복 방지 메커니즘

  • 이미 전송된 경고를 Redis에 저장
  • TTL을 3시간으로 설정
  • TTL 기간 내 동일 사이트에 대한 경고는 중복 전송되지 않음

4. 데이터 처리 방식

  • 최근 5개 시간 포인트의 데이터 수집
  • 순간적인 변동 영향을 줄이기 위해 평균값 계산
  • 복잡한 데이터 처리 및 필터링을 위해 JavaScript 코드 노드 사용

활용 시나리오

  1. 네트워크 성능 모니터링: Meraki 네트워크의 지연 시간 및 패킷 손실 상황을 지속적으로 모니터링
  2. 사전 경고: 성능 저하 시 자동으로 기술 팀에 알림
  3. 장애 해결: 문제 사이트로 직접 이동 가능한 네트워크 URL 제공, 빠른 문제 위치 파악
  4. 경고 관리: 경고 폭주 방지, 3시간 내 동일 사이트에 대해 한 번만 경고 전송

확장 제안

Sticky Note6의 설명에 따라 다음과 같이 확장 가능:

  1. PSA 시스템 통합: Teams 메시지 노드를 PSA 도구 노드(예: ConnectWise Manage)로 교체하여 메시지 전송 대신 자동으로 작업 티켓 생성
  2. 다중 채널 알림: Teams 외에도 이메일, Slack 등 다양한 알림 채널 추가
  3. 맞춤형 임계값: 서로 다른 네트워크에 대해 각기 다른 성능 임계값 설정
  4. 히스토리 데이터 저장: 모니터링 데이터를 데이터베이스에 저장하여 장기 분석 및 트렌드 예측 수행

요약

이 워크플로우는 n8n의 다음 기능을 최대한 활용한 완전한 네트워크 모니터링 자동화 솔루션입니다:

  • 외부 API와의 HTTP 요청 통합
  • 데이터 변환 및 처리(Set, Code 노드)
  • 데이터 병합(Merge 노드)
  • 조건 필터링 및 논리 판단
  • 외부 알림(Teams Webhook)
  • 데이터 지속성(Redis)

자동화된 모니터링과 스마트한 경고 기능을 통해 네트워크 운영 효율성을 크게 향상시키고, 수동 점검 작업량을 줄였습니다.