zabbix3.4.7搭建及邮件告警
Zabbix3.4.7部署
系统环境:CentOs7.2
1.关闭selinux
1.1 [root@localhost ~]# setenforce 0 #临时关闭
1.2 [root@localhost ~]# vi /etc/selinux/config #将selinux=enforcing改为SELINUX=disabled #永久关闭
2.关闭防火墙
2.1 [root@localhost ~]# systemctl stop firewalld.service #停止防火墙
2.2 [root@localhost ~]# systemctl disable firewalld.service #禁止开机自启动
3.zabbix3.4程序安装
3.1 配置zabbix的yum源
[root@localhost ~]#rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
3.2安装zabbix程序包,安装mysql、zabbxi-agent
[root@localhost ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
3.3启动mariadb并设置开机启动,创建数据库实例,授权
[root@localhost ~]# systemctl start mariadb #启动mariadb
[root@localhost ~]# systemctl enable mariadb #设置开机启动
[root@localhost ~]# mysql #登入数据库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#创建数据库实例
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
#授权所有主机访问数据库实例zabbix,用户名/密码:zabbix/zabbix
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
#授权localhost主机名访问数据库实例zabbix,用户名/密码:zabbix/zabbix
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost.localdomain identified by 'zabbix'; #授权localhost.localdomain主机访问数据库实例zabbix,用户名/密码:zabbix/zabbix
Query OK, 0 rows affected (0.00 sec)
4.导入初始模式和数据
4.1 进入create.sql.gz所在目录
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.4/
4.2 导入出事模式
[root@localhost zabbix-server-mysql-3.4.4]# zcat create.sql.gz |mysql -uroot zabbix
5.启动zabbix-server服务 (服务端部署)
5.1 启动zabbix-server服务 (客户端部署)
[root@localhost zabbix-server-mysql-3.4.4]# systemctl start zabbix-server
5.2 设置zabbix-server服务开机自启动
[root@localhost zabbix-server-mysql-3.4.4]# systemctl enable zabbix-server
ou
6.编辑Apache的配置文件,消注释设置正确的时区
[root@localhost zabbix-server-mysql-3.4.4]# vi /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
7.启动httpd服务 ,设置开机启动httpd服务
7.1 启动httpd服务
[root@localhost ~]# systemctl start httpd
7.2 设置开机启动httpd服务
[root@localhost ~]# systemctl enable httpd
8.zabbix Web网页安装
8.1 在浏览器输入地址http://服务器ip/zabbix/setup.php,出现欢迎界面,点击下一步;
省略一部分
在浏览器输入http://zabbix服务器ip/zabbix/index.php,输入管理员用户名Admin(区分大小写),默认密码zabbix,点击登入即可。
解决图形界面乱码
1. 控制面板-->字体-->选择一种中文字体 例如”楷体“ (simkai.ttf)
2. 将我们下载好的字体上传到zabbix server端的/usr/share/zabbix/fonts目录下
3. 修改/usr/share/zabbix/include/defines.inc.php文件中字体的配置,将里面graphfont替换成simkai
zabbix邮件报警
1. 安装软件包
[root@localhost ~]# yum -y install mailx
2. 给/bin目录下设置权限
[root@localhost ~]# Chown -R zabbix.zabbix /bin/mail
3. 编辑/etc/mail.rc
[root@localhost ~]# vim /etc/mail.rc
set from=15810060392@163.com
set smtp=smtp.163.com
set smtp-auth-user=15810060392@163.com #邮箱账号
set smtp-auth-password=cheng12345 #客户端授权码
set smtp-auth=login
4. 测试mailx配置是否有问题
[root@localhost ~]# echo test | mail -s "my name is shanpao" 15810060888@163.com #此收件箱为收邮件
使用TSL加密协议465端口发送邮件
[root@PLAY ~]# mkdir -p /root/.certs/ ####创建目录,用来存放证书
[root@PLAY ~]# echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt ####向163请求证书
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = GeoTrust Inc., CN = GeoTrust SSL CA - G3
verify return:1
depth=0 C = CN, ST = Zhejiang, L = Hangzhou, O = "NetEase (Hangzhou) Network Co., Ltd", OU = MAIL Dept., CN = *.163.com
verify return:1
DONE
[root@PLAY ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt ####添加一个证书到证书数据库中
[root@PLAY ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt ####添加一个证书到证书数据库中
[root@PLAY ~]# certutil -L -d /root/.certs ####列出目录下证书
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
GeoTrust SSL CA
最后配置/etc/mail.rc
set from=17737******@163.com
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=17737******@163.com
set smtp-auth-password=*********
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs
现在发送测试邮件
echo "zabbix test mail" | mail -s "zabbix" 1839623234233423@qq.com
看起来已经成功了,但是发送完邮件还有报错:证书不被信任,且命令行就此卡住,需要按键才能出现命令提示符
Error in certificate: Peer's certificate issuer is not recognized.
于是
[root@PLAY ~]# cd /root/.certs/
[root@PLAY .certs]# ll
total 80
-rw-r--r-- 1 root root 1793 Jul 6 14:36 163.crt
-rw------- 1 root root 65536 Jul 6 14:37 cert8.db
-rw------- 1 root root 16384 Jul 6 14:37 key3.db
-rw------- 1 root root 16384 Jul 6 14:37 secmod.db
[root@PLAY .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt
Notice: Trust flag u is set automatically if the private key is present.
问题解决
邮件告警配置
管理-->报警媒介类型-->创建媒体类型
三个必要参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
主机:{HOST.NAME}
IP:{HOST.IP}
Trigger:{TRIGGER.NAME}
Trigger status:{TRIGGER.STATUS}
Trigger severity:{TRIGGER.SERERITY}
Original event ID:{EVENT.ID}
恢复操作:
默认接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
主机:{HOST.NAME}
IP:{HOST.IP}
Trigger:{TRIGGER.NAME}
Trigger status:{TRIGGER.STATUS}
Trigger severity:{TRIGGER.SERERITY}
Original event ID:{EVENT.ID}
(可以自定义)
服务端配置完成后部署客户端
客户端zabbix-agent安装省略
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.4.182 #填写Server端IP
ServerActive=192.168.4.182 #填写监控端(server端)IP
Hostname=zabbix server #填写监控端创建主机时的用户名(或ip)
5. 设置开机自启动并启动zabbix客户端
systemctl start zabbix-agent
systemctl enable zabbix-agent
#Server端
1.添加被监控主机的身份信息
界面操作:配置-->主机-->创建主机
填写Agent端信息
主机名必须和Agent端的Hostname一致
Agent代理端口必须和Agent端的Server=XXX.XXX.XXX.XXX 一致
Server: zabbix server的ip地址,
ServerActive: zabbix 主动监控server的ip地址,
其中Server和ServerActive都指定zabbix Server的IP地址,不同的是,前者是被动后者是主动。也就是说Server这个配置是用来允许172.17.22.155这个ip来我这取数据。而ServerActive的172.17.22.155的意思是,客户端主动提交数据给他。
Hostname 主机名,必须唯一,区分大小写。Hostname必须和zabbix web上配置的一直,否则zabbix主动监控无法正常工作。因为agent拿着这个主机名去问server,我有配置主动监控项吗?server拿着这个主机名去配置里面查询,然后返回信息。
zabbix agent检测分为主动(agent active)和被动(agent)两种形式,主动与被动的说法均是相对于agent来讨论的。
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。