阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Zabbix从快速入门到精通

141次阅读
没有评论

共计 17305 个字符,预计需要花费 44 分钟才能阅读完成。

对 Zabbix 研究也有有些时间了,在这总结一下这几天的研究成果,首先我们来看看 Zabbix 到底是个什么东西?

Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

Zabbix 组件主要分两个:Zabbix-server 和 Zabbix-agent。支持的监控协议有 ICMP,IPMI,SNMP,HTTP 以及 Zabbix 协议(Zabbix 协议是最常使用的协议用来监控各被监控端)。

收集的数据存放在数据库中,数据库支持 mysql,Oracle 等等。

第三个组件:Zabbix web gui 这个接口提供 web 页面来监控和管理各被监控端。

第四个组件:Zabbix proxy(实现分布式监控专用组件非必要组件,被监控服务器超过一千以上可以使用此组件)。

看一下 Zabbix 的架构体系:

Zabbix 从快速入门到精通

根据上面的介绍相信大家对 Zabbix 会有一个初步的印象,下面给大家看一下 Zabbix 的工作流程

2、工作流程图

Zabbix 从快速入门到精通

agent 获取被监控端数据,发给 Server;server 记录 agent 端收集到的数据以及用户在 GUI 界面中配置的数据,存储在数据库中,也就数在数据库中 Zabbix 会存储两部分的数据:agent 收集的和 GUI 页面配置的;如果是分布式,Server 会将数据传送一份到上一级的 Server 中。

WebGUI 会将数据以良好的形式展现给用户。

Zabbix 中一些常用术语:

Zabbix 一些常用术语:

host(主机):要监控的网络设备,可由 IP 或 DNS 名称指定

host group(主机组):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用(大致了解下就可以了)。

item(监控项):这个从名字上可以理解,具体要监控哪些指标由它定义。

trigger(触发器):就是超过了定义的合理范围,这家伙就会报警。

event(事件):这都是触发器产生的。

action(动作):对事件如何应对,比如要执行哪些操作。

escalation(报警升级):如果在定义的 5 分钟没反应,从 warning 级别升到 high 级别,就是要提醒别人要尽快处理。

media(媒介):发送报警的手段和通道,如 Email。

remote command(远程命令):预定义的命令,可在被监控主机处于某个特定条件下时自动执行。

template(模板):用于快速定义被监控主机的预设条目集合,通常包含了 item、trigger、graph、screen、application 以及 low-level discovery rule;模板可以直接链接至单个主机。(这个概念不理解不过没关系的,只要具体会怎么操作就可以了)

application(应用):一组 item 的集合。

界面展示:

Zabbix 从快速入门到精通

小结

大家在这篇中可以先看一下基本的概念,对其中的一下术语有一定的了解就可以,在下面的系列博客中会一一介绍到。请大家跟进我的脚步,进行前行。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143776p2.htm

