Cài prometheus và grafana để giám sát router switch Cisco

DÙNG PROMETHEUS & GRAFANA GIÁM SÁT ROUTER CISCO

Prometheus để nhận dữ liệu SNMP từ router rồi dùng grafana vẽ giao diện.

PHẦN 1: Chuẩn bị hạ tầng & Cài đặt Docker trên Linux

Ta dùng Docker để cài.

Vào giao diện dòng lệnh (CLI) của Ubuntu

# Cập nhật hệ thống
sudo apt-get update

# Cài đặt Docker và Docker Compose plugin
sudo apt-get install -y docker.io docker-compose-v2

# Bật Docker khởi động cùng hệ thống
sudo systemctl enable docker
sudo systemctl start docker

PHẦN 2: Triển khai (Prometheus + Grafana + SNMP Exporter)

Tạo một thư mục chứa toàn bộ cấu hình giám sát:

mkdir -p /root/monitoring
cd /root/monitoring

1. Tạo file docker-compose.yml

File này là để gọi cả 3 phần mềm lên cùng một lúc.

nano docker-compose.yml

Dán đoạn code này vào:

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - '9090:9090'
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - '3000:3000'
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    restart: unless-stopped

  snmp-exporter:
    image: prom/snmp-exporter:latest
    container_name: snmp-exporter
    ports:
      - '9116:9116'
    restart: unless-stopped

2. Tạo file cấu hình `prometheus.yml`

Đây là nơi để khai báo danh sách các Router Cisco cần giám sát.

nano prometheus.yml

*Dán đoạn code sau vào (chú ý sửa IP thành IP thật của Router bạn):*

global:
  scrape_interval: 10s # Cứ 10 giây hút dữ liệu 1 lần

scrape_configs:
  - job_name: 'cisco_routers'
    static_configs:
      - targets: ['192.168.199.20']
        labels:
          router_name: 'R2' # Gán cứng tên để Grafana hiện cho đẹp
      - targets: ['192.168.199.30']
        labels:
          router_name: 'R3'
    metrics_path: /snmp
    params:
      module: [if_mib] # Chỉ lấy thông số băng thông (Interface MIB)
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [router_name]
        target_label: instance
      - target_label: __address__
        replacement: snmp-exporter:9116

3. Kích hoạt toàn bộ hệ thống

docker compose up -d

Đợi khoảng 2 phút để hệ thống tải và chạy. Ta có thể kiểm tra bằng lệnh `docker ps`.

PHẦN 3: Cấu hình SNMP trên Cisco Router

Để thằng "SNMP Exporter" ở trên có thể chui vào lấy số liệu, ta khai SNMP trên R2,R3

R2# configure terminal
R2(config)# snmp-server community public ro
R2(config)# end
R2# write memory

PHẦN 4: Kết nối Grafana và Lên Đồ

Bây giờ phần ngầm đã xong, chúng ta chuyển sang phần giao diện.

Bước 1: Đăng nhập Grafana

Truy cập http://ip-server:3000

Mặc định login admin/admin

Bước 2: Khai báo Nguồn dữ liệu (Data Source)

Grafana không tự có dữ liệu, ta phải chỉ cho nó biết kho dữ liệu Prometheus nằm ở đâu.

Vào http://ip-server:3000/connections/datasources/new

  • Chọn **Prometheus**.
  • Ở ô **URL**, điền: http://prometheus:9090

  • Cuộn xuống dưới cùng, bấm **Save & test**.

Bước 3: Chọn mẫu Dashboard giám sát  để dùng

  • Vào link này: http://(ip-server):3000/dashboard/import
  • Ở ô **Import via grafana.com**, nhập mã số 11169 (Đây là mã giao diện SNMP Stats).
  • Bấm **Load**.
  • Ở dòng dưới cùng, chọn Data Source là **Prometheus** vừa tạo.
  • Bấm **Import**.

Sau đó Biểu đồ Out/In của các cổng Router sẽ hiện ra real-time (mặc định là theme tối; ở đây mình chọn theme sáng )

Ngoài ra bài sau ta add telegram bot vào nhắn tin sự cố down/up

---------------------------

Bài viết cùng danh mục