总zabbix配置-搭建-邮件报警-微信报警-监控mysql

Centos7安装Zabbix4.0步骤

官方搭建zabbix4.0的环境要求:

1. 环境搭建LAMP 

 前提Centos系统安装完成:  确认一下:

1
2
cat  / etc / redhat - release  #  查看CentOS版本 
cat  / proc / version          #查看存放与内核相关的文件

1.1 搭建之前的操作

1.1.1 升级系统组件到最新的版本

1
yum  - y update

1.1.2 关闭selinux 

1
vi  / etc / selinux / config     #将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效

1
setenforce  0        #临时关闭命令
1
getenforce          #检测selinux是否关闭,Disabled 为关闭

扫描二维码关注公众号,回复: 5863047 查看本文章

1.1.3 关闭防火墙

1
firewall - cmd  - - state     #查看默认防火墙状态,关闭后显示not running,开启后显示running

1
2
systemctl stop firewalld.service     #临时关闭firewall
systemctl disable firewalld.service  #禁止firewall开机启动

1.2 搭建LAMP环境

 1.2.1 安装所需所有软体仓库

 Zabbix是建立在LAMP或者LNMP环境之上,在此为了方便就使用yum安装LAMP环境。

1
yum install  - y httpd mariadb - server mariadb php php - mysql php - gd libjpeg *  php - ldap php - odbc php - pear php - xml php - xmlrpc php - mhash
1
rpm  - qa httpd php mariadb             #安装完成后检查应用版本

1.2.2 编辑httpd

1
vi  / etc / httpd / conf / httpd.conf
1
2
ServerName www.zabbixyk.com       #修改为主机名
DirectoryIndex index.html index.php    # 添加首页支持格式 

1.2.3 编辑配置php,配置中国时区

1
vi  / etc / php.ini
1
date.timezone  =  PRC    # 配置时区  

1.2.4 启动httpd,mysqld

1
2
3
4
systemctl start httpd    #启动并加入开机自启动httpd
systemctl enable httpd
systemctl start mariadb   #启动并加入开机自启动mysqld
systemctl enable mariadb
1
2
ss  - anplt | grep httpd    #查看httpd启动情况,80端口监控表示httpd已启动
ss  - naplt | grep mysqld   #查看mysqld启动情况,3306端口监控表示mysqld已启动 

1.2.5 创建一个测试页,测试LAMP是否搭建成功

1
vi  / var / www / html / index.php  #创建一个测试页,并编辑
1
2
3
<?php
phpinfo()
?>

 本地测试:

1
curl http: / / 127.0 . 0.1  - I          #本地测试

1.2.6 初始化mysql数据库,并配置root用户密码

1
mysqladmin  - u root password ykadmin123            #设置数据库root密码

1
2
3
4
5
mysql  - u root  - p         #root用户登陆数据库
CREATE DATABASE zabbix character  set  utf8 collate utf8_bin;        #创建zabbix数据库(中文编码格式)
GRANT  all  ON zabbix. *  TO  'zabbix' @ '%'  IDENTIFIED BY  'ykadmin123' ;   #授予zabbix用户zabbix数据库的所有权限,密码ykadmin123
flush privileges;     #刷新权限
quit                  #退出数据库   

1
vi  / var / www / html / index.php          #修改测试页内容,测试zabbix用户是否能够登陆数据库,这个环节很重要
1
2
3
4
5
6
<?php
$link = mysql_connect( '172.18.20.224' , 'zabbix' , 'ykadmin123' ); 
if ($link) echo  "<h1>Success!!</h1>" ;    #显示Success表示连接数据库成功
  else  echo  "Fail!!" ;
mysql_close();
?>

出现上图则PHP连通数据库完成。

为保证zabbix用户也可以登录数据库,若出现本地无法登录情况,解决方式如下:

1
2
3
mysql  - u root  - p   #使用root账户登录数据库;
select user,host  from  mysql.user;    #有空用户名称占用导致本地无法登录远程可登录
drop user ''@localhost;   #删除空用户  

2. 安装zabbix

2.1  安装依赖包 + 组件

