Docker LibreNMS搭建(MariaDB、PhpMyAdmin)
Docker LibreNMS安裝記錄(含MariaDB、PhpMyAdmin
在Centos8上安裝Docker 版LibreNms+Mariadb+phpMyAdmin,未使用Docker-Compose
筆記如下(單引號不可以忽略):
###Centos7 Docker安裝###
#安裝Docker社群版yum install docker-ce docker-ce-cli containerd.io
###安裝MariaDB###(mariadb_root_password 是指定Docker啟動後,這個MariaDB root帳號的密碼)docker run -d -e 'MYSQL_ROOT_PASSWORD=mariadb_root_password' -e 'TZ=Asia/Taipei' -v '/home/myusername/database/mariadb':'/var/lib/mysql' -v '/home/myusername/mariadbcustom.cnf':'/etc/mysql/conf.d/custom.cnf' -p 3306:3306 --restart=always --name mariadb mariadb:latest
參數說明:run :執行指定的Docker Image (本地沒有就自動下載)-d :以背景方式執行-e 'MYSQL_ROOT_PASSWORD=mariadb_root_password' :設定環境變數,在此為設定MariaDB啟動後的root密碼-e 'TZ=Asia/Taipei' :指定MariaDB 時間(跟LibreNms配合)-v '/home/myusername/database/mariadb':'/var/lib/mysql' :將外部的/home/myusername/database/mariadb 資料夾(需事先建立空資料夾),映射到容器內部的/var/lib/mysql 資料夾。容器對資料夾的讀寫,實際是讀寫外部資料夾。容器刪除後,外部資料夾仍存在。-v '/home/myusername/mariadbcustom.cnf':'/etc/mysql/conf.d/custom.cnf' :將外部的/home/myusername/mariadbcustom.cnf檔案,映射到容器內部的/etc/mysql/conf.d/custom.cnf。此處是以此檔設定MariaDB的語系為UTF8,以此方式方便啟動新容器時可以直接套用。-p 3306:3306 :將容器Listen 的3306 Port直接對應到外部的3306 Port,也就是當連線外部機的3306 Port時,實際會連到此容器內Listen的3306 Port--restart=always :設定如果外部主機重啟了,會自動將本容器帶起來--name mariadb :命名本容器執行後的名稱,不命名的話,有時會自動命名成沒想到的名稱mariadb:latest :要執行的Image檔,因為本地若沒有會自動下載,所以指定最新版 |
mariadbcustom.cnf的內容(用來設定MariaDB 語系使用UTF8):[mysqld] character-set-server = utf8 collation-server = utf8_unicode_ci skip-character-set-client-handshake |
#連線Container mariadbsudo docker exec -it mariadb bash
#登入rootmysql -u root -p
##MariaDB設定LibreNMS會用到的帳密(登入MariaDB內設定)
#新增LibreNMS要用的DB,名稱librenms ,並指定LibreNMS指定的編碼CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
#新增LibreNMS要用的USER: librenms,並允許從任何主機登入CREATE USER 'librenms'@'%' IDENTIFIED BY 'user_librenms_password';
#授權librenms對 librenms 資料庫何做任何操作,並刷新權限GRANT ALL PRIVILEGES on librenms.* TO 'librenms'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
#檢視User權限show grants for librenms;
#檢視User清單select user,host from mysql.user;
#查看MariaDB版本select version();
#查看MariaDB 語系select * from INFORMATION_SCHEMA.SCHEMATA;
#停止、移除mariadb、清空外掛檔案區(方便不斷重新安裝測試用到)sudo docker stop mariadb; sudo docker rm mariadb; sudo rm /home/myusername/database/mariadb/* -f -r;
###安裝PhpMyAdmin### (視個人需求安裝,我裝好後就又沒用它了)
#以外部主機方式連線MariaDB(即指定主機IP,這裡以Docker分配的IP 172.17.0.2為例)sudo docker run --name phpmyadmin -d -e PMA_HOST=172.17.0.2 -p 8080:80 phpmyadmin/phpmyadmin
#以Docker Container方式連線MariaDB(「mariadb」是MariaDB的Container名稱,名稱後面的「:db」不能省略)sudo docker run --name phpmyadmin -d --link mariadb:db -p 8080:80 phpmyadmin/phpmyadmin
###安裝LibreNMS官方版及初始設定### (https://hub.docker.com/r/librenms/librenms/)
##安裝LibreNMS(安裝完成預設帳密是librenms/librenms)sudo docker run --name librenms -d -e 'DB_HOST=172.17.0.2' -e 'DB_PORT=3306' -e 'DB_NAME=librenms' -e 'DB_USER=librenms' -e 'DB_PASSWORD=user_librenms_password' -e 'DB_TIMEOUT=10' -e 'LIBRENMS_SNMP_COMMUNITY=mycommunityname' -e 'TZ=Asia/Taipei' -p '80:8000' -v '/home/myusername/librenmsdata/21.3.0/data':'/data' --restart=always librenms/librenms su - librenms -c "/opt/librenms/librenms-service.py -v"
參數說明():
|
##後置作業設定MariaDB:librenms
#連線Container mariadbsudo docker exec -it mariadb bash
#登入librenmsmysql -u librenms -p
#設定librenms 資料庫(登入LibreNMS後,右上的Validata Config內指出必需修正的內容)use librenms;
ALTER TABLE `notifications` CHANGE `datetime` `datetime` timestamp NOT NULL DEFAULT '1970-01-02 00:00:00' ;
ALTER TABLE `users` CHANGE `created_at` `created_at` timestamp NOT NULL DEFAULT '1970-01-02 00:00:01' ;
##後置作業,設定librenms 系統設定(登入LibreNMS後,右上的Validata Config內指出必需修正的內容)
#連線Container librenmssudo docker exec -it librenms bash
#執行以下指令,以複制及建立連結ln -s /opt/librenms/lnms /usr/bin/lnms;
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
##重新啟動librenms 容器
sudo docker restart librenms
##批次移除本安裝的LibreNMS
#停止、移除librenms、清空外掛檔案區(方便不斷重新安裝測試用到)sudo docker stop librenms; sudo docker rm librenms; sudo rm /home/myusername/librenmsdata/21.3.0/data -r -f
###LibreNMS設定###
#登人librenms web後,右上齒輪→Global Settings 有多項設定可以使用,但若/opt/librenms/config.php有設定,在這裡就會變成唯讀。
##Email寄件設定
Global Settings→Alerting→Email Options
##自動通知設定
Alerts→Alert Transports→Create alert transport :設定各種通知方式,其中Api可以支援呼叫WebApi,Email一個設定只有一個接收人。
Alerts→Alert Transports→Create transport group :將transport群組化,例如通知多個Email跟Api。
##允許設備名稱重覆(有時候就是會發生,或需要)
Global Settings→Discovery→General Discovery Settings
##設定要執行的Poller Modules
Global Settings→Poller Modules
###Docker 基本指令###
#確認Docker版本sudo docker -v
#查看本機的Imagedocker images
#列出Container(看全部: -a )sudo docker ps -a
#啟動Container(container_Name 或 container_id)docker start <container_name>
#停止Container(container_Name 或 container_id)docker stop <container_name>
#強制停止Container(container_Name 或 container_id)docker kill <container_name)
#移除Conteriner(container_Name 或 container_id)docker rm <container_name>
#查看Container IP (container_Name 或 container_id)(底下兩行都可以,中間的式子,只是從資料中撈出IP那一行)sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name>
sudo docker inspect <container_name>|grep '"IPAddress"'|head -n 1