zabbix 的服务端需要 LAMP 或者 LNMP 的环境,所以这里的安装方式有很多中了,我们就选择一种比较简单的安装方式,直接用官方提供的源来安装。

  安装步骤:

 第一、导入源

  sudo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

 第二、安装 zabbix 包

  yum install -y zabbix-server-mysql  zabbix-web-mysql  zabbix-agent  mariadb-server

 第三步、启动mariadb

  systemctl start mariadb

 第四步、创建 zabbix 数据库

  mysql -uroot -p   回车键入密码的时候 这里是不需要密码的

  CREATE DATABASE `zabbix` DEFAULT CHARACTER SET utf8;

 第五步、初始化数据库 

   进入这个路径:/usr/share/doc/zabbix-server-mysql-3.0.8 执行下面脚本

  zcat create.sql.gz | mysql -uroot -p zabbix

 第六步、修改配置文件

  vim /etc/zabbix/zabbix_server.conf

  DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix 这几个参数根据自己的实际情况修改

 第七步、启动 zabbix 服务

  systemctl start zabbix-server

 第八步、注意事项

   关闭 防火墙  stop firewalld.service
   关闭 SELinux  setenforce 0 
   开启 httpd 服务 service httpd start

 第九步:配置界面

   http://IP/zabbix/

 

  Zabbix 从快速入门到精通

  点击 next step 

 

  Zabbix 从快速入门到精通

  在这一步出现上图中的错误,解决方案:

   进入 etc/httpd/conf.d/zabbix.conf 将  php_value date.timezone Europe/Riga   前面的注释去掉
   然后重新启动 httpd 服务:service httpd restart 刷新页面 OK 完成。

 

  点击 next step

  Zabbix 从快速入门到精通

  在这可能出现上图中的错误,这是因为 zabbix 数据中没有数据导致的,如果在上面的步骤中,初始化数据库正确执行后,这个错误就不会出现了!

 下面一路 next 就可以了,最后点击 finish 后就会跳到登录界面 默认用户名 Admin/ 密码 zabbix

          Zabbix 从快速入门到精通

  第十步:将语言修改为中文

  1、修改这个下面文件

      sudo vim /usr/share/zabbix/include/locales.inc.php 

   找到 55 行,将 false 改为 true,小编这默认的就是 true

   Zabbix 从快速入门到精通

 2、在页面中修改

  Zabbix 从快速入门到精通

 第十一、解决中文显示乱码问题

  1、上传文字

  Win+ R 打开运行,输入 fonts,回车进入 Windows 字体目录,找到微软雅黑 - 常规字体,复制出来将文件名修改为 msyh.ttf,然后上传到 /usr/share/zabbix/fonts

       Zabbix 从快速入门到精通

  2、修改下面文件

  sudo vim /usr/share/zabbix/include/defines.inc.php  将 ’graphfont’ 修改为 msyh。

  Zabbix 从快速入门到精通

 修改完成以后,刷新界面即可

 小结

  到这在 CentOS7 安装 zabbix3.0.7 的 server 端的过程已经完成,这个过程应该是在安装过程中比较麻烦的一步,当然小编在安装过程中都是使用的默认的安装,像 mysql 等,各位读者也可以将 mysql 安装到不同的服务器上面。在下面一篇博客中将介绍如何安装 zabbix  agent 并进行监控!

对 Zabbix 研究也有有些时间了,在这总结一下这几天的研究成果,首先我们来看看 Zabbix 到底是个什么东西?

Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

Zabbix 组件主要分两个:Zabbix-server 和 Zabbix-agent。支持的监控协议有 ICMP,IPMI,SNMP,HTTP 以及 Zabbix 协议(Zabbix 协议是最常使用的协议用来监控各被监控端)。

收集的数据存放在数据库中,数据库支持 mysql,Oracle 等等。

第三个组件:Zabbix web gui 这个接口提供 web 页面来监控和管理各被监控端。

第四个组件:Zabbix proxy(实现分布式监控专用组件非必要组件,被监控服务器超过一千以上可以使用此组件)。

看一下 Zabbix 的架构体系:

Zabbix 从快速入门到精通

根据上面的介绍相信大家对 Zabbix 会有一个初步的印象,下面给大家看一下 Zabbix 的工作流程

2、工作流程图

Zabbix 从快速入门到精通

agent 获取被监控端数据,发给 Server;server 记录 agent 端收集到的数据以及用户在 GUI 界面中配置的数据,存储在数据库中,也就数在数据库中 Zabbix 会存储两部分的数据:agent 收集的和 GUI 页面配置的;如果是分布式,Server 会将数据传送一份到上一级的 Server 中。

WebGUI 会将数据以良好的形式展现给用户。

Zabbix 中一些常用术语:

Zabbix 一些常用术语:

host(主机):要监控的网络设备,可由 IP 或 DNS 名称指定

host group(主机组):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用(大致了解下就可以了)。

item(监控项):这个从名字上可以理解,具体要监控哪些指标由它定义。

trigger(触发器):就是超过了定义的合理范围,这家伙就会报警。

