Linux监控平台搭建(二)

Name Version
Centos 7 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
zabbix zabbix-3.4.2
mysql mysql-5.6.35
httpd httpd-2.4.33
php php-7.1.6

添加自定义模板

可以自定义一个常用模板,方便给新增主机添加监控项目

自定义aming模板

自定义模板放到Templates组

定义成功

把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到zyshan模板里

选择适合的规则加入到自定义模板

在其他模板里把选择好的规则复制到自定义模板

在其他模板里复制规则,但是复制不了自动发现的规则,但我们又想要这个规则。有2个办法:第一个方法是导出包含想要规则的模板,编辑里面的内容,把想要的规则留下,不想要的删除,工作量大,容易出错,不建议这么做。

第二个方法则是:链接模板

链接模板不能删除不想要的规则,因为它是链接了其他模板的;如果想删除不要的规则,可以取消链接但不要清理,这样就与其他模板断开可以自由删除不用的规则了。

处理图形中的乱码

把自定义模板导入客户端

设置为中文后,zabbix图形的中文文字会显示小方框,由于原字体不支持中文,我们可以到win系统字库中拷贝一个中文字库过来,软连接到Linux里面去就可以解决这个问题了。

vim /usr/share/zabbix/include/defines.inc.php //搜索ZBX_FONTPATH

  [root@zyshanlinux-001 ~]# vim /usr/share/zabbix/include/defines.inc.php
  ​
  define('ZBX_WIDGET_ROWS', 20);
  ​
  define('ZBX_FONTPATH',                          realpath('fonts')); // where to search for font (GD > 2.0.18)
  define('ZBX_GRAPH_FONT_NAME',           'graphfont'); // font file name
  define('ZBX_GRAPH_LEGEND_HEIGHT',       120); // when graph height is less then this value, some legend will not show up

它定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts,而字体文件为“ZBX_GRAPH_FONT_NAME”所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont

windows字体路径为“C:\Windows\Fonts\”,找到“simfang.ttf”(其实就是那个仿宋简体),先把它复制到桌面上,然后上传到linux的/usr/share/zabbix/fonts/,并且改名为graphfont.ttf

只要是中文字库就可以的。

服务端导入字库并做好软链接

链接成功,可以在浏览器中看到原来的方块字变成中文字体

可以增加图形

增加图形后添加相应的规则就可以了。

自动发现

由于服务端的iptables规则没关闭所以链接不是客户端,必须关闭先

  [root@zyshanlinux-001 fonts]# service iptables stop

服务端和客户端都重启zabbix服务,刷新浏览器就可以看到图形变化了。

  [root@zyshanlinux-001 fonts]# systemctl restart zabbix-server
  [root@zyshanlinux-02 ~]# systemctl restart zabbix-agent

可以到检测中的图形去看数据

修改图形的颜色和绘图风格等元素

添加自定义监控项目

  • 需求:监控某台web的80端口连接数,并出图

  • 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现

对于第一步,需要到客户端定义脚本

  [root@zyshanlinux-02 ~]# vim /usr/local/sbin/estab.sh
  ​
  #!/bin/bash
  ##获取80端口并发连接数
  netstat -ant |grep ':80 ' |grep -c ESTABLISHED

赋予定义的脚本权限

  [root@zyshanlinux-02 ~]# chmod 755 /usr/local/sbin/estab.sh

客户端上编辑配置文件

  [root@zyshanlinux-02 ~]# vim /etc/zabbix/zabbix_agentd.conf

增加UnsafeUserParameters=1 //表示使用自定义脚本UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh

重启zabbix-agent服务

  [root@zyshanlinux-02 ~]# systemctl restart zabbix-agent

验证自定义脚本有没有识别:

首先到服务端验证,执行命令;反馈0就是识别成功了,0代表没有链接,否则就会提示其他。

  [root@zyshanlinux-001 ~]# zabbix_get -s 192.168.106.130 -p10050 -k 'my.estab.count'
  0

zabbix_get命令,-s接IP,-p接端口(默认10050),-k接键值

然后在zabbix监控中心(浏览器)配置增加监控项目

主动还是被动式

创建图形

创建触发器告警

总结:获取需求后,通过某种方式脚本或其他取得需求的参数,到监控中心创建监控项,创建图形,创建触发器警告,从而形成监控目的,达到图形监控的需求。

配置邮件告警

1、邮箱设置:

  • 使用163或者QQ邮箱发告警邮件

  • 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务

  • 开启并记录授权码