1
yum  - y install net - snmp net - snmp - devel curl curl - devel libxml2 libxml2 - devel libevent - devel.x86_64 javacc.noarch  javacc - javadoc.noarch javacc - maven - plugin.noarch javacc *

1
2
3
4
5
6
7
yum install php - bcmath php - mbstring  - #安装php支持zabbix组件
 
rpm  - ivh http: / / repo.zabbix.com / zabbix / 4.0 / rhel / 7 / x86_64 / zabbix - release - 4.0 - 1.el7 .noarch.rpm   #会自动生成yum源文件,保证系统可以上网
 
yum install zabbix - server - mysql zabbix - web - mysql  - y     #安装zabbix组件
 
zcat  / usr / share / doc / zabbix - server - mysql - 4.0 . 0 / create.sql.gz | mysql  - uzabbix  - - 172.18 . 20.224  zabbix    #导入数据到数据库zabbix中(最后一个zabbix是数据库zabbix),且因为用户zabbix是%(任意主机),所以登录时需要加上当前主机ip(-h 172.18.20.224),密码是用户zabbix登陆密码ykadmin123

1
2
vi   / etc / zabbix / zabbix_server.conf    #配置数据库用户及密码
grep  - '^' [a - Z]  / etc / zabbix / zabbix_server.conf    #确认数据库用户及密码

1
vi  / etc / httpd / conf.d / zabbix.conf      / / 修改时区
1
# php_value date.timezone Europe/Riga 变更成php_value date.timezone Asia/Shanghai
1
2
systemctl enable zabbix - server  # #启动并加入开机自启动zabbix-server
systemctl start zabbix - server

1
netstat  - anpt | grep zabbix           / / 监听在 10051 端口上,如果没监听成功,可重启zabbix - server服务试试

建议重启服务器,再继续。

2.2 web界面安装zabbix

如果以上步骤无误,现在可以使用web打开   

1
http: / / 172.18 . 20.224 / zabbix   / / 注意这里IE浏览器打不开,本次测试使用chrome浏览器

 

....

邮件报警

centos7下zabbix4.0配置邮件报警及web应用优化详解

此篇接上篇分布式监控zabbix,详解如何运用zabbix-web端和配置邮件报警。

--------配置邮件报警功能---服务器上配置---------

[www.aa.com@ ~]# yum install mailx -y

[www.aa.com@ ~]# vi /etc/mail.rc         //注意网易邮箱需要开启客户端授权码进行第三方登录

----文件末尾新增---

set bsdcompat

set [email protected]

set smtp=smtp.163.com

set [email protected]

set smtp-auth-password=abc123

set smtp-auth=login

:wq

[www.aa.com@ ~]# echo "ttttttttttt" | mail -s "testmail" [email protected]   //测试发信正常

----在浏览器上登陆邮箱,查看是否收到测试邮件------

 

[www.aa.com@ ~]# cd /usr/lib/zabbix/alertscripts

[www.aa.com@ alertscripts]# vi mailx.sh          //编写发邮件脚本

#!/bin/bash

#send mail

messages=`echo $3 | tr '\r\n' '\n'`

subject=`echo $2 | tr '\r\n' '\n'`

echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

:wq

[www.aa.com@ alertscripts]# touch /tmp/mailx.log

[www.aa.com@ alertscripts]]# chown -R zabbix.zabbix  /tmp/mailx.log

[www.aa.com@ alertscripts]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh

[www.aa.com@ alertscripts]# chown -R zabbix.zabbix /usr/lib/zabbix/

[www.aa.com@ alertscripts]# ./mailx.sh [email protected] "主题" "内容"     //测试发邮件脚本是否可以正常工作

 

-----在服务器WEB上配置----

管理-》报警媒体类型-》创建媒体类型-》

 

名称:Mail-Test

类型:脚本

脚本名称:mailx.sh

脚本参数:       //新增以下三个参数

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

 

管理-用户-点击Admin-报警媒介:

 

类型:Mail-Test //调用上面的脚本

收件人:[email protected]

其它默认-保存

 

配置-》动作-》创建动作-》删除默认标签,修改触发条件

