zoukankan      html  css  js  c++  java
  • 总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 为关闭

    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 from=18752735985@163.com

    set smtp=smtp.163.com

    set smtp-auth-user=18752735985@163.com

    set smtp-auth-password=abc123

    set smtp-auth=login

    :wq

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

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

     

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

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

    #!/bin/bash

    #send mail

    messages=`echo $3 | tr ' ' ' '`

    subject=`echo $2 | tr ' ' ' '`

    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 18752735985@163.com "主题" "内容"     //测试发邮件脚本是否可以正常工作

     

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

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

     

    名称:Mail-Test

    类型:脚本

    脚本名称:mailx.sh

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

    {ALERT.SENDTO}

    {ALERT.SUBJECT}

    {ALERT.MESSAGE}

     

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

     

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

    收件人:weisheng213@126.com

    其它默认-保存

     

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

    名称: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 '{
    '
            printf '	"touser": "'"$UserID""",
    "
            printf '	"toparty": "'"$PartyID""",
    "
            printf '	"msgtype": "text",
    '
            printf '	"agentid": "'" $AppID """,
    "
            printf '	"text": {
    '
            printf '		"content": "'"$Msg"""
    "
            printf '	},
    '
            printf '	"safe":"0"
    '
            printf '}
    '
    }
    /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

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

    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 ~]#

    魅力男神
  • 相关阅读:
    Java核心技术-映射
    Java核心技术-具体的集合
    Java核心技术-继承
    Spring MVC 起步
    最小化Spring XML配置
    装配Bean
    Bean和Spirng模块
    Spring入门
    git学习笔记
    CISCN2018-WP
  • 原文地址:https://www.cnblogs.com/capable/p/10697332.html
Copyright © 2011-2022 走看看