Monitor Switch, Router cisco với Prometheus và Grafana
Monitor Switch, Router cisco với Prometheus và Grafana.
1./ Cài đặt Docker container.
Cài đặt tự động bằng script sau:
nano /opt/script/build-docker-container.sh
#!/bin/bash
#Install Docker container on Ubuntu 18.04 LTS
#/opt/script/build-docker-container.sh
# © Copyright CuongNH2
sudo apt-get -y update
sudo apt-get -y upgrade
#remove old version docker
sudo apt-get remove docker docker-engine docker.io
echo "####################################################################"
echo "# Install dependencies package #"
echo "####################################################################"
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
echo "####################################################################"
echo "# Add Docker's GPG key #"
echo "####################################################################"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
cd /opt/setup
#Add repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt-get -y update
apt-cache policy docker-ce
sudo apt-get install -y docker-ce
sudo systemctl enable docker
sudo systemctl status docker
cd /opt/script/
chmod +x build-docker-container.sh
./build-docker-container.sh
kiểm tra lại
docker --version
Chuyển thư mục lưu trữ docker về /opt
systemctl stop docker
cd /var/lib
mv docker /opt
ln -s /opt/docker .
systemctl restart docker
systemctl status docker
2./ Khởi tạo container Prometheus
sudo useradd -rs /bin/false prometheus
sudo mkdir /etc/prometheus
cd /etc/prometheus/ && sudo touch prometheus.yml
sudo mkdir -p /data/prometheus
sudo chown prometheus:prometheus /data/prometheus /etc/prometheus/*
nano /etc/prometheus/prometheus.yml
#Paste
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- "localhost:9090"
######################################################
- job_name: 'snmp_192_168_1_100
scrape_interval: 60s
static_configs:
- targets: ['192.168.1.100']
metrics_path: /snmp
params:
module: [if_mib]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9116
Cần thay thế targets là IP của switch, router cần monitor
Chắc chắn rằng không có port nào đang chiếm port 9090
sudo netstat -tulpn | grep 9090
Kiểm tra UID và GID của user prometheus
cat /etc/passwd | grep prometheus
prometheus:x:999:998:/home/prometheus:/bin/false
#tạo container prometheus
docker run -d -p 9090:9090 --user 999:998 \
--net=bridge \
-v /etc/prometheus/:/etc/prometheus \
-v /data/prometheus/:/data/prometheus \
prom/prometheus \
--config.file="/etc/prometheus/prometheus.yml" \
--storage.tsdb.path="/data/prometheus"
Kết quả
2973f82f1fea3ece389b265074f2d49f2bc3c9119e2cc73349b1993a880fe840
Như vậy đã Map được port 9090 của server cài Docker vào container và trỏ các file cấu hình tương ứng vị trí.
Lưu ý mở port 9090 trên server cài Docker
Để truy cập được vào container prometheus tiến hành sử dụng lệnh
docker exec -it prometheus sh
Lỗi khi tiến hành exec vào container mode bash thay vì sh : OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown
# https://github.com/docker/for-linux/issues/246
Truy cập vào prometheus qua Browser
3./ Enable SNMP trên switch, router cisco.
sh run | inc snmp
10 permit udp any any eq snmp
enable
conf t
#snmp-server community Htv123456 RO
snmp-server community public RO
4./ Check thông tin SNMP của switch, router cần lấy SNMP
cài thêm snmp
sudo apt-get install snmp -y
snmpwalk -v2c -c public 10.100.110.21
#với public là community string. và 10.100.110.21 là IP của switch, router.
…
iso.3.6.1.2.1.2.2.1.7.436281344 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436285440 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436289536 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436293632 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436297728 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436301824 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436305920 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436310016 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.7.436314112 = INTEGER: 1
…
5./ Cấu hình trên Grafana
chọn SNMP Datasouce Prometheus
Sau đó add thêm Dashboard với ID 11169 sẽ hiện được thông tin của Dashboard
Tham khảo:
https://github.com/prometheus/snmp_exporter
https://vnsys.wordpress.com/2020/01/05/monitoring-network-voi-prometheus-grafana/
Done.