名称:Mailx

条件 A 主机群组=Linux servers

 

操作-》如下配置

默认操作步骤持续时间 60

默认接收人 : {TRIGGER.STATUS}:{TRIGGER.NAME}

默认信息:

告警主机:{HOST.NAME}

告警  IP:{HOST.IP}

告警时间:{EVENT.DATE}-{EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息:{TRIGGER.NAME}:{ITEM.VALUE}

事件  ID:{EVENT.ID}

操作细节:-》

操作类型:发送消息

发送到用户:Admin (Zabbix Administrator)

仅送到:Mail-Test  //一定要配置否则邮件发送不成功

 

 

恢复操作:{TRIGGER.STATUS}:{TRIGGER.NAME}

恢复信息:

恢复主机:{HOST.NAME}

恢复  IP:{HOST.IP}

恢复时间:{EVENT.DATE}-{EVENT.TIME}

恢复等级:{TRIGGER.SEVERITY}

恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}

恢复  ID:{EVENT.ID}

操作细节:-》

操作类型:发送消息

发送到用户:Admin (Zabbix Administrator)

仅送到:Mail-Test  //一定要配置否则邮件发送不成功

 

 

 

[www.aa.com@ alertscripts]# systemctl restart zabbix-server

[www.aa.com@ alertscripts]# systemctl restart zabbix-agent.service

------以下是测试报警-----

可以在被控主机上模拟相关参数超过阈值,如关闭ssh服务。然后验证邮件收发。

[www.ab.com@ ~]# systemctl stop sshd     

等待是否收到邮件:

 

在控制台重新启动sshd服务,查看是否收到恢复邮件:

 

在被监控主机上关闭 测试报警邮件接收:

[www.ab.com@ ~]# systemctl stop zabbix-agent.service

 

[www.ab.com@ ~]# systemctl start zabbix-agent.service

 

---------------以下针对zabbix的web端优化与应用---------------------

优化图表中文乱码:

 

[www.aa.com@ ~]# vi /usr/share/zabbix/include/defines.inc.php             //修正图表中文乱码

:%s /graphfont/kaiti/g                                                                              //从微软系统下复制相应的字体文件到 /usr/share/zabbix/fonts 目录中注意字体名称要对应配置文件,且注意大小写

:wq

 

查看优化结果:

 

##############################################################微信报警

系统环境:Centos7.4 Zabbix4.0

安装zabbix_server在之前的博文有写道,由于是内网环境,对外通讯仅通过一台代理服务器,并且邮件等端口也被封禁了,所以才考虑用微信报警的方式.

一.注册企业微信号

首先申请微信企业号: https://qy.weixin.qq.com/

注册后 添加一个子部门,此时默认部门ID为2

然后自建一个应用程序

可见范围添加上运维

然后点击应用与小程序查看AgentID和SecretID,并记录下来

点击我的企业,企业信息可以查看企业ID即CropID.

企业ID就是cropid xxxxxxxxxxxxxxxxxxx

AgentId 1000002

Secret 8ubvbvaUvq5W68qcEIFWcwVRI7ErfTl-68jV4Hs9noE

然后打开 https://work.weixin.qq.com/api/devtools/devtool.php测试是否ok

二.Shell脚本设置

[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix alertscripts]# vim weixin.sh

#!/bin/bash
###SCRIPT_NAME:wechat.sh###
###send message from weixin for zabbix monitor### CropID='此处填写上面获取到的CorpID' Secret='此处填写应用的Secret' GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}') PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" function body() { #企业号中的应用id local int AppID=这里填写AgentID #部门成员id,zabbix中定义的微信接收者 local UserID=$1 #部门id,定义了范围,组内成员都可接收到消息 local PartyID=2 #过滤出zabbix传递的第三个参数 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"\""\n" printf '\t},\n' printf '\t"safe":"0"\n' printf '}\n' } /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL## [root@zabbix alertscripts]# chown zabbix.zabbix weixin.sh [root@zabbix alertscripts]# chmod 744 weixin.sh 

测试

