一、准备工作
1、mysql数据库:192.168.1.5 2、nginx服务:192.168.1.10 3、docker服务器:192.168.1.20 4、zabbix客户端若干
二、docker搭建zabbix
1、部署zabbix-server
先部署测试zabbix-server:
mkdir -p /home/docker/server/zabbix
docker pull zabbix/zabbix-server-mysql
docker run --name zabbix-server -p 10051:10051 \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \ -itd zabbix/zabbix-server-mysql
docker cp zabbix-server:/etc/zabbix /home/docker/server/zabbix/zabbix-server #将zabbix配置文件放到服务器,为的是修改方便 docker rm -f zabbix-server
启动正式docker-server:
docker run --name zabbix-server -p 10051:10051 \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="1234565" \ -v /home/docker/server/zabbix/server/zabbix_server.conf:/etc/zabbix/ zabbix_server.conf \ -v /home/docker/server/zabbix/server/alertscripts:/usr/lib/zabbix/alertscripts \ -v /home/docker/server/zabbix/server/externalscripts:/usr/lib/zabbix/externalscripts \ -v /home/docker/server/zabbix/server/modules:/var/lib/zabbix/modules \ -v /home/docker/server/zabbix/server/enc:/var/lib/zabbix/enc \ -v /home/docker/server/zabbix/server/ssh_keys:/var/lib/zabbix/ssh_keys \ -v /home/docker/server/zabbix/server/ssl/certs:/var/lib/zabbix/ssl/certs \ -v /home/docker/server/zabbix/server/ssl/keys:/var/lib/zabbix/ssl/keys \ -v /home/docker/server/zabbix/server/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca \ -v /home/docker/server/zabbix/server/snmptraps:/var/lib/zabbix/snmptraps \ -v /home/docker/server/zabbix/server/mibs:/var/lib/zabbix/mibs \ -itd zabbix/zabbix-server-mysql
注:-v 参数将容器文件映射到服务器,也是方便修改
2、部署zabbix-web
先部署测试zabbix-web:
docker pull zabbix/zabbix-web-nginx-mysql
docker run --name zabbix-web -p 8080:8080 -p 8443:8443 \ --link zabbix-server:zabbix-server \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \ -e ZBX_SERVER_HOST="zabbix-server" \ -e PHP_TZ="Asia/Shanghai" \ -itd zabbix/zabbix-web-nginx-mysql docker cp zabbix-web:/usr/share/zabbix /home/docker/server/zabbix/zabbix-web
注:--link 链接容器,可以互相通信,接收容器可以获取源容器的环境变量。
-e 设置环境变量。
启动正式zabbix-web:
docker run --name zabbix-web -p 8080:8080 -p 8443:8443 \ --link zabbix-server:zabbix-server \ -v /home/docker/server/zabbix/zabbix-web:/usr/share/zabbix \ -e DB_SERVER_HOST="192.168.1.5" \ -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" \ -e ZBX_SERVER_HOST="zabbix-server" \ -e PHP_TZ="Asia/Shanghai" \ -itd zabbix/zabbix-web-nginx-mysql
3、部署zabbix-agent
先部署测试zabbix-agent:
docker pull zabbix/zabbix-agent docker run --name zabbix-agent -p 10050:10050 \ --link zabbix-server:zabbix-server \ -itd zabbix/zabbix-agent docker cp zabbix-agent:/etc/zabbix /home/docker/server/zabbix/zabbix-agent docker rm -f zabbix-agent
修改zabbix_agentd.conf配置文件:(有2种情况)
(1)zabbix-server和zabbix-agent在同一台服务器部署
Server=172.17.0.1 #docker容器的网关地址
(2)zabbix-server和zabbix-agent不在一台服务器
Server=192.168.1.20 ServerActive=192.168.1.20:10051 Hostname=主机名
启动正式zabbix-agent:
docker run --name zabbix-agent -p 10050:10050 \ --link zabbix-server:zabbix-server \ -v /home/docker/server/zabbix/zabbix-agent/zabbix_agentd.conf:/etc/zabbix/zabbix_agentd.conf \ -itd zabbix/zabbix-agent
在nginx配置域名访问:
server { server_name zabbix.aa.com; listen 80; location /zabbix/ { proxy_pass http://192.168.1.20:8080/; proxy_redirect off; 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_next_upstream error timeout invalid_header; } }
访问url:http://zabbix.aa.com/zabbix 默认用户名密码:admin/zabbix
注:如果想在没有装docker环境的服务器安装zabbix客户端,直接下载zabbix-agent安装包就可以了。(总结来说docker部署的zabbix-agent不太好用,可以用zabbix+grafana实现所有监控功能:zabbix监控Linux服务,grafana监控容器服务)
三、zabbix页面配置
要配合Grafana做监控系统,所以下面选项中有创建触发器的操作就可以免除了。
1、提前准备
创建模板:
创建应用集:
添加主机:
2、监控端口
添加监控项:
创建触发器:
点完添加会出现下面这个条件选项:
3、url监控(不需要安装zabbix-agent)
创建web场景:
四、zabbix结合Grafana页面展示并邮件警报
因为之前写过docker部署Prometheus+Grafana,这里搭建grafana就可以了,还需要为grafana安装一个zabbix插件:
docker exec -it grafana grafana-cli plugins install alexanderzobnin-zabbix-app #进入容器执行命令 docker restart grafana #重启grafana
1、提前准备
访问Grafana:http://grafana.aa.com 用户名密码:admin/grafana123 在页面配置zabbix插件并添加数据源:
保存并测试,如果成功说明和zabbix已经连接成功。
创建报警信息:(grafana自带的警报)
2、导入json仪表盘模板
根据自己需求下载:https://grafana.com/grafana/dashboards,下载完导入到grafana:
3、手动创建仪表板:
(1)监控端口并报警:
监控端口并报警配置完成。
(2)监控url并报警:
监控URL并报警配置完成。
报警邮件展示:
功能以及操作方面可能有所不足,还在研究,持续更新中!!!
人生确实没有意义,但人生有美。