event(事件):这都是触发器产生的。

action(动作):对事件如何应对,比如要执行哪些操作。

escalation(报警升级):如果在定义的 5 分钟没反应,从 warning 级别升到 high 级别,就是要提醒别人要尽快处理。

media(媒介):发送报警的手段和通道,如 Email。

remote command(远程命令):预定义的命令,可在被监控主机处于某个特定条件下时自动执行。

template(模板):用于快速定义被监控主机的预设条目集合,通常包含了 item、trigger、graph、screen、application 以及 low-level discovery rule;模板可以直接链接至单个主机。(这个概念不理解不过没关系的,只要具体会怎么操作就可以了)

application(应用):一组 item 的集合。

界面展示:

Zabbix 从快速入门到精通

小结

大家在这篇中可以先看一下基本的概念,对其中的一下术语有一定的了解就可以,在下面的系列博客中会一一介绍到。请大家跟进我的脚步,进行前行。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143776p2.htm

引言

  在前面我们已经安装了 zabbix 的 server 端,如果我们需要对某台机器进行监控,还需要在被监控的机器上面安装客户端,这样才能进行监控,下面就给大家介绍一下 agent 端的安装教程

  第一、导入源

  sudo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

  第二、安装客户端

  sudo yum install zabbix-agent

  第三、配置客户端

  vi /etc/zabbix/zabbix_agentd.conf 

  修改此文件中的下面三个值

    Server=192.168.92.8     // 安装 zabbix 服务端的机器的 IP

    ServerActive=192.168.92.8 // 安装 zabbix 服务端的机器的 IP
    Hostname=09          // 随便起,我这以被监控的机器的 ip 作为 Hostname

 

 第四、注意事项

   关闭 防火墙  stop firewalld.service
   关闭 SELinux  setenforce 0 

 第五、启动 agent
   systemctl start zabbix-agent

 通过上面这几步就完成了客户端的安装,下面我们介绍如何在服务端进行监控这台机器。

 

  zabbix 加入对一台机器的基本监控教程

 1、进入 UI 界面—》配置—》主机—》创建主机

  Zabbix 从快速入门到精通

 2、进入下面编辑页面 ip 地址一定要填写正确,

 Zabbix 从快速入门到精通

 3、填写完上面的主机信息以后,要选择一个模板

 Zabbix 从快速入门到精通

 点击选择以后 在弹出的选择列表中选择 Template OS Linux

  Zabbix 从快速入门到精通

选择完模板以后,首先点击模板页面中那个比较小一点的“添加”,然后在点击那个大一点的添加!

 下面看监控的效果图形

 Zabbix 从快速入门到精通

 

 当然我们还可以将多个监控项在一个页面进行展示,这就是我们的聚合图形功能。

  Zabbix 从快速入门到精通

 

 Zabbix 从快速入门到精通

 点击添加以后 

 Zabbix 从快速入门到精通

 点击构造函数,然后点击更改后,完成聚合图形的构建。

 Zabbix 从快速入门到精通

 点击选择后,进行主机和监控项的选择,在一个聚合图形中可以同时展现多个主机和多个监控项的监控

 

Zabbix 从快速入门到精通

 依次完成以后的效果图如下:

 Zabbix 从快速入门到精通

  因为我本机就监控了一台,为了展现对不同服务器的聚合,我从上图是我们项目中截取的一张图供参考。

  小结

  上面比较完整的介绍了对一台主机监控的整个过程,并且比较详细介绍了关于图形的创建。在上面我们使用了 zabbix 给我们提供的模板,当我么提供的模板不能满足我们的需求的时候,我们也可以自定义模板来完成需求。在下面博客中将介绍模板的创建,将结合对 IO 监控过程来介绍!

