前言很久很久以前,我曾經使用過MRTG+SNMP做流量圖表,但是隨著去中國這幾年家裡的Server逐步變成會動就好的超低標準,就沒管了,最近因為大整理所以就想再弄一個類似的,於是挑了Librenms
參考資料莫莫 雜記 - Docker LibreNMS安裝記錄(含MariaDB、PhpMyAdmin)
其實他寫的很詳細,照著做就好了,不過我還是把我稍微調整過的做法寫在下面
基本做法 MariaDBvi mariadb.yml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------------------------------------------------------------------------------------------------------- services: mariadb: image: mariadb:latest container_name: mariadb environment: - MYSQL_ROOT_PASSWORD=${your_DB_root_Passwd} - TZ=Asia/Taipei ports: - ${your_DB_host}:${your_DB_port}:3306 volumes: - /var/lib/docker/volumes/mariadb/data:/var/lib/mysql - /var/lib/docker/volumes/mariadb/mariadbcustom.cnf:/etc/mysql/conf.d/custom.cnf restart: unless-stopped
vi /var/lib/docker/volumes/mariadb/mariadbcustom.cnf1 2 3 4 5 6 7 8 9 10 11 12 13 -------------------------------------------------------------------------------------------------------------------------------- [client] default-character-set = utf8mb4 [mysql]" >> /etc/my.cnf default-character-set = utf8mb4 [mysqld] skip-character-set-client-handshake collation_server = utf8mb4_unicode_ci character_set_server = utf8mb4 tmpdir = /var/lib/mysqltmp
這個是用來定義MariaDB的預設,都使用utf-8 unicode
sudo docker-compose -f mariadb.yml up -d這個是用來建立container & run
sudo docker exec -it mariadb bash1 2 3 4 5 6 7 8 9 -------------------------------------------------------------------------------------------------------------------------------- mysql -u root -p mysql> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci; mysql> CREATE USER 'librenms' @'%' IDENTIFIED BY 'user_librenms_password' ; mysql> GRANT ALL PRIVILEGES on librenms.* TO 'librenms' @'%' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
Librenmsvi librenms.yml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 -------------------------------------------------------------------------------------------------------------------------------- version: '3' services: librenms: image: librenms/librenms:latest container_name: librenms command: su - librenms -c "/opt/librenms/librenms-service.py -v" environment: - TZ=Asia/Taipei - PUID=1000 - DB_HOST=${your_DB_host} - DB_PORT=${your_DB_port} - DB_NAME=librenms - DB_USER=librenms - DB_PASSWORD=user_librenms_passwd - DB_TIMEOUT=10 - LIBRENMS_SNMP_COMMUNITY=${Community_name_you_want} ports: - ${your_Server_ip}:${port_you_want}:8000 volumes: - /var/lib/docker/volumes/librenms/data:/data restart: always
這裡有個關鍵的一步就是務必要加上
command: su - librenms -c “/opt/librenms/librenms-service.py -v”
這個的意思是以librenms 這個帳號執行/opt/librenms/librenms-service.py -v
這樣他的rrd權限才會正確,不然會有問題(我之前就是信了這是optional所以一直弄不好,這個是必要條件…)
sudo docker exec -it mariadb bash1 2 3 4 5 6 7 8 -------------------------------------------------------------------------------------------------------------------------------- mysql -u librenms -p mysql> use librenms; mysql> ALTER TABLE `notifications` CHANGE `datetime` `datetime` timestamp NOT NULL DEFAULT '1970-01-02 00:00:00' ; mysql> ALTER TABLE `users ` CHANGE `created_at` `created_at` timestamp NOT NULL DEFAULT '1970-01-02 00:00:01' ;
這個是修正database issue(Validata Config裡的問題修正)
同場加映 - phpAdmin這個玩意老實說用不太到,但是針對不喜歡mysql指令的人可以用這個圖形介面來操作mysql database
因為他很單純,所以直接用docker run指令建立就可以了
1 2 3 4 5 sudo docker run --name phpmyadmin -d -e PMA_HOST=${your_DB_host} -p 8080:80 phpmyadmin/phpmyadminsudo docker run --name phpmyadmin -d --link mariadb:db -p 8080:80 phpmyadmin/phpmyadmin
這裡的8080port是對外的可以改成你想要的
Nginx設定老實說,要改成子目錄的方式,得去修改container內的config.php我覺得這個太麻煩了,所以我就跑去再申請一個DN專門來用
Nginx的設定就是普通的virtual host設定法,只要在`/etc/nginx/site-enables/後面再加上一個cnf檔定義一下就好了
記得要另外申請一下certbot的憑證給這個 DN使用
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 -------------------------------------------------------------------------------------------------------------------------------- server { listen 80; server_name librenms.exsample.com; return 301 https://$server_name$request_uri ; } server { listen 443 ssl http2; server_name librenms.exsample.com; ssl_certificate /etc/letsencrypt/live/librenms.exsample.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/librenms.exsample.com/privkey.pem; client_max_body_size 20M; location / { proxy_pass http://${your_Server_ip} :${port_you_want} ; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Forwarded-Proto $scheme ; proxy_set_header X-Forwarded-Protocol $scheme ; proxy_set_header X-Forwarded-Host $http_host ; proxy_buffering off; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html;
SNMP for clients FreeBSD請參考Wiki的 FreeBSD Section
VMware ESXi 6.5 參考資料黃昏的甘蔗
天黑的時候星星就會出現
ssh登入Esxi後1 2 3 4 5 6 esxcli system snmp get esxcli system snmp set -c YOUR_STRING esxcli system snmp set -p 161 esxcli system snmp set -L "City, State, Country" esxcli system snmp set -C noc@example.com esxcli system snmp set -e yes
到其他可以讀snmp的機器上執行snmpwalk -v2c -c ${YOUR_STRING} ${your_server_IP} 確認有沒有資料就好了
結論Community若不想修改librenms內的 config.php的話建議不要用public以外的字串,這樣找起來比較方便 這些要開啟後至少幾個小時後才會有明顯的圖示,不要太緊張,也沒辦法一設好就馬上有資料 廢棄原因