[root@zabbix alertscripts]# ./weixin.sh limingfan test test 
{"errcode":0,"errmsg":"ok","invaliduser":""}

注:limingfan为运维部门成员的账号

手机上也收到 

若是通过代理上网的服务器,发现测试代码可以发送到手机上,但是实际发生故障会出现发送失败

那么需要在weixin.sh加上/etc/profile中的代理设置的内容

三.zabbix网页端设置

脚本参数为

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

然后添加一个用于报警的用户

创建触发器动作

操作,恢复操作,Update operation都需设置发送消息到用户weixin

服务器发生故障!
\n
\n告警服务器:{HOSTNAME1}
\n告警服务器IP地址:{HOST.CONN}
\n告警时间:{EVENT.DATE} {EVENT.TIME}
\n告警等级:{TRIGGER.SEVERITY}
\n告警信息: {TRIGGER.NAME} \n告警项目:{TRIGGER.KEY1} \n问题详情:{ITEM.NAME}:{ITEM.VALUE} \n发生: {TRIGGER.NAME}故障! \n当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} \n事件 ID:{EVENT.ID} 服务器故障已恢复! \n \n告警服务器:{HOSTNAME1} \n告警服务器IP地址:{HOST.CONN} \n告警时间:{EVENT.DATE} {EVENT.TIME} \n告警等级:{TRIGGER.SEVERITY} \n告警信息: {TRIGGER.NAME} \n告警项目:{TRIGGER.KEY1} \n问题详情:{ITEM.NAME}:{ITEM.VALUE} {TRIGGER.NAME}已恢复! \n当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} \n事件 ID:{EVENT.ID} 服务器:报警确认! \n \n确认人:{USER.FULLNAME} \n时间:{ACK.DATE} {ACK.TIME} \n确认信息如下:{ACK.MESSAGE} \n问题服务器:{HOSTNAME1} \n问题服务器IP:{HOST.CONN} \n问题详情: {TRIGGER.NAME} \n问题ID:{EVENT.ID}

然后手动触发一次报警

若要其他人也能收到报警信息,则用微信扫描 我的企业,微工作台.

还有就是通讯录一定要添加该成员

#####################################################################################

zabbix3.0 监控mysql服务器性能实现过程 

-->监控思路

先在zabbix主机上面配置好mysql服务器的信息,添加好zabbix自带的Template App MySQL模版,然后去mysql服务器上安装agent,再添加mysql监控脚本。

1,建立mysql host groups组

模板是 zabbix系统提供的,进入 zabbix web 后台,Configuration-->Hosts groups-->点击“Create host group”-->选择template选项卡,选择模板“TemplateApp MySQL,Templdate OS Linux”,最后点击update 即可(032.png)

2,建立hosts

模板是 zabbix系统提供的,进入zabbix web 后台,configuration-->hosts-->点击你的主机 name-->选择template选

项卡,选择模板“Template App MySQL”,最后点击左边的“Add”按钮,最后点击“update”按钮即可(033.png)

3,rpm部署agent客户端

rpm方式安装:

# 添加zabbix帐号

groupadd zabbix

useradd zabbix -g zabbix -s /sbin/nologin

# 下载安装包

wget http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.0-2.el6.x86_64.rpm

rpm -ivh zabbix-agent-3.0.0-2.el6.x86_64.rpm

# 报错信息如下:

[root@db_m1_slave_1 zabbix]# rpm -ivh zabbix-agent-3.0.0-2.el6.x86_64.rpm

warning: zabbix-agent-3.0.0-2.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY                                           

error: Failed dependencies:

         libodbc.so.2()(64bit) is needed by zabbix-agent-3.0.0-2.el6.x86_64

[root@db_m1_slave_1 zabbix]#

# 解决方法:

yum -y install unixODBC

启动agent:

# 启动:

/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf                                                                                                                                   

# 添加开机自启动:

chkconfig  --add zabbix_agentd

4,源码方式agent客户端

tar zxvf zabbix-3.0.2.tar.gz

cd zabbix-3.0.2

./configure --enable-agent --with-mysql

make

make install

# 其它zabbix_agentd.conf配置信息和rpm方式一样                                                                                                                                                

