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

[经验分享] zabbix 监控部署(下)

[复制链接]

尚未签到

发表于 2019-1-20 08:56:41 | 显示全部楼层 |阅读模式
  在之前的zabbix 监控部署(上) 这篇博客中,主要是使用了源码编译安装的方式,在实际的生产中,如果没有特殊要求,也可以直接使用yum 安装。这篇博文主要是使用yum方式通过salt安装的一个简单示例,同时介绍如何自定义监控项。
  

  选择yum源和安装版本
  由于zabbix每六个月会发布一个新的稳定版本,在此期间,还会发布长期支持版LTS (Long Term Support), 长期支持版本往往有较长时间的支持,遇到了问题也能更容易解决,所以如果使用yum安装的方式,建议使用LTS版本。目前的LTS版本是3.0, 在不久之后将会推出4.0的LTS版本,所以这里选择使用zabbix3.0最为示例。系统版本为CentOS7.2。
  

  如果使用手动安装,需要添加3.0的yum源:
yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm  使用salt安装的sls文件(仅供参考):

zabbix-server-rhel:
  file.managed:
    - name: /tmp/zabbix-release-3.0-1.el7.noarch.rpm
    - source: salt://zabbix/files/zabbix-release-3.0-1.el7.noarch.rpm
  cmd.run:
    - name: rpm -i /tmp/zabbix-release-3.0-1.el7.noarch.rpm
    - unless: test -f /etc/yum.repos.d/zabbix.repo
zabbix-server-install:
  pkg.installed:
    - pkgs:
      - httpd
      - mariadb-server
      - gcc  
      - gcc-c++
      - glibc
      - mariadb-devel
      - libxml2-devel
      - libcurl
      - curl  
      - libcurl-devel
      - fping
      - net-snmp
      - net-snmp-libs
      - net-snmp-utils  
      - net-snmp-devel
      - libssh2-devel
      - OpenIPMI-devel
      - java-1.8.0-openjdk-devel
      - zabbix-server-mysql
      - zabbix-agent
      - zabbix-web
      - zabbix-web-mysql
      - zabbix-get
    - require:
      - cmd: zabbix-server-rhel
zabbix-db-config:
  file.managed:
    - name: /etc/my.cnf
    - source: salt://zabbix/files/my.cnf
  service.running:
    - name: mariadb
    - enable: True
    - require:
      - pkg: zabbix-server-install
  cmd.run:
    - name: mysql -e "DROP USER ''@'localhost';" && mysql -e "DROP USER ''@'$(hostname)'" && mysql -e "DROP DATABASE test" && mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" && mysql -e " create database zabbix;grant all on zabbix.* to zabbix@localhost identified by'zabbix';" &&  mysql -e "UPDATE mysql.user SET Password = PASSWORD('zabbix') WHERE User = 'root';" && mysql -e "FLUSH PRIVILEGES"
    - onlyif: mysql -e "show databases;"
    - require:
      - service: zabbix-db-config
zb-server-db-import:
  cmd.run:
    - name: zcat /usr/share/doc/zabbix-server-mysql-*/create.sql.gz | mysql zabbix -uzabbix -pzabbix
    - unless: "mysql -uzabbix -pzabbix -e 'select alias from zabbix.users;'"
    - require:
      - cmd: zabbix-db-config
zb-web-config:
  file.managed:
    - name: /etc/httpd/conf.d/zabbix.conf
    - source: salt://zabbix/files/zabbix.conf
    - user: root
    - group: root
    - mode: 644
zb-web-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: zb-web-config
zb-agent-service:
  service.running:
    - name: zabbix-agent
    - enable: True
    - reload: True
zb-server-service:
  cmd.run:
    - name: mkdir -p /etc/zabbix/alertscripts
    - unless: test -d /etc/zabbix/alertscripts
  file.managed:
    - name: /etc/zabbix/zabbix_server.conf
    - source: salt://zabbix/files/zabbix_server.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - defaults:
      DBHost: localhost
      DBName: zabbix
      DBUser: zabbix
      DBPassword: zabbix
  service.running:
    - name: zabbix-server
    - enable: True
    - reload: True
    - watch:
      - file: zb-web-config  对应的配置文件都放在zabbix/files/目录下。如果使用手动安装,可以参照sls文件中的步骤完成安装。
  

  使用snmp对交换机进行监控

  zabbix 可以通过多种方式对多种设备进行监控。只要是支持SNMP协议的设备,就可以对其进行监控,如我们可以通过zabbix 监控网络设备如路由器,交换机,打印机等。对安装支持snmp的操作系统我们也可以对其进行监控。
  简单介下绍对华为交换机的监控。

  查看交换机支持的SNMP版本,设置团体名:
display snmp-agent sys-info
   The contact person for this managed node:
           R&D Beijing, Huawei Technologies co.,Ltd.
   The physical location of this node:
           Beijing China
   SNMP version running in the system:
           SNMPv2c  交换机支持v2c,如果交换机使用的是v3版本或者其他版本可以通过修改交换机版本,也可以配置的方式来使用snmpv3。
  更改为v2c 版本:

[sw5752p]undo snmp-agent sys-info version v3
[sw5752p]snmp-agent sys-info version v2c  配置团体名:
[sw5752p]snmp-agent community read sw5752-public  在zabbix服务器上,我们可以通过snmp相关命令来获取交换机的状态信息:
# snmpwalk -v 2c -c sw5752-public 192.168.1.2 sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (197075041) 22 days, 19:25:50.41  在zabbix 上添加交换机为一个host,选择snmp:

  

  添加需要的模板:

  设置团体名:
  




  

  在主机界面,我们可以看到已经添监控中:

  

  使用agent 对主机进行监控
  在大多数情况下,我们都会使用zabbix的agent来监控服务状态。需要对被监控的客户端安装agent,并配置它与服务端通信。

  

  1、安装agent
  在zabbix的官方网站上下载与服务端对应版本的agent安装包进行安装。
  安装完成后,我们需要修改配置文件,让它与主机通信,再此之前需要统一主机名,主机名要可识别。
  修改之后,配置文件要有如下几个参数:
[root@node2 ~]# grep "^[a-Z]"/etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.3  #服务端主机IP
ServerActive=192.168.1.3   #服务端主机IP
Hostname= node2   #本机主机名
Include=/etc/zabbix/zabbix_agentd.d/*.conf   #自定义配置文件路径
#UserParameter=login-users,uptime|awk -F" " '{print $6}'  #此行为自定义,默认注释状态  如果客户端配置了iptables,需要加入一条iptables规则:
iptables -A INPUT -m state --stateNEW -m tcp -p tcp --dport 10050 -j ACCEPT  启动客户端服务.

  

  2、在服务端加入要监控的客户端服务器
  打开服务端web管理界面,默认账户为Admin, 密码为 zabbix
  创建一个主机组:

  如果此时没有主机,这不会有选择列表,这里可以看到之前所创建的主机:

  设置主机信息和所属组:

  


  在zabbix3.0版本中,会默认添加本地的bases模板,在低版本中需要手动搜索OS Linux模板添加,这两者都是一样的,在此模板中会对一些基础的服务器状态进行监控:

  

  

  自定义监控项
  自定义监控项需要有两个主要步骤:

  •   修改配置文件,编写自定义监控内容。
  •   在server端加上自定义的监控key值。
  

  1、例如我们要加入一个监控,监控当前状态下系统有多少人同时登录(系统自带的模板也有此功能)

  可以使用此命令来获取用户的实时在线数量:
uptime|awk -F " "'{print $4}'  修改配置文件:
  vim /etc/zabbix/zabbix_agentd.conf
  找到UserParameter这一行,打开注释,设置监控的键值和获取键值的方式:
  UserParameter=login-users,uptime|awk-F " " '{print $6}'
  语法说明:
  UserParameter=KEY,COMMAND
  定义一个键值,后面为获得此键值的执行命令,键值的命名对于整个系统必须是唯一的,两者之间逗号隔开,命令也可以是脚本。用户自定义的数据最大可以返回512KB的数据。
  

  提示:如果系统需要自定义多个模板,可以单独创建一个文件,存放路径Include=/usr/local/etc/zabbix_agentd.userparams.conf
  

  配置完成之后,重启zabbix-agent.
  

  2、配置server端
  首先在server测试看能否获取到agent端所返回的KEY值,server端上执行:
  使用zabbix-get命令:
  zabbix_get -s 192.168.1.10 -klogin-users
  如果返回值正常,则key 添加成功。
  

  打开server web配置界面,在客户端主机上添加监控项:

  

  创建监控项目:


  



  添加成功后,在这个客户端的items中就可以看到添加的选项:

  创建主机图形:


  添加刚刚创建的监控项,可以自定义图形的样式:

  此时通过监控的主界面,进入图形界面,就可以直接看到系统绘制的状态图:

  

  

   创建触发器
  当监控的项目到某一个阈值时,需要触发一些动作,下面触发器:

  

  进入触发器的配置界面,点击添加规则按钮就可以设置触发规则:

  

  触发器规则配置界面:

  添加成功后,查看添加的项目:

  

  可以对创建的触发器添加报警声音:在userprofile,中设置即可。


  创建触发行为:当出现故障时,条件触发报警行为时,自动发送邮件或者手机短信报警。
  系统默认自带了一个未被启用的模板,可以重新编辑此模板,也可以添加一个新的模板来定义action的行为。

  


  

  然后定义发送的内容和收件人:


  

  自定义媒体介质:在系统中默认自带的有mail,短信等报警通知机制,一般常用的是mail功能.

  这里定义的是发件箱的信息,在admin账户中,我们还要配置收件箱的信息:

  我们也可以通过编写一个发邮件的脚本或者程序来实现,在系统中配置上执行此脚本的触发机制就可以了。


  

  ZABBIX3.0以上的版本需要自定义三个脚本参数,才可以将邮件信息传入脚本:

  


  在server端创建此脚本并加上执行权限,这个脚本的存放路径,在zabbix的配置文件中可以指定:

  # grep"AlertScriptsPath"/usr/local/zabbix_server/etc/zabbix_server.conf|grep -v "#"
  AlertScriptsPath=/etc/zabbix/alertscripts
  将发邮件或者任何动作的脚本放在此目录下,也可以直接使用python编写发邮件的脚本。
  注意:脚本中一定要接受三个参数 $1  $2  $3,分别为收件人,发送的主题和内容。对应的参数是 {ALERT.SENDTO}  {ALERT.SUBJECT}  {ALERT.MESSAGE}
  

  编辑用户属性,指定发送报警信息的方式:

  

  对于不同的组,如果有新加的设备和服务器,要添加权限给组,否则其他的组成员无法管理这些新加设备:

  

  当设置的报警被触发成功后,会提示已经发送成功:

  

  如果这里没有设置成功,看一下action模板是否开启,actions中设置是否正确,查看系统日志信息:
  tail -f /var/log/zabbix/zabbix_server.log
  附上邮件python发送脚本:
  

#! /usr/bin/envpython
# coding:utf-8
from email importencoders
from email.headerimport Header
fromemail.mime.text import MIMEText
from email.utilsimport parseaddr, formataddr
import smtplib
import sys
defsend_mail(_to_email,_subject,_message):
        smtp_host = 'smtp.ym.163.com'        #邮箱服务器
        from_email = 'alert@dawanjia.com.cn'   #用户名
        passwd = '12345password'              #密码
        msg =MIMEText(_message,'plain','utf-8')
        msg['Subject'] = _subject
        smtp_server =smtplib.SMTP_SSL(smtp_host,994)   # 994为开启SSL的端口号
        smtp_server.login(from_email,passwd)
       smtp_server.sendmail(from_email,[_to_email],msg.as_string())
        smtp_server.quit()
if __name__ =='__main__':
       send_mail(sys.argv[1],sys.argv[2],sys.argv[3])  

  

  

  自定义模板
  对于一些系统不带的监控项目,我们需要自定义一个模板,然后在模板中添加自定义的监控项目。


  之后就可以给当前自定义的模板添加 applications,items,trigger等组件.
  注意:这里自定义的模板里所加的自定义监控项中,如果是需要修改agent端的配置文件,那么所有使用这个模板的agent端都要修改配置,可以将配置信息编写成单独文件和脚本都放在系统设定的路径下。
  

  # grep "Include"/etc/zabbix/zabbix_agentd.conf
  Include=/etc/zabbix/zabbix_agentd.d/*.conf
  

  zabbix 客户端主动模式配置
  在zabbix的默认配置中,agent端是被动模式的,server端是主动模式,server端主动发送请求给agent端获取需要的数据,但是当我们有大量的机器需要监控时,仅仅依靠server端去大量的主动发送数据请求是不合适的,所以需要配置agent端主动发送数据给server端才是最佳的方案。
  在配置agent端为主动模式时,需要两步操作:

  •   克隆需要的模板,并将模板类型从agent 改为 agent-active状态。
  •   修改agent端的配置文件,注释掉被动模式配置,打开主动模式配置,并设置Activeserver.
  





运维网声明 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-665417-1-1.html 上篇帖子: Zabbix低级发现结合jstat命令自动监控Java进程(jdk 1.8版本) 下篇帖子: zabbix之web性能监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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