네트워크 라우터, 케이블, 게이지, 스위치가 평면으로 배치된 모니터링 시각 자료
글 요약
FortiGate SNMP 모니터링을 Prometheus와 Grafana로 통합 구축하는 전 과정을 정리했습니다. SNMP Exporter 설정, 대시보드 커스터마이징, 알람 �까지 실무에서 바로 쓸 수 있는 노하우를 담았습니다.
“FortiGate 로그만 보면서 문제 파악하는 데 매번 30분씩 잡혀요.”
SNMP Exporter 기반 통합 모니터링을 구축하면 CPU, 세션, 인터페이스 트래픽, VPN 상태까지 한 화면에서 실시간으로 파악할 수 있습니다. 이 글에서는 실제 운영 환경에서 검증한 설정값과 흔히 빠지는 함정까지 모두 공개합니다.
보통 FortiGate를 모니터링할 때 CLI나 GUI 로그를 직접 확인하곤 하더라고요. 트래픽이 폭주하는 순간에 SSH 접속해서 get system performance status를 입력하고, 다시 세션 정보를 확인하는 과정이 매번 반복되면 장애 대응 시간이 길어질 수밖에 없습니다. SNMP Exporter와 Prometheus를 조합하면 이런 수동 작업을 자동화할 수 있고, Grafana 대시보드에서 과거 데이터까지 함께 분석할 수 있습니다.
📑 목차
모니터링 도구를 처음 도입할 때 가장 큰 고민은 “기존 솔루션과 비교했을 때 진짜 가치가 있는가”입니다. FortiGate 기본 제공 로그 뷰어나 FortiAnalyzer 같은 유료 도구도 있지만, 클라우드 네이티브 환경이나 멀티 벤더 장비 통합 모니터링에는 Prometheus 기반 스택이 훨씬 유연하게 작동하더라고요. 아래 핵심 정리를 읽고 본문으로 들어가시면 전체 그림이 빠르게 그려질 겁니다.
📌 이 글의 핵심 정리
- FortiGate에서 SNMP v2c 또는 v3을 활성화할 때는 인터페이스 ACL과 호스트 제한을 반드시 같이 설정해야 데이터가 정상 수집됩니다.
- SNMP Exporter는 generator.yml에서 FortiGate 전용 모듈을 정의해야 Fortinet MIB를 정확히 파싱할 수 있습니다.
- Prometheus 스크레이프 주기는 30초~1분이 적당하며, retention은 디스크 용량에 따라 15일~30일로 조정합니다.
- Grafana 대시보드는 세션 수, CPU, 인터페이스 트래픽, VPN 터널 상태 4개 패널을 기본으로 구성하면 운영에 충분합니다.
- Alertmanager 연동 시 Severity 등급을 나눠서 Slack, 이메일, PagerDuty로 분기 전송하면 야간 알람 피로를 줄일 수 있습니다.
- Zabbix, PRTG 대비 오픈소스 + Grafana 시각화 조합은 비용 면에서 압도적이며, 멀티 벤더 확장이 자유롭습니다.
FortiGate SNMP 기본 설정
SNMP v2c 활성화 절차
FortiGate GUI에서 System → SNMP 메뉴로 이동해 SNMP을 활성화합니다. 여기서 Community Name, 호스트 IP 대역, 쿼리 포트를 지정해야 하는데, 단순히 Community Name만 입력하는 분이 많더라고요. 그렇게 하면 방화벽 정책에서 SNMP 트래픽이 막혀 데이터가 한 줄도 들어오지 않습니다.
필수 설정 항목
- SNMP Status: Enable
- Community Name: 모니터링 서버에서 사용할 임의 문자열 (예: netmon2024!@#)
- Hosts: Prometheus 서버가 있는 IP/32 또는 서브넷
- Port: 기본 161 유지
- SNMP v3 Security Level: 인증·암호화 필요 시 privacy + auth 활성화
CLI로 빠르게 설정하는 방법
GUI보다 CLI가 더 빠르고 재현성이 좋더라고요. 아래 명령을 그대로 붙여 넣으면 SNMP v2c가 즉시 활성화됩니다.
⚠️ SNMP 설정 주의
- Community Name을 public이나 private처럼 추측 가능한 값으로 두면 외부 노출 시 심각한 정보 유출이 발생합니다. 랜덤 12자 이상 권장.
- Hosts 필드를 0.0.0.0/0으로 두면 어디서든 쿼리가 가능합니다. 반드시 모니터링 서버 IP로 제한하세요.
SNMP Exporter 설치 및 구성
측면에서 바라본 방화벽 장비의 모니터링 대시보드 그래프가 표시된 화면 모습
컨테이너 기반 배포
SNMP Exporter는 Prometheus 공식 Exporter 중 하나로, Docker 이미지를 받아서 바로 실행할 수 있습니다. 포트 9116을 기본으로 사용하고, generator.yml 파일을 마운트해서 FortiGate용 MIB 모듈을 활성화합니다.
실행 명령 예시
docker run -d –name snmp-exporter -p 9116:9116 –restart=always -v $(pwd)/generator.yml:/etc/snmp_exporter/generator.yml prom/snmp-exporter:v0.25.0 –config.file=/etc/snmp_exporter/generator.yml
generator.yml 커스터마이징 포인트
기본 generator.yml에는 if_mib, system_mib 정도만 들어 있는데, FortiGate 전용 메트릭(fgSysSesCount, fgVpnTunnelUpCount 등)을 수집하려면 fortigate 모듈을 추가해야 합니다. 보통 modules 섹션에 walk OID를 직접 정의하는 방식을 많이 씁니다.
- fgSysSesCount: 현재 활성 세션 수
- fgSysMemCapacity: 메모리 사용률
- fgVpnTunnelUpCount: 활성 VPN 터널 개수
- fgProcessorUsage: CPU 사용률
💡 SNMP Exporter 꿀팁
- retries 값을 3으로 설정하면 일시적인 네트워크 단선에도 안정적으로 데이터를 받습니다. 기본 0이면 손실이 잦습니다.
- timeout은 10초 이상 주는 게 안전합니다. FortiGate 부하가 높을 때 응답이 지연될 수 있거든요.
Prometheus 연동과 메트릭 수집
scrape_configs 작성
prometheus.yml 파일에 FortiGate 스크레이프 잡을 추가합니다. SNMP Exporter는 metrics_path가 /snmp이고, module 파라미터로 generator.yml에 정의한 모듈 이름을 넘겨야 하더라고요.
기본 scrape 설정 예시
- job_name: fortigate_snmp
- metrics_path: /snmp
- static_configs.targets: [‘fortigate.example.com’]
- params.module: [fortigate]
retention과 storage 설정
장기간 데이터를 보관하고 싶으면 –storage.tsdb.retention.time 옵션을 늘리면 되지만, 디스크 사용량이 비례해서 증가합니다. FortiGate 1대 기준으로 30일 보관 시 약 5~8GB 정도 잡으면 충분합니다.
Grafana 대시보드 구축
추천 패널 구성
처음부터 모든 패널을 만들기보다, 핵심 지표 4개만 먼저 배치하는 게 효율적입니다. CPU와 메모리, 세션 수, 인터페이스 트래픽, VPN 상태가 1번 화면에 모두 보이면 장애 대응 속도가 비약적으로 올라갑니다.
- CPU 사용률: rate(fortigate_processor_usage[5m])
- 활성 세션 수: fortigate_active_sessions
- WAN 대역폭: rate(ifHCInOctets[1m]) 8
- VPN 터널 상태: fortigate_vpn_tunnel_up
커뮤니티 대시보드 활용
Grafana Labs 공식 사이트에 FortiGate용 대시보드가 여러 개 등록되어 있습니다. ID 12247번이 Fortinet SNMP 전용으로 잘 알려져 있고, 그대로 Import → 변수만 본인 환경에 맞게 바꾸면 5분 안에 사용 가능합니다.
알림 규칙과 임계값 설정
Alertmanager 룰 예시
CPU 80% 초과, 세션 수 임계치 초과, VPN 터널 Down 같은 케이스를 severity 별로 나�야 야간 알람 피로를 줄일 수 있습니다. 보통 critical은 PagerDuty, warning은 Slack, info는 이메일로 분기하는 패턴이 가장 잘 작동하더라고요.
주요 알람 임계값 가이드
- CPU: 70% 이상 5분 지속 → warning, 90% 이상 → critical
- 메모리: 80% 이상 → warning, 95% 이상 → critical
- 세션 수: 라이선스 한도의 80% 도달 시 warning
- VPN 터널: 단일 터널 Down 1분 지속 → critical
알람 노이즈 줄이는 운영 노하우
초기에 너무 민감하게 잡으면 알람이 폭주해서 결국 무시하게 됩니다. for: 5m 옵션을 거의 모든 룰에 넣어서 5분 이상 지속될 때만 발송하도록 조정하는 게 핵심입니다.
트러블슈팅과 운영 노하우
실패 사례: SNMP 데이터가 아예 안 들어오는 경우
실제 컨설팅 현장에서 본 사례로, SNMP Community Name과 호스트 설정을 모두 했는데도 Prometheus에서 up{job=”fortigate_snmp”} 값이 0으로만 나오는 경우가 있었습니다. 원인은 FortiGate 방화벽 정책에서 UDP 161 차단이었습니다.
해결 절차
- FortiGate에서 Policy & Objects → Firewall Policy 진입
- 모니터링 서버가 위치한 인터페이스 → FortiGate self로 들어오는 정책에 UDP/161 허용 추가
- diagnose snmp packet-trap enable 후 diagnose debug application snmpd -1로 실시간 로그 확인
- Prometheus 재기동 후 up{} 메트릭이 1로 바뀌면 정상
이런 함정에 빠지지 않으려면
SNMP 설정 직후 반드시 snmpwalk -v2c -c community명 FortiGate_IP 1.3.6.1.2.1.1.1.0 명령으로 응답을 확인하고, 그 다음에 Prometheus 스크레이프를 테스트하세요. 한 단계씩 검증하면 이런 함정을 10분 안에 뚫고 지나갈 수 있습니다.
다른 모니터링 솔루션과의 비교
FortiGate 모니터링 도구를 선택할 때 많이 비교하는 솔루션이 Zabbix, PRTG, LibreNMS입니다. 각각의 특징이 명확하므로 환경에 따라取舍가 갈리죠.
| 항목 | Prometheus + Grafana | Zabbix | PRTG | LibreNMS |
|---|---|---|---|---|
| 라이선스 비용 | 무료 | 무료 (유료 지원) | 유료 (센서 수 기반) | 무료 |
| 시각화 자유도 | 매우 높음 | 중간 | 중간 | 중간 |
| 멀티 벤더 통합 | 우수 (Exporter 방식) | 우수 | 좋음 (템플릿 풍부) | 우수 |
| 학습 곡선 | 중간 (PromQL 필요) | 중간 | 낮음 | �음 |
| FortiGate 전용 기능 | 커뮤니티 대시보드 활용 | 공식 템플릿 존재 | 공식 센서 존재 | 자동 감지 |
| 알람 채널 확장성 | 매우 높음 (Alertmanager) | 좋음 | 중간 | 중간 |
차별화된 인사이트
Prometheus + Grafana 조합만의 진짜 강점은 컨테이너 환경과의 자연스러운 통합입니다. Kubernetes에 배포된 서비스, AWS 클라우드 워크로드, FortiGate를 단일 대시보드에서 모두 볼 수 있는 도구는 사실상 이 스택이 유일하거든요. Zabbix와 PRTG도 강력하지만, 클라우드 네이티브 워크로드까지 통합하려면 별도 Agent를 깔아야 하는 부담이 있습니다.
⚠️ 운영 시 주의사항
- FortiGate 펌웨어 업그레이드 후 MIB OID가 변경되는 경우가 드물게 있습니다. 업그레이드 직후 대시보드에서 메트릭이 비는지 확인하고, 필요하면 generator.yml을 재생성하세요.
- SNMP Exporter를 여러 FortiGate에 동시 쿼리하면 FortiGate CPU가 추가로 부담을 받을 수 있습니다. 디바이스 수가 10대를 넘으면 스크레이프 주기를 1분 이상으로 조정하는 게 안전합니다.
자주 묻는 질문
Q. FortiGate에서 SNMP v3을 꼭 써야 하나요?
A. 내부망 단독 환경이면 v2c로도 충분합니다. 다만 외부 통신망을 거쳐야 하거나 보안 감사 요구사항이 있다면 v3의 auth + privacy 모드를 강력히 권장합니다. 평문 Community Name이 네트워크에 노출되지 않거든요.
Q. SNMP Exporter와 node_exporter를 동시에 쓸 수 있나요?
A. 물론입니다. Prometheus의 scrape_configs에 두 개의 job을 각각 등록하면 됩니다. 보통 node_exporter는 Linux 서버, SNMP Exporter는 네트워크 장비를 담당하게 분리해서 운영합니다.
Q. FortiGate VM과 하드웨어 어플라이언스 모두 동일한 설정인가요?
A. SNMP 설정 자체는 동일합니다. 다만 VM은 CPU 사용률이 호스트와 공유되므로 threshold를 조금 더 보수적으로 잡는 것이 운영상 안전합니다.
Q. FortiAnalyzer를 이미 쓰고 있는데 중복 아닌가요?
A. FortiAnalyzer는 로그·리포팅 중심이고, Prometheus + Grafana는 실시간 메트릭·시계열 분석에 강점이 있습니다. 용도가 다르므로 병행 운영해도 충돌하지 않고 오히려 상호 보완적입니다.
Q. 메트릭 수집은 되는데 값이 0으로만 표시됩니다.
A. 대부분 generator.yml에 해당 OID가 누락된 경우입니다. snmpwalk로 응답하는 OID를 다시 확인하고 generator.yml에 walk 항목을 추가한 뒤 Exporter를 재기동하면 정상 값이 들어오기 시작합니다.
Q. Grafana 알림과 Alertmanager 알림 중 무엇을 써야 하나요?
A. 중대한 인프라 알림은 Alertmanager, 대시보드 한정 경고는 Grafana Alerting을 권장합니다. Alertmanager가 그룹화·억제·분리 기능이 더 정교하거든요.
FortiGate 모니터링을 Prometheus + Grafana로 통합하면 단순한 트래픽 시각화를 넘어서, 장애 예측과 자동 알림까지 한 번에 잡을 수 있습니다. 처음에는 SNMP 설정과 방화벽 정책 사이에 놓인 함정부터 확인하고, 그 다음에 generator.yml과 Prometheus 연동 순서로 차근차근 쌓아가시면 한 번에 완성도 높은 모니터링 체계를 만들 수 있습니다. 오늘 정리한 절차와 임계값 가이드를 그대로 따라 하시면 주말 장애 대응에 한층 여유가 생길 거예요.
본 문서는 정보 제공을 목적으로 작성되었으며, 작성자는 본 글의 내용을 적용한 결과에 대해 어떠한 책임도 지지 않습니다. 네트워크 환경 및 FortiGate 펌웨어 버전, Prometheus·Grafana 버전에 따라 설정 값이 달라질 수 있으므로, 실제 운영 적용 전에 반드시 공식 문서와 테스트 환경에서 검증하시기 바랍니다.