最近听说zabbix这个很好用的监听工具,正好项目用得上,就花了点功夫研究了一下。
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix 由2部分构成,zabbix server 与可选组件zabbix agent。
zabbix-agent 部署在被监控机上面,zabbix-server (建议部署在另外一台主机上),zabbix-agent 会发送数据到zabbix-server 或者zabbix-server 主动索取数据. (zabbix.com 官网的manual 上面有安装配置) 。
安装zabbix-server,对比了各种说法我选择了一种最简单的:
基于docker engine安装zabbix-server
首先安装docker
sudo apt-get update
sudo apt-get install curl
curl -sSL https://get.docker.io/ | sudo sh
重启
docker run hello-word
接下来根据https://hub.docker.com/r/monitoringartist/zabbix-3.0-xxl/ 完成server的安装,命令如下:
# create /var/lib/mysql as persistent volume storage
docker run -d -v /var/lib/mysql --name zabbix-db-storage busybox:latest
# start DB for Zabbix - default 1GB innodb_buffer_pool_size is used
docker run \
-d \
--name zabbix-db \
-v /backups:/backups \
-v /etc/localtime:/etc/localtime:ro \
--volumes-from zabbix-db-storage \
--env="MARIADB_USER=zabbix" \
--env="MARIADB_PASS=my_password" \
monitoringartist/zabbix-db-mariadb
# start Zabbix linked to started DB
docker run \
-d \
--name zabbix \
-p 80:80 \
-p 10051:10051 \
-v /etc/localtime:/etc/localtime:ro \
--link zabbix-db:zabbix.db \
--env="ZS_DBHost=zabbix.db" \
--env="ZS_DBUser=zabbix" \
--env="ZS_DBPassword=my_password" \
monitoringartist/zabbix-3.0-xxl:latest
# wait ~60 seconds for Zabbix initialization
# Zabbix web will be available on the port 80, Zabbix server on the port 10051
安装完server之后可以基于docker的命令执行一些对于zabbix的操作,例如:
显示running的zabbix服务:
docker ps
stop zabbix服务:
docker rm -f zabbix
访问zabbix-agent:
docker exec -i zabbix sh -c 'zabbix_get -s192.168.1.104 -p10050 -k"system.uptime"'
docker exec命令可以连接内部的shell
docker exec -ti zabbix /bin/bash
zabbix-server配置到此结束。
登入本地的ip就能进入zabbix的界面:http://192.168.1.198
默认用户名Admin,密码zabbix
zabbix-agent安装配置
zabbix-agent的安装很简单,配置会比较麻烦,首先到需要监控的机器上安装:
sudo apt-get update
sudo apt-get install zabbix-agent
修改配置文件:/etc/zabbix/zabbix_agentd.conf
Server=192.168.1.198 #server端ip
ServerActive=192.168.1.198 #server端ip
Hostname=192.168.1.104 #本机的ip或者本机的name
启动服务:
service zabbix-agentd start
有的时候会有一个防火墙问题,防火墙开启相应端口:
iptables -A INPUT -p tcp -s 10.0.101.248 -m multiport --dports 10050,10051 -jACCEPT
测试:在server端运行以下命令:
docker exec -i zabbix sh -c 'zabbix_get -s192.168.1.104 -p10050 -k"system.uptime"'
此时zabbix-agent安装完成了。
此时在server端的zabbix界面里面已经可以获取到数据了。
zabbix_agentd.conf配置文件详解:http://www.ttlsa.com/zabbix/zabbix_agentd-conf-description/
更多zabbix相关见:http://www.ttlsa.com/zabbix/