5,开始mysql性能监控

这里可以采用zabbix自带的mysql模版,但是也需要在mysql服务器上准备获取mysql status的脚本chk_mysql.sh,zabbix通过调用这个脚本来获取mysql的运行信息。

在配置文件zabbix_agentd.conf里面添加mysql监控信息:

# vim /etc/zabbix/zabbix_agentd.conf

UserParameter=mysql.version,mysql -V

UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1

UserParameter=mysql.ping,mysqladmin -uzabbix -pys_ipowerlong0418 -P3306 -h127.0.0.1  ping | grep -c alive                                             

添加mysql帐号:

 GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'127.0.0.1' IDENTIFIED BY 'ys_ipowerlong0418';                              

添加check脚本权限:

chmod u+x /usr/local/zabbix/chk_mysql.sh

chown -R zabbix.zabbix /usr/local/zabbix/chk_mysql.sh                                                                                                                                                 

去zabbix服务器上面检查基本mysql服务器信息是否能正常获取到,zabbix_get -s 192.168.1..62 -p10050 -k"system.cpu.load[all,avg15]";:

[root@hch_test_121_12 html]# zabbix_get -s 192.168.1..62 -p10050 -k "system.cpu.load[all,avg15]";                                                                 

0.050000

[root@hch_test_121_12 html]#

接下来准备mysql的运行信息监控,需要准备新的mysql监控脚本chk_mysql.sh,/usr/local/zabbix/chk_mysql.sh:

#!/bin/sh

# -------------------------------------------------------------------------------

# FileName:    check_mysql.sh

# Revision:    1.0

# Date:        2016/04/22

# Author:      tim

# Email:       [email protected]

MYSQL_SOCK="/usr/local/mysql/mysql.sock"

MYSQL_USER='zabbix'

MYSQL_PWD='ys_ipowerlong0418'

MYSQL_HOST='127.0.0.1'

MYSQL_PORT='3306'

ARGS=1