2、监控中心设置邮件告警

  • “管理”,“报警媒介类型”,“创建媒体类型”

  • {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

到服务端的配置文件里看脚本放置的路径

到该路径创建报警脚本mail.py

  [root@zyshanlinux-001 ~]# vi /etc/zabbix/zabbix_server.conf
  +++++++++++++++++++++++++++++++++++++++++++++++++++++
  ### Option: AlertScriptsPath
  #       Full path to location of custom alert scripts.
  #       Default depends on compilation options.
  #
  # Mandatory: no
  # Default:
  # AlertScriptsPath=${datadir}/zabbix/alertscripts
  ​
  AlertScriptsPath=/usr/lib/zabbix/alertscripts
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++
  [root@zyshanlinux-001 ~]# ls /usr/lib/zabbix/alertscripts
  [root@zyshanlinux-001 ~]# cd !$
  cd /usr/lib/zabbix/alertscripts
  [root@zyshanlinux-001 alertscripts]#

该脚本是python脚本

脚本内容参考:https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

  #!/usr/bin/env python
  #-*- coding: UTF-8 -*-
  import os,sys
  reload(sys)
  sys.setdefaultencoding('utf8')
  import getopt
  import smtplib
  from email.MIMEText import MIMEText
  from email.MIMEMultipart import MIMEMultipart
  from  subprocess import *
  ​
  def sendqqmail(username,password,mailfrom,mailto,subject,content):
      gserver = 'smtp.qq.com'
      gport = 25
  ​
      try:
          msg = MIMEText(unicode(content).encode('utf-8'))
          msg['from'] = mailfrom
          msg['to'] = mailto
          msg['Reply-To'] = mailfrom
          msg['Subject'] = subject
  ​
          smtp = smtplib.SMTP(gserver, gport)
          smtp.set_debuglevel(0)
          smtp.ehlo()
          smtp.login(username,password)
  ​
          smtp.sendmail(mailfrom, mailto, msg.as_string())
          smtp.close()
      except Exception,err:
          print "Send mail failed. Error: %s" % err
  ​
  ​
  def main():
      to=sys.argv[1]
      subject=sys.argv[2]
      content=sys.argv[3]
  ##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
      sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)
  ​
  if __name__ == "__main__":
      main()
      
      
  #####脚本使用说明######
  #1. 首先定义好脚本中的邮箱账号和密码
  #2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"

脚本中只需要改2行:

gserver = 'smtp.qq.com' 》》》 gserver = 'smtp.163.com'

sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content) 》》》 自己的实际邮箱

第一个是邮箱,第二个是授权密码,第三个还是邮箱

接着就是给脚本改权限

  [root@zyshanlinux-001 alertscripts]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py

命令行给邮箱发脚本

  [root@zyshanlinux-001 alertscripts]# python mail.py 不告诉你@163.com "test" "11111111111111111111111"

网页版邮箱成功收到自己发给自己的邮件

创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”

注意用户的权限,如果没有需要到用户组去设置权限;单独在用户这里设置是不行的。

用户组修改了权限,用户这边的权限也跟着改变了

设置动作,“配置”,“动作”,“创建动作”,名称写“发邮件”(自定义)

“操作”页面,内容如下

  HOST:{HOST.NAME} {HOST.IP}
  TIME:{EVENT.DATE}  {EVENT.TIME} 
  LEVEL:{TRIGGER.SEVERITY} 
  NAME:{TRIGGER.NAME}
  messages:{ITEM.NAME}:{ITEM.VALUE}
  ID:{EVENT.ID}

恢复操作,即是恢复正常也要发个邮件告知一下

配置完成的状态

总结:邮箱的参数设置授权码,python脚本发邮件测试(路径不能错),配置监控中心用户的权限(要在用户组里该改权限)、触发媒介参数要对,邮箱地址不能写错(邮件是自己给自己发),还有动作触发等。最后要确认你设置的用户权限一定要添加到位。

测试告警

第一种测试方法:

我们用系统负载做测试,故意把触发器改为小于1就警告,一旦警告就发邮件报警。

等待1分钟左右,监控中心的监测中仪表盘的内容就由正常变为异常了

颜色发生改变,问题是系统负载的问题

异常发出警告,发送报警邮件,显示发送成功

到网页邮箱,的确是收到了告警邮件

修改触发器大于1,让不再告警,恢复正常

稍等片刻,查看监控仪表盘恢复正常

收到恢复正常的邮件

可以看一下监控中心的监测中的问题画面,有记录每次报警信息和恢复的状态记录。

第二种测试方法:

把客户端的zabbix-agent服务关闭

  [root@zyshanlinux-02 ~]# systemctl stop zabbix-agent
  [root@zyshanlinux-02 ~]# ps aux |grep zabbix
  root      5177  0.0  0.0 112720   968 pts/0    R+   18:30   0:00 grep --color=auto zabbix

触发器被触发规则

客户端重新启动zabbix-agent服务

  [root@zyshanlinux-02 ~]# systemctl start zabbix-agent
  [root@zyshanlinux-02 ~]# ps aux |grep zabbix
  zabbix    5187  0.0  0.0  82780  1280 ?        S    18:36   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
  zabbix    5188  0.0  0.0  82780  1324 ?        S    18:36   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
  zabbix    5189  0.0  0.0  82780  1844 ?        S    18:36   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
  zabbix    5190  0.0  0.0  82780  1844 ?        S    18:36   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
  zabbix    5191  0.0  0.0  82780  1844 ?        S    18:36   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
  zabbix    5192  0.0  0.1  82912  2240 ?        S    18:36   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
  root      5194  0.0  0.0 112720   972 pts/0    R+   18:36   0:00 grep --color=auto zabbix

监控中心仪表盘状态恢复正常,收到恢复邮件

总结:测试告警邮件,就是反复修改触发器的规则,让它处于正常和异常之间,令邮件反复触发,达到我们想要的效果。

扩展:

zabbix监控交换机(思科) http://tryrus.blog.51cto.com/10914693/1789847zabbix远程执行命令 http://www.ywnds.com/?p=6610zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬) http://www.fblinux.com/?p=616Prometheus入门https://www.hi-linux.com/posts/25047.html使用Prometheus+grafana打造高逼格监控平台http://blog.51cto.com/youerning/2050543OpenFalcon是一款企业级、高可用、可扩展的开源监控解决方案https://book.open-falcon.org/zh_0_2/

猜你喜欢

转载自blog.csdn.net/zhengyshan/article/details/81264056