引言

  在前面的博客中我们介绍了 zabbix 自带的模板,并且完成了我们的一些比较常用的监控,现在我们如果想要监控我们磁盘的 IO,这时候 zabbix 并没有给我们提供这么一个模板,所以我们需要自己来创建一个模板来完成磁盘 IO 的监控。

  1. 添加 userparameter_io.conf 配置文件

   在 /etc/zabbix/zabbix_agentd.d 下添加 userparameter_io.conf, 文件内容如下:  

 UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$4}’                    // 磁盘读的次数
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$7}’                    // 磁盘读的毫秒数
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$8}’                  // 磁盘写的次数
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$11}’                  // 磁盘写的毫秒数
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$12}’           
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$13}’                      // 花费在 IO 操作上的毫秒数
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$6}’            // 读扇区的次数(一个扇区的等于 512B)
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$10}’          // 写扇区的次数(一个扇区的等于 512B)

  2、重启 zabbix-agent 服务

 

   systemctl restart zabbix-agent

  3、测试 zabbix-server 获取数据

    #zabbix_get -s 目标服务器 IP -p 10050 -k custom.vfs.dev.write.ops[sda]  

  4、配置 zabbix-server 模板

    进入 web 界面—》配置—》模板—创建模板

   Zabbix 从快速入门到精通

  5、配置监控项

  进入到模板列表页面,找到我们刚刚创建的 Templae io 模板,点击后面监控项,然后点击创建监控项

Zabbix 从快速入门到精通

 

 

 

 配置第一个监控项

   Name:  Disk:$1:Read:Bytes/sec
   Key:  custom.vfs.dev.read.sectors[sda]
   Units: B/sec
   Store value: speed per second       // 会进行差值计算
   Use custom multiplier     512      // 会对值乘以 512,因为这里是一个扇区,转换为字节为 512B

 

Zabbix 从快速入门到精通

 

  第二监控项:和第一个一样的配置过程

                  Name:Disk:$1:Write:Bytes/sec
                  Key:          custom.vfs.dev.write.sectors[sda]
                  Units:        B/sec
                  Store value: speed per second
                  Use custom multiplier     512

  第三个监控项配置参数:

                 Name:Disk:$1:Read:ops per second
                  Key:          custom.vfs.dev.read.ops[sda]
                  Units:        ops/second
                  Store value: speed per second

  第四个监控项配置参数:

                 Name: Disk:$1:Write:ops per second
                  Key:          custom.vfs.dev.write.ops[sda]
                  Units:        ops/second
                  Store value: speed per second

 第五个监控项配置参数:

                 Name: Disk:$1:Read:ms
                  Key:         custom.vfs.dev.read.ms[sda]
                  Units:      ms
                  Store value: speed per second

 第六个监控项配置参数:

                 Name:Disk:$1:Write:ms
                  Key:         custom.vfs.dev.write.ms[sda]
                  Units:      ms
                  Store value: speed per second

 

 上面我们就完成了对 IO 的监控,但是我们也想和 zabbix 自带的那样的模板一样,可以看到监控以后的图形,当然这也是可以做到的,下面就介绍图形的添加。

 5、添加图形

   返回到模板的列表页面,找到我们创建的模板 Template io 然后点击后面的图形—》创建图形

  Zabbix 从快速入门到精通

 

  点击添加—》选择我们配置的监控项

  Zabbix 从快速入门到精通

 这样我们就完成了整个自定义模板的配置,我们现在就可以查看监控的数据了。

 我们就拿之前博客中监控的机器来做实验,但是我们之前这台机器用了 zabbix 自带的模板 Template os Linux,现在我们自己自定义了一个模板,那么怎么办呢?zabbix 设计的还是非常人性的。模板之间是继承关系的!

 我们回到给被监控的主机的哪一步,选择我们自定义的模板!

 Zabbix 从快速入门到精通

  这样我们就可以查看结果了 检测中—》图形

 Zabbix 从快速入门到精通

 

  小结

  到这我们就完成了自定义模板的配置,顺便把监控磁盘 IO 也完成了,希望对读者有帮助。当然也欢迎读者拍砖!

