在操作系統上直接部署安裝zabbix太麻煩了,正好借這個機會研究學習下docker。
使用CentOS7最小安裝進行后續配置。
配置各種源加快部署安裝的速度
配置CentOS源和Zabbix安裝程序的yum源
#安裝系統需要的管理工具 yum install -y bind-utils net-tools wget unzip yum install -y yum-utils device-mapper-persistent-data lvm2 #配置使用阿里的centos源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #使用阿里的docker源安裝docker sudo yum-config-manager --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast #安裝免費社區版 sudo yum -y install docker-ce systemctl start docker #設置開機自動啟動 systemctl enable docker
讓Docker使用國內的倉庫
#編輯docker配置文件,使用國內倉庫進行鏡像下載 vi /etc/docker/daemon.json { "registry-mirrors": ["http://hub-mirror.c.163.com"] } #重啟docker加載配置 systemctl restart docker
創建Docker容器
創建MySQL容器
注意!指定UTF8字符集為重要參數,否則安裝后在配置過程中,不能使用中文字符。
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-v /data/zabbix/mysql:/var/lib/mysql \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
創建Zabbix數據庫容器
docker run --name zabbix-server-mysql -t \ -e DB_SERVER_HOST="mysql-server" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_ROOT_PASSWORD="root_pwd" \ --link mysql-server:mysql \ -p 10051:10051 \ -d zabbix/zabbix-server-mysql:latest
創建Zabbix Web容器
docker run --name zabbix-web-nginx-mysql -t \ -e DB_SERVER_HOST="mysql-server" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_ROOT_PASSWORD="root_pwd" \ --link mysql-server:mysql \ --link zabbix-server-mysql:zabbix-server \ -p 80:80 \ -d zabbix/zabbix-web-nginx-mysql:latest
這樣你就可以通過IP地址直接訪問到Zabbix了。用戶名和密碼是:Admin/zabbix
設置這些容器可以跟隨Docker啟動
#可以試用docker ps查看容器的id號 docker update --restart=always 容器id號
安裝后續問題
Zabbix繪制圖形中文字符亂碼
需要安裝中文字體來解決
#找個地方下載文泉驛中文字體 wget http://xze.197946.com/wenquanyiziti.zip unzip wenquanyiziti.zip #將解壓縮的字體拷貝到容器中 docker cp ~/文泉驛點陣正黑.ttf zabbix-web-nginx-mysql:/usr/share/zabbix/assets/fonts/wqy.ttf #進入容器返回的終端進行之后配置,我覆蓋了默認字體文件 docker exec -it zabbix-web-nginx-mysql bash cp DejaVuSans.ttf DejaVuSans.ttf.bak mv wqy.ttf DejaVuSans.ttf
Zabbix繪制圖形的時間不正確
#進入容器的終端執行下面命令修改時區 docker exec -it zabbix-web-nginx-mysql bash vi /usr/share/zabbix/include/config.inc.php #第一行添加如下內容,無需重啟直接生效 date_default_timezone_set('Asia/Shanghai');
Zabbix儀表板提示“Zabbix agent is not available (for 3m)”
這其實是因為默認安裝好Zabbix之后自帶一個監視本地系統的配置“Zabbix Server”。使用Docker安裝幾個容器后默認沒有安裝zabbix-agent,自然無法鏈接到本機自己的代理。
解決的辦法是直接在真機上安裝個zabbix-agent不就解決了嗎?沒有必要再創建一個zabbix-agent容器。這里我直接把zabbix-agent安裝在Centos上了,沒有創建容器。
配置–主機–Zabbix server將agent代理程序的接口更改為“172.17.0.1”即可。
#安裝zabbix 軟件源 rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm # 安裝zabbix-agent yum install zabbix-sender zabbix-agent zabbix-get #在/etc/zabbix/zabbix_agentd.conf中更改: Server=<zbx-server的ip例如172.17.0.3> ServerActive=<zbx-server的ip例如172.17.0.3> Hostname=<本機的名字> Zabbix server我沒有改動 #設置啟動和開機項 systemctl start zabbix-agent.service systemctl enable zabbix-agent.service #允許訪問本地的10050端口 firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --reload #配置是否正確,可以進入容器中測試 docker exec -it zabbix-server-mysql bash zabbix_get -s 172.17.0.1 -k system.cpu.num