设为首页 收藏本站
查看: 970|回复: 0

[经验分享] zabbix监控mysql以及报警(二)终

[复制链接]

尚未签到

发表于 2018-9-27 12:29:48 | 显示全部楼层 |阅读模式
  Zabbix部署 监控数据库 报警服务(二) 终
  接着zabbix(一)接着部署
  配置过一段时间后,观察下监控图效果出来了没
DSC0000.jpg

DSC0001.jpg

DSC0002.jpg

  zabbix3.0 server已自带mysql的模板了,只需配置好agent客户端,然后在web端给主机增加模板就行了。
  Zabbix_agent客户端操作
  (1)首先在客户端的mysql里添加权限,即本机使用zabbix账号连接本地的mysql
mysql> grant all on *.* to zabbix@'localhost' identified by '123456';  
Query OK, 0 rows affected, 1 warning (0.02 sec)
  

  
mysql> flush privileges;
  
Query OK, 0 rows affected (0.03 sec)
  (2)在zabbix_agent服务目录下创建.my.cnf 连接文件
  zabbix安装目录是/usr/local/zabbix
[root@localhost etc]# pwd  
/usr/local/zabbix/etc
  
[root@localhost etc]# cat .my.cnf
  
[client]
  
user=zabbix
  
password=123456
  注意:
  如果在数据库grant授权时,针对的是localhost,这个.my.cnf里面就不用加host参数了【如上配置】
  但如果grant授权时针对的是本机的ip(如192.168.31.250),那么在.my.cnf文件里就要加上host参数进行指定了
  即在.my.cnf文件就要加上:
  host=192.168.0.7
  socket= /usr/local/mysql/mysql.sock
  user=zabbix
  password=123456
  (3)配置MySQL的key文件
  这个可以从zabbix3.2安装时的解压包里拷贝过来
  从zabbix_server服务端安装时解压目录
  /root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf  拷贝到zabbix_agent客户端上的/usr/local/zabbix/etc/zabbix_agentd.conf.d/ 目录下的
[root@localhost zabbix]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/  
[root@localhost zabbix_agentd.conf.d]# pwd
  
/usr/local/zabbix/etc/zabbix_agentd.conf.d
  
[root@localhostzabbix_agentd.conf.d]#,cp,/usr/src/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf ./
  
[root@localhost zabbix_agentd.conf.d]# ls userparameter_mysql.conf
  
userparameter_mysql.conf
  然后查看 userparameter_mysql.conf 文件,看到类似 HOME=/var/lib/zabbix 的路径设置,把路径全都替换为 /usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目录路径。
  另外,注意userparameter_mysql.conf 文件里的mysql命令路径(提前做好mysql的系统环境变量,以防mysql命令不被系统识别)
  如下:
[root@server1 zabbix_agentd.conf.d]# cat userparameter_mysql.conf  # For all the following commands HOME should be set to the directory that has .my.cnf file with password information.
  # Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
  # Key syntax is mysql.status[variable].
  UserParameter=mysql.status
  • ,echo "show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ mysql -N | awk '{print $$2}'

      # Flexible parameter to determine database or table>  # Key syntax is mysql.size[,,].
      # Database may be a database name or "all". Default is "all".
      # Table may be a table name or "all". Default is "all".
      # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
      # Database is mandatory if a table is specified. Type may be specified always.
      # Returns value in bytes.
      # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
      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=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/usr/local/zabbix/etc/ mysql -N'
      UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/ mysqladmin ping | grep -c alive
      UserParameter=mysql.version,mysql -V
    DSC0003.jpg

      (4)按照上面修改完之后检查一下,然后重启zabbix_agent
    DSC0004.jpg

      接着在zabbix_server服务端进行命令行测试[下面的192.168.0.7是客户端的ip]
      若下面报错
      [root@localhost zabbix]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.7 -p 10050 -k "mysql.status[Uptime]"
      sh: mysql: command not found
      解决方法:
      在userparameter_mysql.conf中关于mysql命令前面添加绝对路径
    [root@localhost /]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.7 -p 10050 -k "mysql.status[Uptime]"  
    169
      如果出现类似这一串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获取数据
      获取负载
      # zabbix_get -s 192.168.31.250 -p 10050 -k "system.cpu.load[all,avg15]"
      获取主机名
      # zabbix_get -s 192.168.31.250 -p 10050 -k "system.hostname"
      (5)登录zabbix监控界面,在“配置”-“模板”里可以看到自带的mysql监控模板
    DSC0005.jpg

      在相应主机监控配置里添加mysql的监控模版(zabbix自带的)即可。
    DSC0006.jpg

      下面是mysql监控项的效果图:
      【1】监控mysql的带宽:在zabbix前端可以实时查看mysql发送接收的字节数。其中bytes received表示从所有客户端接收到的字节数,bytes sent表示发送给所有客户端的字节数。
      mysql数据库已经成功检测上
    DSC0007.jpg

      监控mysql网卡情况
    DSC0008.jpg

      zabbix3.2.1邮件报警设置:
      Zabbix监控服务端、客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常。
      在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱。
      具体操作:
      以下操作在Zabbix监控服务端进行
      下载sendemail软件
      然后安装那两个依赖包,命令是:
    [root@localhost ~]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y  解压软件,然后将sendemail复制到/usr/local/bin/目录下,并加上可执行权限,然后修改用户和群组。
    [root@localhost src]# tar zxf sendEmail-v1.56.tar.gz  
    [root@localhost src]# cd sendEmail-v1.56/
      
    [root@localhost sendEmail-v1.56]#  cp sendEmail /usr/local/bin/sendEmail
      
    [root@localhost sendEmail-v1.56]# chown zabbix:zabbix /usr/local/bin/sendEmail
      
    [root@localhost sendEmail-v1.56]# ll /usr/local/bin/sendEmail
      
    -rwxr-xr-x. 1 zabbix zabbix 80213 Jan  4 17:52 /usr/local/bin/sendEmail
      进入/usr/local/zabbix/share/zabbix/alertscripts/目录执行# /usr/local/bin/sendEmail -h查看sendEmail的帮助
      #/usr/local/bin/sendEmail -f xinwang1360@163.com -t xinwang1360@163.com -s smtp.163.com -u "hello" -o message-content-type=html -o message- -xu xinwang1360@163.com -xp 密码 -m "chai xin wang wei wu "
      命令主要选项说明:
      /usr/local/bin/sendEmail                     #命令主程序
      -f  xinwang1360@163.com                        #发件人邮箱
      -t xinwang1360@163.com                           #收件人邮箱
      -s smtp.163.com                           #发件人邮箱的smtp服务器
      -u "我是邮件主题"                               #邮件的标题
      -o message-content-type=html          #邮件内容的格式,html表示它是html格式
      -o message-charset=utf8                   #邮件内容编码
      -xu xinwang1360@163.com                 #发件人邮箱的用户名
      -xp 密码                          #发件人邮箱密码
      -m "我是邮件内容"                             #邮件的具体内容
    DSC0009.jpg

      发送成功验证效果 效果完成
    DSC00010.jpg

      然后在这个目录下创建报警脚本sendmail.sh
      [root@mysqla alertscripts]# vi mail.sh
      下面是脚本内容(涂颜色部分是你的邮箱和密码,-f和-xu参数后面跟邮箱,-xp后面跟授权码)
      #!/bin/bash
      to=$1
      subject=$2
      body=$3
      /usr/local/bin/sendEmail -f xinwang1360@163.com -t xinwang1360@163.com -s smtp.163.com -u "hello" -o message-content-type=html -o message-charset=utf8 -xu xinwang1360@163.com -xp 密码 -m "chai xin wang wei wu "
    DSC00011.jpg

      如果在配置过程中出现错误可以有效快速解决 如下
      at /usr/local/bin/sendEmail line 1906.
      invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415
      注:进行发送邮件测试时,出现了第一个报错
      原因是sendemail软件和perl5里面的ssl版本不兼容导致的,通过修改sendemail里面的内容可以解决这个问题。
      解决方法:
      在sendemail中1906行的内容,从
    if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {  修改为
      if (! IO::Socket::SSL->start_SSL($SERVER)) {
    DSC00012.jpg

      即不指定SSL的版本,让程序来自己选择
      不管你使用的是163/126邮箱还是qq邮箱,你都必须开通pop3服务,而且126/qq邮箱还要求使用第三方客户端发送邮件是必须使用授权码登录,使用账号密码验证时,会出现下面图片中的错误。
      sendEmail[5102]: ERROR => ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.
      至于邮箱的授权码,自己登录126邮箱去设置就好。
      经过上面两个问题的处理后就可以正常发送邮件如下所示显示成功提示
      上面的邮件脚本配置好后,就要在web端添加报警媒介,在web页面的管理,报警媒介类型页面,点击右边的创建媒体类型
    DSC00013.jpg

      进入创建页面,然后输入名称“邮件报警脚本”,类型选择脚本,名称选择mail.sh,点击添加按钮,添加三个脚本参数,分别是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分别对于mail.sh中的to、subject和body。添加完成后点下面的添加按钮,我们的报警媒介就创建完成了
    DSC00014.jpg

    DSC00015.jpg

      创建好报警媒介后,就需要将报警媒介关联到我们的用户。点击管理,用户,然后选择我们的用户admin也可新建一个用户,点击用户名就进入到用户配置界面。点击报警媒介,然后点添加,选择我们上一步创建的邮件报警脚本,输入收件人,选择报警时间和类型,然后点击添加,就将创建好的报警媒介关联到我们的用户上面了。
    DSC00016.jpg

    DSC00017.jpg

    DSC00018.jpg

      现在需要做的是,创建一个触发动作,即系统出现故障时,触发这个动作,然后给我们的邮箱发送报警邮件。点击配置,选择动作,然后点击右边的创建动作。
      在动作这一页名称中写入我们定义的动作名以及触发条件
    DSC00019.jpg

    DSC00020.jpg

      步骤是1-3,也即是从1开始到3结束。一旦故障发生,就是执行Email.sh脚本发生报警邮件给zabbix用户。
      假如故障持续了1个小时,它也只发送3次,第1-3次(即前3次)邮箱发送给zabbix用户,时间间隔为0秒。
      如果改成1-0,0是表示不限制.无限发送
      设置“恢复操作”
    DSC00021.jpg

      添加好以后就可以看到我们添加的动作名,以及该动作已启用的状态。
    DSC00022.jpg

      最后,点击”报表“->”动作日志“,可以看到触发动作的次数
    DSC00023.jpg




  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-602816-1-1.html 上篇帖子: MySQL自动化运维平台建设 下篇帖子: MySQL(mysql 5.7)用户密码的管理
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表