引言

  经过前面几篇文章的介绍,我们已经完成了对某台机器的监控,并且可以自定义监控模板。但是最为运维神器,只是单单的监测还是不完美,当然还需要报警装置,下面就给大家介绍 zabbix 邮件报警配置,报警方式有好几种,最常用的就是邮件了,比较有钱的公司可能会使用短信。

  第一、安装邮件发送工具 mailx

  这里我选择的是 mailx,所以的关闭其他的邮件发送工具

   service sendmailstop #关闭
   chkconfig sendmailoff #禁止开机启动
   service postfixstop
   chkconfig postfixoff

   执行安装 mailx 的命令:yum install mailx

  第二、配置 Zabbix 服务端外部邮箱 

   打开文件 vi /etc/mail.rc 如果 mail.rc 文件没有,就手动创建 内容如下:

     set sendcharsets=iso-8859-1,utf-8
     set from=xxx@163.com
     set smtp=smtp.163.com:25
     set smtp-auth-user=xxx@163.com  #认证用户
     set smtp-auth-password=xxx    #认证密码

  第三、测试邮件是否可以发出

   echo”zabbix test mail” |mail -s “zabbix” yyy@163.com

  #这时候,邮箱 yyy@163.com 会收到来自 xxx@163.com 的测试邮件

  第四、编写发送邮件脚本

  进入下面路径:/usr/lib/zabbix/alertscripts 创建 sendmail.sh 文件,内容如下

  echo “$3” | mail -s “$2” “$1”

   上面的这个三个参数是接收从 web 页面中传递过来的,$1: 收件人邮箱地址;$2: 邮件标题;$3: 邮件内容

   为什么我们会在这个路径下面创建这个脚本呢,这是在我们的 zabbix_serber.conf 文件中配置的

  AlertScriptsPath=/usr/lib/zabbix/alertscripts

   所以你不想将这个脚本放在这个目录下面,需要修改服务端的配置文件中的AlertScriptsPath 的值

  第四、配置 web 页面

  4.1、创建媒体类型

   Zabbix 从快速入门到精通

  点击创建媒体类型

 Zabbix 从快速入门到精通

  添加以下 3 个参数,分别对应 sendmail.sh 脚本需要的 3 个参数:收件人地址、主题、详细内容
      {ALERT.SENDTO}
      {ALERT.SUBJECT}
      {ALERT.MESSAGE}

如果在 3.0 中不添加这三个参数会报错,因为在 3.0 以后 zabbix 允许自定义参数了,所以不会默认传递参数,在 2.0 的时候会默认传递三个参数,所以在 3.0 如果不写这三个参数会报错。

  4.2、给用户添加报警媒介

  在这以 Admin 用户为例 管理—》用户—》点击 Admin

   Zabbix 从快速入门到精通

 点击 Admin

 Zabbix 从快速入门到精通

 4.3、创建动作

 Zabbix 从快速入门到精通

  填写动作选项 

 Zabbix 从快速入门到精通

  除了自己填写一个名称以外,其余的都默认就好了。当然也可以修改成中文:参考如下

 默认接收人:故障 {TRIGGER.STATUS}, 服务器:{HOSTNAME1} 发生:{TRIGGER.NAME}故障!
 默认信息:
 告警主机:{HOSTNAME1}
 告警时间:{EVENT.DATE}{EVENT.TIME}
 告警等级:{TRIGGER.SEVERITY}
 告警信息: {TRIGGER.NAME}
 告警项目:{TRIGGER.KEY1}
 问题详情:{ITEM.NAME}:{ITEM.VALUE}
 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
 事件 ID:{EVENT.ID}
 恢复信息:打钩
 恢复主旨:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME} 已恢复!
 恢复信息:
 告警主机:{HOSTNAME1}
 告警时间:{EVENT.DATE}{EVENT.TIME}
 告警等级:{TRIGGER.SEVERITY}
 告警信息: {TRIGGER.NAME}
 告警项目:{TRIGGER.KEY1}
 问题详情:{ITEM.NAME}:{ITEM.VALUE}
 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
 事件 ID:{EVENT.ID}
 已启用:打钩

 

  填写条件选项

 Zabbix 从快速入门到精通

 

  填写操作详细信息

 Zabbix 从快速入门到精通

 解释: 默认的步骤是 1 -1, 也即是从 1 开始到 1 结束。一旦故障发生,就是执行 sendEmail.sh 脚本发生报警邮件给 Admin 用户和 zabbix administrator 组。假如故障持续了 1 个小时,它也只发送一次。如果改成 1 -0,0 是表示不限制. 无限发送 间隔就是默认持续时间 60 秒。那么一个小时,就会发送 60 封邮件。

  到这我们的邮件报警配置就完成了,这是只要我们设置的触发器触发,就会自动给我发送报警邮件。

 测试邮件报警

 我将 zabbix 自带的模板中的对可用内存的监控中的触发器的临界值改为大于 0,进入模板列表