if [ $# -ne "$ARGS" ];then

    echo "Please input one arguement:"

fi

case $1 in

    Uptime)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"`

            echo $result

            ;;

        Com_update)

            result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3`

            echo $result

            ;;

        Slow_queries)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"`

                echo $result

                ;;

    Com_select)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3`

                echo $result

                ;;

    Com_rollback)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3`

                echo $result

                ;;

    Questions)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"`

                echo $result

                ;;

    Com_insert)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3`

                echo $result

                ;;

    Com_delete)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3`

                echo $result

                ;;

    Com_commit)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3`

                echo $result

                ;;

    Bytes_sent)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`

                echo $result

                ;;

    Bytes_received)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3`

                echo $result

                ;;

    Com_begin)

        result=`/usr/local/mysql/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3`

                echo $result

                ;;

                       

        *)

        echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)"

        ;;

esac

脚本准备完后,重启agent,然后在zabbix-server服务器上测试是否可以获取到mysql的status信息:

[root@hch_test_121_12 html]# zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_update]                                                                                                                                 

Warning: Using a password on the command line interface can be insecure.

78055

[root@hch_test_121_12 html]#

[root@hch_test_121_12 html]#

[root@hch_test_121_12 html]# zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_insert]

Warning: Using a password on the command line interface can be insecure.

51332

[root@hch_test_121_12 html]#

6,监控性能视图

监控脚本运行正常后,就会在zabbix-server的host下面的graph里面看到mysql的监控性能视图,monitoringààGraphsààHost(选择mysql服务器)ààGraph(选择mysql选项),可以看到性能监控视图,zabbix自带模版默认有2个性能图,这些图要等运行一段时间后才能画出来:

041.png,MySQL operations:

042.png,MySQL bandwidth:

7,mysqladmin的缺陷

当mysql down了的时候,zabbix监控不到。因为默认的MySQL is down 的触发器的触发条件是mysql.ping.last(0),mysql.ping的实现方式是UserParameter=mysql.ping,mysqladmin -uzabbix -pys_ipowerlong0418-P3306 -h127.0.0.1  ping | grep -c alive,当mysql服务停止了后,mysqladmin执行报错是一推错误信息返回不了数字0,所以zabbix触发不了,所以zabbix界面会看到problems但是不会触发报警动作的,也就意味着你不会第一时间接到email、短信、电话报警了。

所以必须改正不能用mysqladmin这种方式,想到了用telnet mysql端口的方式来判断,如下所示:UserParameter=mysql.ping,netstat -ntpl |grep 3317 |grep mysql |wc|awk '{print $1}'

3317就是mysql运行的端口号,这样当mysqlis alive那么返回为1,当mysql is down返回为0,就满足了zabbix的mysql.ping.last(0)=0的触发条件了。

修改zabbix_agentd.conf配置信息:

# 先移除默认的配置

mv /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf /usr/local/zabbix/

# 添加新的配置

vim /etc/zabbix/zabbix_agentd.conf

UserParameter=mysql.version,mysql -V

UserParameter=mysql.status[*],/usr/local/zabbix/chk_mysql.sh $1

UserParameter=mysql.ping,netstat -ntpl |grep 3317 |grep mysql |wc |awk '{print $1}'                                                                                                                   

8,报错汇总记录

8.1报错信息

[root@db_m1_slave_1 zabbix-3.0.2]# tail -f/var/log/zabbix/zabbix_agentd.log

……

17336:20160422:163813.319 no active checkson server [192.168.121.12:10051]: host [hch_test_121_12] not found

 17336:20160422:164013.503 no active checks onserver [192.168.121.12:10051]: host [hch_test_121_12] not found

解决办法:

出现该错误的原因是一般是zabbix_agentd.conf里面的Hostname和前端zabbix web里面的配置不一样所造成的,即在zabbix web页面Monitoring->Configuration->Hosts 页面的Host Name和zabbix_agentd.conf里面的Hostname要一样。 

再看后台日志信息,正常如下:

[root@db_m1_slave_1 zabbix-3.0.2]# tail -f/var/log/zabbix/zabbix_agentd.log

 17468:20160422:164350.284 IPv6 support:          YES

 17468:20160422:164350.284 TLS support:           YES

 17468:20160422:164350.284**************************

 17468:20160422:164350.284 using configurationfile: /etc/zabbix/zabbix_agentd.conf

 17468:20160422:164350.293 agent #0 started[main process]

 17469:20160422:164350.294 agent #1 started[collector]

 17470:20160422:164350.294 agent #2 started[listener #1]

 17471:20160422:164350.294 agent #3 started[listener #2]

 17472:20160422:164350.295 agent #4 started[listener #3]

 17473:20160422:164350.295 agent #5 started[active checks #1]

8.2问题is not suitable for value type [Numeric (unsigned)] and datatype [Decimal]

12394:20160422:200640.676 error reason for "db_master_1:mysql.status[Questions]" changed: Received value [Warning: Using a password on the command line interface can be insecure.18463244] is not suitable for value type [Numeric (float)]

 12393:20160422:200642.678 error reason for "db_master_1:mysql.status[Uptime]" changed: Received value [Warning: Using a password on the command line interface can be insecure.580661] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]

后台zabbix服务器日志:

[root@hch_test_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_update]

Warning: Using a password on the command line interface can be insecure.

92315

[root@hch_test_121_12 ~]#

解决办法是,在zabbix客户端,添加用户名密码配置,这样避免shell密码外泄也不会报错,(这里报这种错误是因为返回的结果集中有字符串提醒信息,而后台zabbix的item的是decimal所以存储不进去报错):

vim /usr/local/mysql/my.cnf

[mysqladmin]

user=zabbix

password=ys_ipowerlong0418

然后重启zabbix_agent

然后在后台zabbix测试,没有报多余的信息:

[root@hch_test_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.1..71 -p10050 -k mysql.status[Com_insert]

58272

[root@hch_test_121_12 ~]#

之后再看zabbix_server后台日志,正常了不会报错了,如下所示:

12855:20160422:233520.636 item "db_master_2:mysql.status[Bytes_received]" became supported

 12857:20160422:233521.636 item "db_master_2:mysql.status[Bytes_sent]" became supported

 12854:20160422:233522.637 item "db_master_2:mysql.status[Com_begin]" became supported

 12856:20160422:233523.638 item "db_master_2:mysql.status[Com_commit]" became supported

 12857:20160422:233524.641 item "db_master_2:mysql.status[Com_delete]" became supported

 12855:20160422:233525.642 item "db_master_2:mysql.status[Com_insert]" became supported

 12856:20160422:233526.642 item "db_master_2:mysql.status[Com_rollback]" became supported

 12854:20160422:233527.643 item "db_master_2:mysql.status[Com_select]" became supported

 12855:20160422:233528.645 item "db_master_2:mysql.status[Com_update]" became supported

 12857:20160422:233529.646 item "db_master_2:mysql.status[Questions]" became supported

 12856:20160422:233530.646 item "db_master_2:mysql.status[Slow_queries]" became supported

8.3报错Check access restrictions in Zabbix agent configuration:

[root@hch_test_121_12 alertscripts]#zabbix_get -s 192.168.1..72 -p10050 -k "system.hostname";

zabbix_get [17730]: Check accessrestrictions in Zabbix agent configuration

[root@hch_test_121_12 alertscripts]#

解决:

配置文件坏了,copy一个备份的过来,改下,重启agent。

在zabbix服务器上测试:

[root@hch_test_121_12 alertscripts]#/usr/local/zabbix/bin/zabbix_get -s 192.168.1.63 -p10050 -k mysql.ping

(Not all processes could be identified,non-owned process info

 willnot be shown, you would have to be root to see it all.)

0

[root@hch_test_121_12 alertscripts]#

去mysql服务器上赋予s权限

[root@db_m1_slave2 soft]# chmod +s /bin/netstat

You have new mail in /var/spool/mail/root

[root@db_m1_slave2 soft]#

8.4 zabbix_get [1291]: Get value error

[root@hch_test_121_12 ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.1.21 -p10050 -k system.info

zabbix_get [1291]: Get value error: cannotconnect to [[10.254.1.21]:10050]: [111] Connection refused

[root@hch_test_121_12 ~]#

Centos7安装Zabbix4.0步骤

官方搭建zabbix4.0的环境要求:

1. 环境搭建LAMP 

 前提Centos系统安装完成:  确认一下:

1
2
cat  / etc / redhat - release  #  查看CentOS版本 
cat  / proc / version          #查看存放与内核相关的文件

1.1 搭建之前的操作

1.1.1 升级系统组件到最新的版本

1
yum  - y update

1.1.2 关闭selinux 

1
vi  / etc / selinux / config     #将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效

1
setenforce  0        #临时关闭命令
1
getenforce          #检测selinux是否关闭,Disabled 为关闭

1.1.3 关闭防火墙

1
firewall - cmd  - - state     #查看默认防火墙状态,关闭后显示not running,开启后显示running

1
2
systemctl stop firewalld.service     #临时关闭firewall
systemctl disable firewalld.service  #禁止firewall开机启动

1.2 搭建LAMP环境

 1.2.1 安装所需所有软体仓库

 Zabbix是建立在LAMP或者LNMP环境之上,在此为了方便就使用yum安装LAMP环境。

1
yum install  - y httpd mariadb - server mariadb php php - mysql php - gd libjpeg *  php - ldap php - odbc php - pear php - xml php - xmlrpc php - mhash
1
rpm  - qa httpd php mariadb             #安装完成后检查应用版本

1.2.2 编辑httpd

1
vi  / etc / httpd / conf / httpd.conf
1
2
ServerName www.zabbixyk.com       #修改为主机名
DirectoryIndex index.html index.php    # 添加首页支持格式 

1.2.3 编辑配置php,配置中国时区

1
vi  / etc / php.ini
1
date.timezone  =  PRC    # 配置时区  

1.2.4 启动httpd,mysqld

1
2
3
4
systemctl start httpd    #启动并加入开机自启动httpd
systemctl enable httpd
systemctl start mariadb   #启动并加入开机自启动mysqld
systemctl enable mariadb
1
2
ss  - anplt | grep httpd    #查看httpd启动情况,80端口监控表示httpd已启动
ss  - naplt | grep mysqld   #查看mysqld启动情况,3306端口监控表示mysqld已启动 

1.2.5 创建一个测试页,测试LAMP是否搭建成功

1
vi  / var / www / html / index.php  #创建一个测试页,并编辑
1
2
3
<?php
phpinfo()
?>

 本地测试:

1
curl http: / / 127.0 . 0.1  - I          #本地测试

1.2.6 初始化mysql数据库,并配置root用户密码

1
mysqladmin  - u root password ykadmin123            #设置数据库root密码

1
2
3
4
5
mysql  - u root  - p         #root用户登陆数据库
CREATE DATABASE zabbix character  set  utf8 collate utf8_bin;        #创建zabbix数据库(中文编码格式)
GRANT  all  ON zabbix. *  TO  'zabbix' @ '%'  IDENTIFIED BY  'ykadmin123' ;   #授予zabbix用户zabbix数据库的所有权限,密码ykadmin123
flush privileges;     #刷新权限
quit                  #退出数据库   

1
vi  / var / www / html / index.php          #修改测试页内容,测试zabbix用户是否能够登陆数据库,这个环节很重要
1
2
3
4
5
6
<?php
$link = mysql_connect( '172.18.20.224' , 'zabbix' , 'ykadmin123' ); 
if ($link) echo  "<h1>Success!!</h1>" ;    #显示Success表示连接数据库成功
  else  echo  "Fail!!" ;
mysql_close();
?>

出现上图则PHP连通数据库完成。

为保证zabbix用户也可以登录数据库,若出现本地无法登录情况,解决方式如下:

1
2
3
mysql  - u root  - p   #使用root账户登录数据库;
select user,host  from  mysql.user;    #有空用户名称占用导致本地无法登录远程可登录
drop user ''@localhost;   #删除空用户  

2. 安装zabbix

2.1  安装依赖包 + 组件

1
yum  - y install net - snmp net - snmp - devel curl curl - devel libxml2 libxml2 - devel libevent - devel.x86_64 javacc.noarch  javacc - javadoc.noarch javacc - maven - plugin.noarch javacc *

1
2
3
4
5
6
7
yum install php - bcmath php - mbstring  - #安装php支持zabbix组件
 
rpm  - ivh http: / / repo.zabbix.com / zabbix / 4.0 / rhel / 7 / x86_64 / zabbix - release - 4.0 - 1.el7 .noarch.rpm   #会自动生成yum源文件,保证系统可以上网
 
yum install zabbix - server - mysql zabbix - web - mysql  - y     #安装zabbix组件
 
zcat  / usr / share / doc / zabbix - server - mysql - 4.0 . 0 / create.sql.gz | mysql  - uzabbix  - - 172.18 . 20.224  zabbix    #导入数据到数据库zabbix中(最后一个zabbix是数据库zabbix),且因为用户zabbix是%(任意主机),所以登录时需要加上当前主机ip(-h 172.18.20.224),密码是用户zabbix登陆密码ykadmin123

1
2
vi   / etc / zabbix / zabbix_server.conf    #配置数据库用户及密码
grep  - '^' [a - Z]  / etc / zabbix / zabbix_server.conf    #确认数据库用户及密码

1
vi  / etc / httpd / conf.d / zabbix.conf      / / 修改时区
1
# php_value date.timezone Europe/Riga 变更成php_value date.timezone Asia/Shanghai
1
2
systemctl enable zabbix - server  # #启动并加入开机自启动zabbix-server
systemctl start zabbix - server

1
netstat  - anpt | grep zabbix           / / 监听在 10051 端口上,如果没监听成功,可重启zabbix - server服务试试

建议重启服务器,再继续。

2.2 web界面安装zabbix

如果以上步骤无误,现在可以使用web打开   

1
http: / / 172.18 . 20.224 / zabbix   / / 注意这里IE浏览器打不开,本次测试使用chrome浏览器

 

....

猜你喜欢

转载自www.cnblogs.com/capable/p/10697332.html
今日推荐