zabbix监控及邮件报警

zabbix监控及邮件报警

zabbix安装部署请参考
(https://blog.csdn.net/weixin_45636702/article/details/102952949)

一、安装zabbix客户端

既然要监控我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装 agent,安装 agent 比较简单,我们也是按照安装 server 的流程,下载软件包,在编译的时 候,我们只选择 agent

192.168.1.250 作为 zabbix 的被监控端,提供 web 和 mysql 应用

安装 Zabbix,配置 Zabbix agent:

[root@localhost ~]# tar zxf zabbix-3.2.1.tar.gz 
[root@localhost ~]# cd  zabbix-3.2.1/
[root@localhost zabbix-3.2.1]# ./configure  --prefix=/usr/local/zabbix  --enable-agent
[root@localhost zabbix-3.2.1]# make  &&  make  install
[root@localhost zabbix-3.2.1]# cp  misc/init.d/fedora/core/zabbix_agentd  /etc/init.d/
[root@localhost zabbix-3.2.1]# mkdir  -p  /usr/local/zabbix/logs
[root@localhost zabbix-3.2.1]# useradd  zabbix  -s  /sbin/nologin   -M
[root@localhost zabbix-3.2.1]# chown  -R zabbix:zabbix  /usr/local/zabbix/

配置开机自启动:

[root@localhost zabbix-3.2.1]# chkconfig  --add  zabbix_agentd
[root@localhost zabbix-3.2.1]# chkconfig  zabbix_agentd  on
[root@localhost zabbix-3.2.1]# vim  /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid

修改zabbix_agentd.conf文件:

[root@localhost ~]# vim  /usr/local/zabbix/etc/zabbix_agentd.conf
[root@localhost ~]# grep -v  ^#  /usr/local/zabbix/etc/zabbix_agentd.conf  |  grep -v ^$
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.1.10
ListenPort=10050
ServerActive=192.168.1.10
Hostname=192.168.1.250
Timeout=3
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

注: 其中 Server 和 ServerActive 都指定 zabbixserver 的 IP 地址,不同的是,前者是被动后者是主 动。也就是说 Server 这个配置是用来允许 192.168.31.225 这个 ip 来我这取数据。而 serverActive 的 192.168.31.225 的意思是,客户端主动提交数据给他。 Hostname=XXX,这个定义的名字必须和 web 页面里面 host 的名字一样

启动zabbix_agent:

[root@localhost ~]# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl): [ 确定 ]

到此,zabbix监控系统的基本环境安装完成

二、实现 zabbix 添加监测项

添加对 Linux 主机的监控
在浏览器中打开:http://192.168.1.10/zabbix
登录zabbix,配置----主机----创建主机
zabbix监控及邮件报警_第1张图片
选择模板添加Template OS Linux模板,点击添加
zabbix监控及邮件报警_第2张图片
zabbix监控及邮件报警_第3张图片
配置过一段时间后,观察下监控图效果出来了没:
zabbix监控及邮件报警_第4张图片

三、监控MySQL

使用脚本一键安装MySQL:
Zabbix_agent 客户端操作:

[root@localhost ~]# sh  mysql.sh 
Starting MySQL. SUCCESS! 
mysql: [Warning] Using a password on the command line interface can be insecure

首先在客户端的 mysql 里添加权限,使用 zabbix 账号连接本地的 mysql :

[root@localhost ~]# mysql -uroot -p123
mysql>  grant all on *.* to zabbix@'192.168.1.%' identified by "123.com";

在 zabbix_agent 服务目录下创建.my.cnf 连接文件:

[root@localhost ~]# cd  /usr/local/zabbix/etc/
[root@localhost etc]# vim  .my.cnf
[client]
host=192.168.1.20
user=zabbix
password=123.com
socket=/usr/local/mysql/mysql.sock

注意:

如果在数据库 grant 授权时,针对的是 localhost,这个.my.cnf 里面就不用加 host 参数了
但如果 grant 授权时针对的是本机的 ip,那么在.my.cnf 文件里就要加上host 参数进行指定了

配置 MySQL 的 key 文件 :
这个可以从 zabbix3.2 安装时的解压包里拷贝过来:

[root@localhost ~]# cp  zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf  /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@localhost ~]# cd  /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@localhost zabbix_agentd.conf.d]# vim  userparameter_mysql.conf

看到类似 HOME=/var/lib/zabbix 的路径设置,把路 径全都替换为 /usr/local/zabbix/etc/,也就是上面的.my.cnf 文件所在的目录路径。 mysql命令路径也要改给就对路径

UserParameter=mysql.status[*],echo “show global status where Variable_name=’$1’;” | HOME=/usr/local/zabbix/etc /usr/local/mysq/bin/mysql -N | awk ‘{print $$2}’

UserParameter=mysql.size[*],bash -c 'echo “select sum($(case “$3” in both|”") echo “data_length+index_length”;; data|index) echo “$3_length”;; free) echo “data_free”;; esac)) from information_schema.tables $([[ “$1” = “all” || ! “$1” ]] || echo " where table_schema="KaTeX parse error: Can't use function '\"' in math mode at position 2: 1\̲"̲")([[ “$2” = “all” || ! “$2” ]] || echo “and table_name=”$2"");" | HOME=/usr/local/zabbix/etc /usr/local/mysql/bin/mysql -N’

UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc /usr/local/mysql/bin/mysqladmin ping | grep -c alive
UserParameter=mysql.version,/usr/local/mysql/bin/mysql -V

重启 zabbix_agent:

[root@localhost ~]# /etc/init.d/zabbix_agentd  restart

在 zabbix_server 服务端进行命令行测试:

[root@localhost ~]# zabbix_get  -s  192.168.1.20  -p  10050  -k  "mysql.status[Threads_connected]"
1
[root@localhost ~]# zabbix_get -s 192.168.1.20 -p 10050 -k "mysql.status[Uptime]" 
2773

如果出现类似这一串 key 的数字,就说明配置 ok,服务端能监控到客户端的 mysql 数据了!
成功啦,之后在监控界面增加主机对应的 MySQL 模板就 ok 了。
zabbix_get 命令介绍 :
参数说明:
-s --host:指定客户端主机名或者 IP
-p --port:客户端端口,默认 10050
-I --source-address:指定源 IP,写上 zabbix server 的 ip 地址即可,一般留空,服务器如果有 多 ip 的时候,你指定一个。
-k --key:你想获取的 key
zabbix_get 获取数据

回到web界面:
配置----主机----选择刚才创建的主机----模板----选择Template App MySQL模板—添加
zabbix监控及邮件报警_第5张图片
zabbix监控及邮件报警_第6张图片

zabbix 邮件报警设置:

Zabbix 监控服务端、客户端都已经部署完成,被监控主机已经添加,Zabiix 监控运行正常。 在 Zabbix 服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送 报警邮件到指定邮箱

以下操作在 Zabbix 监控服务端进行

安装sendmeail软件:
首先安装依赖包:

[root@localhost ~]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y

解压软件,然后将 sendemail 复制到/usr/local/bin/目录下,并加上可执行权限,然后修改用 户和群组:

[root@localhost ~]# tar zxf sendEmail-v1.56.tar.gz
[root@localhost sendEmail-v1.56]# cp  sendEmail /usr/local/bin/sendEmail
[root@localhost sendEmail-v1.56]# chown  zabbix:zabbix  /usr/local/bin/sendEmail

进入/usr/local/zabbix/share/zabbix/alertscripts/目录,后在这个目录下创建报警脚本mail.sh:

[root@localhost ~]# cd  /usr/local/zabbix/share/zabbix/alertscripts/
[root@localhost alertscripts]# vim  mail.sh
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail  -o  tls=auto  -f  [email protected]  -t  "$to"  -s  smtp.qq.com  -u  "$subject"  -o  message-content-type=html  -o  mesage-charset=utf8  -xu  [email protected]   -xp  eckcyhwcaumyddhd  -m  "$body

命令主要选项说明:
/usr/local/bin/sendEmail:命令主程序
-f [email protected]:发件人邮箱
-t:收件人邮箱
-s smtp.qq.com:发件人邮箱的 smtp 服务器
-u:邮件的标题
-o message-content-type=html:邮件内容的格式,html 表示它是 html 格式
-o message-charset=utf8:邮件内容编码
-xu [email protected]:发件人邮箱的用户名
-xp mgrhqixlxvvudcdi:开启POP3/SMTP服务,在第三方客户端登录时,密码框输入的授权码
-m:邮件的具体内容

授权码操作:

登录qq邮箱,点击设置—帐户,往下拉,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,开启POP3/SMTP服务
zabbix监控及邮件报警_第7张图片
修改/usr/local/bin/senmail:
将1906行修改为:
if (! IO::Socket::SSL->start_SSL($SERVER)) {

执行脚本测试发邮件:

[root@localhost alertscripts]# sh  mail.sh  [email protected]  test  123

zabbix监控及邮件报警_第8张图片
zabbix web 端配置 :

上面的邮件脚本配置好后,就要在 web 端添加报警媒介:

管理—报警媒介类型—创建报警媒介类型:

zabbix监控及邮件报警_第9张图片
管理----用户----Admin----报警媒介----添加:
zabbix监控及邮件报警_第10张图片
zabbix监控及邮件报警_第11张图片
配置----动作----创建动作
zabbix监控及邮件报警_第12张图片
zabbix监控及邮件报警_第13张图片
点击上面的操作: ----发送到用户选择Admin—仅发送邮件报警—添加
zabbix监控及邮件报警_第14张图片
zabbix监控及邮件报警_第15张图片
恢复操作一样的配置: —然后点击添加
zabbix监控及邮件报警_第16张图片
zabbix监控及邮件报警_第17张图片
在这里插入图片描述
配置触发器:
配置----主机----触发器----群组选择Template----主机选择Template App Zabbix Agent----将Zabbix agent on {HOST.NAME} is unreachable for 5 minutes改为1分钟

zabbix监控及邮件报警_第18张图片
报警测试:
将192.168.1.20服务器的zabbix进程关闭:

[root@localhost ~]# /etc/init.d/zabbix_agentd  stop

等待邮件报警:
zabbix监控及邮件报警_第19张图片
启动zabbix_agente:

[root@localhost ~]# /etc/init.d/zabbix_agentd  start

zabbix监控及邮件报警_第20张图片
企业微信报警:
登录企业微信后台----通讯录----添加子部门----导入用户----查看部门ID
zabbix监控及邮件报警_第21张图片
应用管理----创建应用----名称随便写----添加部门—选择刚才创建的子部门和主部门和用户----创建完成后可以查看到Secret AgentID
zabbix监控及邮件报警_第22张图片
zabbix监控及邮件报警_第23张图片
查看企业CorpID------我的企业:
在这里插入图片描述
编写脚本:

[root@localhost alertscripts]# pwd
/usr/local/zabbix/share/zabbix/alertscripts
[root@localhost alertscripts]# vim  weixin.sh 
#!/bin/bash

CropID='ww0977cd1ab2b55439'  #这里填写企业CorpID
Secret='VCk5AlFZnKJmhV_vHk8fYyhKl_2MMXs6dJ_HAdYHc_Y'  #这里填写应用Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl  $GURL -H "DNT: 1" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 BIDUBrowser/8.1 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "X-DevTools-Emulate-Network-Conditions-Client-Id: B546FC80-414C-403F-95F0-EB0F70E58EF7" -H "Connection: keep-alive" -H "Cache-Control: max-age=0" --compressed | awk -F \" '{print $10}')

PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body() {
        local int appId=1000002 #这里填写应用AgentID
        local userId=$1
        local partyId=2   #这里填写部门ID
        local msg=$(echo "$@" | cut -d" " -f3-)
        printf '{\n'
        printf '\t"touser":"'"$userId"\"",\n"
        printf '\t"toparty":"'"$partyId"\"",\n"
        printf '\t"msgtype": "text",'"\n"
        printf '\t"agentid":"'"$appId"\"",\n"
        printf '\t"text":{\n'
        printf '\t\t"content":"'"$msg"\"
        printf '\n\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
body $1 $2 $3
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
[root@localhost alertscripts]# chmod  +x  weixin.sh

回到web界面,再创建一个报警媒介类型:
zabbix监控及邮件报警_第24张图片
管理----用户----admin-----报警媒介—添加
zabbix监控及邮件报警_第25张图片
zabbix监控及邮件报警_第26张图片
配置----动作----创建动作:
zabbix监控及邮件报警_第27张图片
zabbix监控及邮件报警_第28张图片
操作:

zabbix监控及邮件报警_第29张图片
zabbix监控及邮件报警_第30张图片
恢复操作:
zabbix监控及邮件报警_第31张图片
zabbix监控及邮件报警_第32张图片
配置触发器:
zabbix监控及邮件报警_第33张图片
zabbix监控及邮件报警_第34张图片
报警测试:
将 192.168.1.20 服务器的 zabbix_agent 进程关闭

[root@localhost alertscripts]# /etc/init.d/zabbix_agentd  stop

zabbix监控及邮件报警_第35张图片
已经收到了报警信息

你可能感兴趣的:(zabbix监控及邮件报警)