Zabbix 从快速入门到精通

 点击触发器

Zabbix 从快速入门到精通

 点击修改

 Zabbix 从快速入门到精通

  保存以后 我将每一分钟收到一份报警邮件 内容如下:

  Zabbix 从快速入门到精通

  小结

  到这关于 zabbix 邮件报警的配置,已经基本完成了,希望对读者有一定的帮助,

  在下一篇文章中,将结合对某个端口的监控来介绍一下触发器的使用!

引言

  本文结合配置内存不足 10% 触发报警的需求,顺便给大家介绍我们怎样自定义 item 和 trigger,在前几篇博客中使用了 zabbix 给我们提供的模板,里面都已经配置好了 item 和 trigger。但是给我们的模板是当内存小于 20M 的时候才会触发报警,这样不能满足我们的需求,我们需要在内存不足 10% 的时候触发,这时候需要我们自定义一个 item 和 trigger。

 1、在 Template OS Linux 模板中创建 item

  进入 web 页面—》配置—》模板—Template OS Linux—》点击监控项——创建监控项

 Zabbix 从快速入门到精通

    名称:Ava memory percent

    类型:可计算的

    键值:vm.memory.free[percent]

    公式:100*last(“vm.memory.size[available]”)/last(“vm.memory.size[total]”)

    应用集:Memory

 点击添加即可完成 item 的创建,下面我们创建报警 trigger

  2、创建 trigger

 进入 web 页面—》配置—》模板—Template OS Linux—》点击触发器——创建触发器

  Zabbix 从快速入门到精通

  点击 表达式后面的添加以后 进行下面选择

 Zabbix 从快速入门到精通

  这样我们就完成了一个自定义的 item 和 trigger,这样看起来非常的简单。但是里面的很多比较细致但是重要的知识还没有讲解,那就是我们在创建监控项的时候中 类型和键值的填写。这些比较细致的知识,需要我们翻阅一些官方文档或者一些书籍进行积累。小编会在接下来的文中系统的总结上面这些东西。

引言

  在前面的文中我们介绍了 zabbix3.0 中的邮件报警的配置,但是对于邮件来说并不是非常的方便,所以我们在这篇博客中我们介绍另外一种报警方式——微信报警。

 第一、准备微信企业号

 第二、关于企业号中配置的几个重点

   1、查看部门 ID:

   Zabbix 从快速入门到精通

 

  2、新建应用的时候选择消息型应用 并记录应用 ID

 Zabbix 从快速入门到精通

 

  3、设置管理组 

  Zabbix 从快速入门到精通

 

  比较重要的大概就是上面这么几点。

 第三、准备脚本

