zabbix监控及邮件报警
一.zabbix 客户端的安装
既然要监控我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装
agent,安装 agent 比较简单,我们也是按照安装 server 的流程,下载软件包,在编译的时
候,我们只选择 agent
192.168.1.20 作为 zabbix 的被监控端,提供 web 和 mysql 应用
1.安装 Zabbix,配置 Zabbix agent:
21 rz (上传zabbix-3.2.1.tar.gz)
22 ls
23 tar zxf zabbix-3.2.1.tar.gz (解压)
24 cd zabbix-3.2.1/
25 ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install (编译安装)
2.优化一下zabbix
23 cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ (拷贝启动文件)
24 vim /etc/init.d/zabbix_agentd (修改启动文件)
BASEDIR=/usr/local/Zabbix #22
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid #31
25 cd /usr/local/zabbix/etc/
26 vim zabbix_agentd.conf (修改zabbix配置文件)
28 grep -v "^#" /usr/local/zabbix/etc/zabbix_agentd.conf | grep -v "^$"
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid #11
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log #30
Server=192.168.1.10 #91 服务端IP
ListenPort=10050 #99去注释
ListenIP=0.0.0.0 #去注释
ServerActive=192.168.1.10 #132 服务端IP
Hostname=192.168.1.30 #IP随便
Timeout=3 #去注释
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ #262
29 mkdir /usr/local/zabbix/logs (创建所需目录)
30 useradd zabbix -s /sbin/nologin -M (创建所需用户)
33 chown -R zabbix:zabbix /usr/local/zabbix/ (让用户可执行/usr/local/zabbix)
34 ll /usr/local/zabbix/ (查看一下/usr/local/zabbix的属组和属主)
3.开机自启
36 chkconfig --add zabbix_agentd (添加启动)
37 chkconfig zabbix_agentd on (开启自启)
38 /etc/init.d/zabbix_agentd start (开启zabbix)
40 netstat -anpt | grep 10050 (查看端口)
到此, zabbix3.2.1 监控系统的基本环境安装完成。
4.实现 zabbix 添加监测项
添加对 Linux 主机的监控
在浏览器中打开: http://192.168.31.225/zabbix
登录 zabbix,先在“配置”-“主机”里添加主机监控,监控 os 资源:内存, cpu, io,负载,带宽等.登录 zabbix,先在“配置”-“主机”里单击”创建主机”
注意:下图中的“主机名称”要和 zabbix_agentd.conf 文件中设置的“Hostname”后面的名称一
致!
主机名称: 192.168.1.30
群组: Linux servers
agent 代理程序接口
ip: 192.168.1.10
已启用: 勾选
其它选项默认即可
切换到模板
选择
选择: Template OS Linux
点添加
添加
至此, Zabbix 监控 Linux 主机设置完成。
配置过一段时间后,观察下监控图效果出来了没
zabbix3.0 server 已自带 mysql 的模板了,只需配置好 agent 客户端,然后在 web 端给主机增加模板就行了。
二.Zabbix_agent 客户端操作
使用脚本安装MySQL
43 rz 上传mysql安装包和脚本
44 sh mysql.sh
45 history
46 netstat -anpt | grep 3306 查看IP
Mysql.sh脚本内容
#!/bin/bash
tar -zxf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
#将二进制包移动到/usr/local/mysql
mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql
#创建data目录
mkdir /usr/local/mysql/data
#创建用户和组并赋予文件夹权限
groupadd -r mysql
useradd -r -g mysql -M -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql
#删除centos7中自带的mariadb-libs
rpm -e mariadb-libs --nodeps
#设置my.cnf配置文件
cat> /etc/my.cnf <<EOF
[client]
socket=/usr/local/mysql/mysql.sock
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysql.pid
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/data/mysql.err
EOF
#做服务的软链接
ln -s /usr/local/mysql/bin/* /usr/local/bin/
#mysql初始化
mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
#服务自启动
mv /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#启动mysql并修改密码为123
/etc/init.d/mysqld start
mysqlpwd=` grep password /usr/local/mysql/data/mysql.err |awk -F 'root@localhost: ' '{print $2}'`
mysql -uroot -p${mysqlpwd} -e 'alter user root@localhost identified by"123"' --connect-expired-password
(1)在 zabbix_agent 服务目录下创建.my.cnf 连接文件
zabbix 安装目录是/usr/local/zabbix
56 cd /usr/local/zabbix/etc/
57 vim .my.cnf
[client]
host=192.168.1.20 #自己客户端IP
socket= /usr/local/mysql/mysql.sock
user=test
password=123.com
(2)配置 MySQL 的 key 文件
48 cd zabbix-3.2.1/conf/zabbix_agentd/
49 ls
50 ls /usr/local/zabbix/etc/
51 cp userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/ (复制配置文件)
52 cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
53 ls
然后查看 userparameter_mysql.conf 文件,看到类似 HOME=/var/lib/zabbix 的路径设置,把路
径全都替换为 /usr/local/zabbix/etc/,也就是上面的.my.cnf 文件所在的目录路径。
另外,注意 userparameter_mysql.conf 文件里的 mysql 命令路径(提前做好 mysql 的系统环
境变量,以防 mysql 命令不被系统识别)
如下:vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
60vim/usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
OME=/usr/local/zabbix/etc mysql -N | awk '{print $$2}' #6
HOME=/usr/local/zabbix/etc mysql -N' #15
UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc mysqladmin ping | grep -c alive #17
61 /etc/init.d/zabbix_agentd restart (重启)
服务端验证 zabbix_get -s 192.168.1.20 -p 10050 -k mysql.status[Uptime]
客户端修改
68 vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
OME=/usr/local/zabbix/etc /usr/local/mysql/bin/mysql -N | awk '{print $$2}' #6
HOME=/usr/local/zabbix/etc /usr/local/mysql/bin/mysql -N' #15
UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc /usr/local/mysql/bin/mysqladmin ping | grep -c alive #17
UserParameter=mysql.version,/usr/local/mysql/bin/mysql -V #18
55 /etc/init.d/zabbix_agentd restart (重启)
服务端验证 zabbix_get -s 192.168.1.20 -p 10050 -k mysql.status[Uptime]
(3)mysql查看内容
58 mysql -u root -p123
grant all on *.* to test@'192.168.1.%' identified by '123.com';
show global status ;
show global status where Variable_name='Uptime';
(4)登录 zabbix 监控界面,在“配置”-“模板”里可以看到自带的 mysql 监控模板
在相应主机监控配置里添加 mysql 的监控模版(zabbix 自带的)即可。
【1】 监控 mysql 的带宽:在 zabbix 前端可以实时查看 mysql 发送接收的字节数。其中 bytes
received 表示从所有客户端接收到的字节数, bytes sent 表示发送给所有客户端的字节数。
【2】监控 mysql 的操作状态:在 zabbix 前端可以实时查看各种 SQL 语句每秒钟的操作次数
三.zabbix3.2.1 邮件报警设置:(服务器配置)
Zabbix 监控服务端、客户端都已经部署完成,被监控主机已经添加, Zabiix 监控运行正常。
在 Zabbix 服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送
报警邮件到指定邮箱。
具体操作:
以下操作在 Zabbix 监控服务端进行
下载 sendemail 软件
然后安装那两个依赖包,命令是:
244 yum install perl-Net-SSLeay perl-IO-Socket-SSL -y
245 rz (上传sendEmail-v1.56.tar.gz)
246 ls
247 tar zxf sendEmail-v1.56.tar.gz
248 cd sendEmail-v1.56/
249 cp sendEmail /usr/local/bin/sendEmail (复制命令目录)
250 chown zabbix:zabbix /usr/local/bin/sendEmail (给zabbix执行权限)
1.
(1).登上qq浏览器操作一下
(2).服务端执行:可以看到他报错了
sendEmail -f 123456@qq.com -t 123456@qq.com -s smtp.qq.com -u "hello" -o message-content-type=html -o message-charset=utf8 -xu 123456@qq.com -xp twjlhxzhsykjddcb -m "123"
解决vim /usr/local/bin/sendEmail
if (! IO::Socket::SSL->start_SSL($SERVER)) { #1906修改
继续执行
sendEmail -f 123456@qq.com -t 123456om -s smtp.qq.com -u "hello" -o message-content-type=html -o message-charset=utf8 -xu 123456@qq.com -xp twjlhxzhsykjddcb -m "123"
现在已经发送邮件成功
(3)创建mail.sh邮件脚本
55 cd
56 vim mail.sh (创建邮件脚本)
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -o tls=auto -f 123456@qq.com -t "$to" -s smtp.qq.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu 123546@qq.com -xp twjlhxzhsykjddcb -m "$body"
执行脚本测试发邮件
57 sh mail.sh223456@qq.com test 123 (执行脚本发送邮件)
发送成功
(4)把脚本移动到进入/usr/local/zabbix/share/zabbix/alertscripts/
mv mail.sh /usr/local/zabbix/share/zabbix/alertscripts/
chown +x mail.sh
- zabbix web 端配置
上面的邮件脚本配置好后,就要在 web 端添加报警媒介,在 web 页面的管理,报警媒介类型页面,点击右边的创建媒体类型
进入创建页面,然后输入名称“邮件报警脚本”,类型选择脚本,名称选择 mail.sh,点击添加按钮,添加三个脚本参数,分别是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE},分别对于 mail.sh 中的 to、 subject 和 body。添加完成后点下面的添加按钮,我们的报警媒介就创建完成了
创建好报警媒介后,就需要将报警媒介关联到我们的用户。点击管理,用户,然后选择我们的用户 admin 也可新建一个用户,点击用户名就进入到用户配置界面。点击报警媒介,然后点添加,选择我们上一步创建的邮件报警脚本,输入收件人,选择报警时间和类型,然后点击添加,就将创建好的报警媒介关联到我们的用户上面了。
现在需要做的是,创建一个触发动作,即系统出现故障时,触发这个动作,然后给我们的邮箱发送报警邮件。点击配置,选择动作,然后点击右边的创建动作。
在动作这一页名称中写入我们定义的动作名以及触发条件
配置触发器
报警测试
将 192.168.1.20 服务器的 zabbix_agent 进程关闭。
发现可以正常收到故障报警邮件
/etc/init.d/zabbix_agentd stop
可以看到已经成功发送
qq邮箱收到报错信息
整个实验完毕