1./ Cài đặt Docker container.
Cài đặt tự động bằng script sau:
1 |
nano /opt/script/build-docker-container.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#!/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 |
1 2 3 4 5 |
cd /opt/script/ chmod +x build-docker-container.sh ./build-docker-container.sh |
kiểm tra lại
1 |
docker --version |
Chuyển thư mục lưu trữ docker về /opt
1 2 3 4 5 6 7 8 9 10 11 |
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
1 2 3 4 5 6 7 8 9 |
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/* |
1 |
nano /etc/prometheus/prometheus.yml |
#Paste
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
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
1 |
sudo netstat -tulpn | grep 9090 |
Kiểm tra UID và GID của user prometheus
1 2 3 |
cat /etc/passwd | grep prometheus prometheus:x:999:998:/home/prometheus:/bin/false |
#tạo container prometheus
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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ả
1 |
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
1 |
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.
1 2 3 4 5 6 7 8 9 10 11 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
… 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/