#!/bin/bash
#########################################################################
# File Name: weixin.sh
# Author: shaonbean
# Email: shaonbean@qq.com
# Created Time: Sun 24 Jul 2016 05:48:14 AM CST
#########################################################################
# Functions: send messages to wechat app
# set variables
CropID=’wxda13247ee2c2ff9b’
Secret=’vJg7Q2H28_3qkjBsl2IxnLrHTP-3_SerljJvrrlHDLczqS1Vib8_umQHEQRi3kZs’
GURL=”https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret”
#get acccess_token
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\” ‘{print $4}’)
PURL=”https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken”
#
function body() {
local int AppID=1                        #企业号中的应用 id
local UserID=”touser”                        #部门成员 id,zabbix 中定义的微信接收者
local PartyID=2                          #部门 id,定义了范围,组内成员都可接收到消息
local Msg=$(echo “$@” | cut -d” ” -f3-)  #过滤出 zabbix 传递的第三个参数
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 $! $2 $3)” $PURL

  将脚本 weixin.sh 放在 /usr/lib/zabbix/alertscripts 目录下,和我们配置的邮件报警的脚本放在同一目录下面。

 

 第三、微信接口调用

   调用微信接口需要一个调用接口的凭证:access_token
   通过 CorpID 和 Secret 可以获得 access_token
   微信企业号接口调试地址:http://qydev.weixin.qq.com/debug

 Zabbix 从快速入门到精通

  第四、脚本测试

   进入 /usr/lib/zabbix/alertscripts 执行命令 bash weixin.sh test hello.world!

  Zabbix 从快速入门到精通

  第五、页面配置

    创建媒介类型和我们配置邮件报警步骤一样

  Zabbix 从快速入门到精通

 第六、配置用户

  Zabbix 从快速入门到精通

 第七、配置触发器

   步骤和前面的博客中的配置步骤一样

 

 第八测试、

   Zabbix 从快速入门到精通

 

  小结

  到这关于微信报警的配置就已经完成了,希望对读者有所帮助!

引言

之前写了关于 zabbix 的系列教程,其中【Zabbix 从快速入门到精通二】——CentOS7 安装 Zabbix3.07 服务端 介绍了如何安装服务端,但是有一些问题没有写进去,在这篇文中进行补充。

问题一:

yum install -y zabbix-server-mysql  zabbix-web-mysql  zabbix-agent  mariadb-server

执行上面命令可能遇到下面问题

No more mirrors to try.

Zabbix 从快速入门到精通

如果重复执行名都会遇到这个问题,我们需要下面命令

yum clean all

问题二

我们可能需要给数据库分配权限和角色

在我们创建完 zabbix 数据库以后,执行下面命令

grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix2016’;

执行完成以后,我们在配置 zabbix_server.conf 配置文件的时候,就不用默认的用户名和密码了,用下面的配置:

vi /etc/zabbix/zabbix_server.conf

91:DBName=zabbix

 107:DBUser=zabbix

 116:DBPassword=zabbix2016

页面配置也需要按照我们分配的用户名和密码配置

Zabbix 从快速入门到精通

Zabbix 从快速入门到精通

问题三:Zabbix server is not running

这个问题的原因可能是数据库的连接有问题。我们可以从下面几方面进行检查

/etc/zabbix/webzabbix.conf.php 文件中

$DB[‘DATABASE’]

  $DB[‘USER’]

  $DB[‘PASSWORD’]

确保这三个参数都是正确的。

    注意:每次改了参数文件一定要记得重启 zabbix_server

这些参数值使我们在 web 界面中配置进来的

第二步、检查我们的 zabbix_server.conf 配置文件中的 mysql 配置是否正确

有其实我们在后期修改了数据库的用户名或者密码之类的,这个问题更加容易出现,大家细心检查!

小结

每一次配置都会遇到不同的问题,也会收获一下,在此备忘同时希望也可以帮助大家!

引言

我们在监控生产环境的服务的时候,通常需要对多个端口进行监控,如果我们手动的一个一个的添加,这回让我们崩溃,所以批量添加端口监控是一个非常常见的需求,当然这对于 zabbix 来说肯定是支持的,需要使用 zabbix 的 Discovery 功能来实现,下面小编就给大家分享一下批量添加对口的占用。

第一:自动扫描端口并监控报警

1、编写脚本:check_port1.sh

#!/usr/bin/env python
#coding:utf-8
 
