1、环境介绍
我们还是利用之前搭建好的zabbix环境和上一节搭建的mail环境一起测试
A、zabbix01(192.168.150.129 zabbix-server、zabbix-agent)
B、zabbix02(192.168.150.130 zabbix-proxy、zabbix-agent)
C、mail.ecip.com(192.168.150.132 postfix、dovecot)
首先将邮件服务器和zabbix的环境关联起来
然后通过停掉、启动zabbix-agent,模拟服务器无法访问,看是否可以收到邮件
2、环境调整
A、配置zabbix图表中文显示
zabbix安装后,默认图表展示时,是无法显示中文的(乱码)
需要将windowns的字体加入zabbix-web展现模块,并作相关调整
网上很多文章都是介绍裸机上如何调整中文,下边介绍docker环境中如何修改
容器中该中文支持,需要修改zabbix-web容器(对应这里的容器为:zabbix/zabbix-web-apache-mysql)
I、找到本地中文字体
依次打开,控制面板--》所有控制面板项--》字体,找到“简体 楷体 常规”,见下图
或者直接到windows的字体目录找到如下字体“C:\Windows\Fonts\simkai.ttf”
拷贝至zabbix01服务器上
[root@zabbix01 ~]# ls /mysql/dockerfile/SIMKAI.ttf
/mysql/dockerfile/SIMKAI.ttf
III、修改zabbix-web-apache-mysql镜像
需要修改zabbix-web-apache-mysql,将中文字符集(SIMKAI.ttf)加入镜像中,并调整配置文件,让系统默认使用简体中文
这里回顾一下如何使用dockerfile生成镜像逻辑
[root@zabbix01 ~]# cd /mysql/dockerfile
[root@zabbix01 dockerfile]# ls
Dockerfile SIMKAI.ttf
[root@zabbix01 dockerfile]# cat Dockerfile
from zabbix/zabbix-web-apache-mysql
COPY SIMKAI.ttf /usr/share/fonts/ttf-dejavu/
#COPY SIMKAI.ttf /usr/share/zabbix/fonts/
RUN sed -i 's/graphfont/SIMKAI/g' /usr/share/zabbix/include/defines.inc.php && \
chmod 777 /usr/share/fonts/ttf-dejavu/SIMKAI.ttf && \
ln -s /usr/share/fonts/ttf-dejavu/SIMKAI.ttf /usr/share/zabbix/fonts/SIMKAI.ttf && \
chmod 777 /usr/share/zabbix/fonts/SIMKAI.ttf
[root@zabbix01 dockerfile]#
我的dockerfile写的很简单了,就不细说了吧,下边生成镜像zabbix/zabbix-web-apache-mysql-jt
[root@zabbix01 dockerfile]# docker build -t zabbix/zabbix-web-apache-mysql-jt .
Sending build context to Docker daemon 11.79 MB
Step 1 : FROM zabbix/zabbix-web-apache-mysql
---> 1ea9f866a3a3
Step 2 : COPY SIMKAI.ttf /usr/share/fonts/ttf-dejavu/
---> Using cache
---> 670aa51d1635
Step 3 : RUN sed -i 's/graphfont/SIMKAI/g' /usr/share/zabbix/include/defines.inc.php && chmod 777 /usr/share/fonts/ttf-dejavu/SIMKAI.ttf && ln -s /usr/share/fonts/ttf-dejavu/SIMKAI.ttf /usr/share/zabbix/fonts/SIMKAI.ttf && chmod 777 /usr/share/zabbix/fonts/SIMKAI.ttf ---> Using cache
---> 6a3244b1654e
Successfully built 6a3244b1654e
删除zabbix-web-apache-mysql容器,并使用新镜像启动
[root@zabbix01 dockerfile]# docker rm -f zabbix-web-apache-mysql
zabbix-web-apache-mysql
[root@zabbix01 dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zabbix/zabbix-web-apache-mysql-jt latest 6a3244b1654e 16 hours ago 201.1 MB
zabbix/zabbix-web-apache-mysql latest 1ea9f866a3a3 5 weeks ago 177.5 MB
zabbix/zabbix-server-mysql latest 942fc7fca3af 5 weeks ago 106.1 MB
mysql latest 22be5748ecbe 7 weeks ago 405.6 MB
[root@zabbix01 dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22b92f8d260a zabbix/zabbix-server-mysql "/bin/basrun_zabbi" 17 hours ago Up 2 seconds 162/udp, 0.0.0.0:10051->10051/tcp zabbix-server
73b8bd40c89a mysql "docker-entrypoint.sh" 17 hours ago Up 9 seconds 0.0.0.0:3306->3306/tcp mysql01
[root@zabbix01 dockerfile]# docker run -tid --name zabbix-web-apache-mysql -e DB_SERVER_HOST="193.168.253.2" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD=Zxt1234! -e ZBX_SERVER_HOST="193.168.253.3" -e ZBX_SERVER_PORT="10051" -e TZ="Asia/Shanghai" -p 80:80 -p 443:433 zabbix/zabbix-web-apache-mysql-jt
52d66fa0a29e68742795c4ba1fed8e549087265f5e17c3134e9b74b62e1a9b40
[root@zabbix01 dockerfile]# docker inspect zabbix-web-apache-mysql|grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "193.168.253.4",
"IPAddress": "193.168.253.4",
[root@zabbix01 dockerfile]#
ok,关于图表中文支持,就这些,我们看一下展现效果
B、postfix加入容器地址访问的ip地址
之前我们规划中,docker容器使用的ip地址为:193.168.253.0/24、193.168.1.0/24、193.168.2.0/24
这里将上述地址端汇聚为193.168.0.0/16,加入postfix的允许访问策略
[root@mail ~]# cd /etc/postfix/
[root@mail postfix]# ls
access canonical generic header_checks main.cf master.cf relocated transport virtual
[root@mail postfix]# grep "mynetworks =" main.cf|grep -v "#"
mynetworks = 192.168.150.0/24, 127.0.0.0/8 , 193.168.0.0/16
[root@mail postfix]# systemctl restart postfix
需要调整的配置文件就上边这些,接下来需要在zabbix-web端做配置(网页)
3、zabbix-web调整
A、报警媒介类型修改
管理--》报警媒介类型--》Email中做如下配置:
SMTP服务器:192.168.150.132
SMTP服务器端口:25
SMTP HELO:192.168.150.132
安全连接:无
认证:无
见下图
B、配置用户的email
配置--》用户--》“Admin” --》“报警媒介”--》“添加”
C、添加告警事件
配置--》动作--》“创建动作”--》动作
名称:mail-push
条件中,将“维护状态 非在 维护”“移除”
配置--》动作--》“创建动作”--》操作--》“新的”
发送到用户--》“添加”,再弹出的窗口中选择“Admin”用户
仅送到:“Email”
配置--》动作--》“创建动作”--》恢复操作--》“新的”
发送到用户--》“添加”,再弹出的窗口中选择“Admin”用户
仅送到:“Email”
ok,关于mail的配置大体上就这些,
4、Email测试
我们停止zabbix01、zabbix02的zabbix-agent,模拟服务器不能访问,看能否收到邮件
在zabbix的服务器监控(Template OS Linux)中,默认有一项监控的触发器“Zabbix agent on {HOST.NAME} is unreachable for 5 minutes”是通过如下规则来判断的“{{HOST.NAME}:agent.ping.nodata(5m)}=1”
也就是服务器ping不通的触发器,按照我们上边的配置,这个触发器会产生事件,会通过email通知admin用户
[root@zabbix01 dockerfile]# systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2017-04-19 10:47:19 CST; 4min 7s ago
Process: 8450 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 8465 (zabbix_agentd)
Memory: 3.2M
CGroup: /system.slice/zabbix-agent.service
├─8465 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
├─8467 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
├─8468 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
├─8469 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
├─8470 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
└─8471 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
Apr 19 10:47:19 zabbix01 systemd[1]: Starting Zabbix Agent...
Apr 19 10:47:19 zabbix01 systemd[1]: PID file /run/zabbix/zabbix_agentd.pid not readable (yet?) after start.
Apr 19 10:47:19 zabbix01 systemd[1]: Started Zabbix Agent.
[root@zabbix01 dockerfile]# systemctl stop zabbix-agent
[root@zabbix02 ~]# systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2017-04-19 10:47:26 CST; 3min 49s ago
Process: 8017 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 8033 (zabbix_agentd)
Memory: 2.6M
CGroup: /system.slice/zabbix-agent.service
├─8033 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
├─8036 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
├─8037 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
├─8038 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
├─8039 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
└─8040 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
Apr 19 10:47:26 zabbix02 systemd[1]: Starting Zabbix Agent...
Apr 19 10:47:26 zabbix02 systemd[1]: PID file /run/zabbix/zabbix_agentd.pid not readable (yet?) after start.
Apr 19 10:47:26 zabbix02 systemd[1]: Started Zabbix Agent.
[root@zabbix02 ~]# systemctl stop zabbix-agent
ok,收到的服务器不可用的邮件大致如下:
我们再启动zabbix-agent,看能否收到恢复的邮件
[root@zabbix01 dockerfile]# systemctl start zabbix-agent
[root@zabbix02 ~]# systemctl start zabbix-agent
收到的服务器不可用的邮件大致如下:
zabbix可以推送的消息类型有:短信和email、短信、jabber(一个linux及时通讯服务器),也可以是自己配置的脚本
限于本地模拟环境,就只能拿email来简单测试一下,还有很多比较细粒度的配置参数,就不测试了
原创:祥云