import os, json
 
port_list=[]
port_dict={“data”:None}
cmd=”’netstat -tnlp|egrep -i “$1″|awk {‘print $4′}|awk -F’:’ ‘{if ($NF~/^[0-9]*$/) print $NF}’|sort |uniq  2>/dev/null”’
local_ports=os.popen(cmd).readlines()
 
for port in local_ports:
    pdict={}
    pdict[“{#TCP_PORT}”]=port.replace(“\n”, “”)
    port_list.append(pdict)
 
port_dict[“data”]=port_list
jsonStr = json.dumps(port_dict, sort_keys=True, indent=4)
 
print jsonStr

脚本的作用就是从被监控的服务器上面采集数据,并且转换为特定的字典格式,这种格式是 zabbix 可以识别的一种数据字典格式,使用 python 来编写相对 shell 来说更加便捷。

将脚本放在 /usr/lib/zabbix/alertscripts 路径下面

2、修改被监控端的 zabbix_agent.conf 配置文件

在配置文件中增加下面内容

 UnsafeUserParameters=1
UserParameter=tcpportlisten,/usr/lib/zabbix/alertscripts/check_port1.sh

3、重启客户端服务

 4、测试

 执行命令:zabbix_get -s 192.168.92.9 -p 10050 -k tcpportlisten

  Zabbix 从快速入门到精通
 

  出现上面格式的数据,说明脚本编写成功

 友情提示:如果在执行上面命令的时候出现 zabbix_get :command not found 

  这说明您没有安装 zabbix_get 服务 

  执行 yum list all |grep zabbix 查看一下

    Zabbix 从快速入门到精通

 然后执行 yum install zabbix-get.x86_64 命令安装即可

 6、页面配置

  6.1 添加模板

    Zabbix 从快速入门到精通

   6.2 添加自动发现规则

   在上新创建的模板中点击 自动发现规则 然后选择  创建发现规则

   Zabbix 从快速入门到精通

 说明:上面的 key 一定要和配置文件中的 key 保持一致。就是我们在 zabbix_agent.conf 文件中添加的两行代码中的第二行中添加的参数 key

  6.3 创建监控项原型

 Zabbix 从快速入门到精通

 Zabbix 从快速入门到精通

  上面中的键值 中的 #TCP_PORT} 和我们的脚本 check_port1.sh 中的参数一致

  6.4 创建触发器类型

  Zabbix 从快速入门到精通

 Zabbix 从快速入门到精通

  注意这里的表态示 count(#3,0,eq) > 1 表示最近 3 次的返回值为 0,这个条件触发一次则报警

 

  配置到这我们就完成了 zabbix 自动扫描并监控的功能。

 

 第二、批量添加监听指定端口

  有时候我们不需要监控自动扫描出来的所有的端口,这些端口需要我们指定,这个需求也是比较常见的,有了上面的基础,实现这个东西其实是比较简单,其实仔细看看脚本就能实现。

  要实现这个功能我们只需要,将脚本替换成下面内容即可:

#!/usr/bin/env python
#coding:utf-8
import os, json
portlist=[“3306”,
        “80”,
        “22”]
port_list=[]
port_dict={“data”:None}
#cmd=”’netstat -tnlp|egrep -i “$1″|awk {‘print $4′}|awk -F’:’ ‘{if ($NF~/^[0-9]*$/) print $NF}’|sort |uniq  2>/dev/null”’
#local_ports=os.popen(cmd).readlines()
for port in portlist:
 pdict={}
 pdict[“{#TCP_PORT}”]=port
        #pdict[“{#TCP_PORT}”]=port.replace(“\n”, “”)
 port_list.append(pdict)
port_dict[“data”]=port_list
jsonStr = json.dumps(port_dict, sort_keys=True, indent=4)
print jsonStr

我们只需要在 portlist 中添加我们想要监控的端口即可。

小结

上面就是小编对批量添加端口的分享,希望能帮助您!

 本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143776.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计17305字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中