学习zabbix(十)
阅读原文时间:2023年07月09日阅读:10

Zabbix 3.0 基础介绍 [一]

一、Zabbix介绍

zabbix 简介

  Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利
  zabbix是一个基于Web界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案。
  zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题
  zabbix主要由2部分构成zabbix server和zabbix agent,可选组建zabbix proxy
  zabbix server可以通过SNMP,zabbix agent,fping端口监视等方法对远程服务器或网络状态完成监视,数据收集等功能。同时支持Linux以及Unix平台,Windows平台只能安装客户端

Zabbix 功能

  ①具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)

  ②支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)

  ③支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本)

  ④支持分布式,能集中展示、管理分布式的监控点

  ⑤扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)编写插件容易,可以自定义监控项,报警级别的设置。

  ⑥数据收集

 可用和性能检测

 支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET

 自定义的检测

 自定义收集数据的频率

 服务器/代理和客户端模式

 灵活的触发器

 可以定义非常灵活的问题阈值,称为触发器,从后端数据库的参考值

 高可定制的报警

 发送通知,可定制的报警升级,收件人,媒体类型

 通知可以使用宏变量有用的变量

 自动操作包括远程命令

 实时的绘图功能

 监控项实时的将数据绘制在图形上面

 WEB 监控能力

 ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间

Api 功能

  应用api功能,可以方便的和其他系统结合,包括手机客户端的使用。

更多功能请查看

http://www.zabbix.com/documentation.php

Zabbix版本

Zabbix 3.0 Manual

Zabbix 2.4 Manual

Zabbix 2.2 Manual

Zabbix 2.0 Manual

下载地址:http://www.zabbix.com/documentation.php

本次采用yum安装,安装zabbix3.0.使用Centos7

Zabbix优缺点

优点

 1、开源,无软件成本投入

 2、Server 对设备性能要求低

 3、支持设备多,自带多种监控模板

 4、支持分布式集中管理,有自动发现功能,可以实现自动化监控

 5、开放式接口,扩展性强,插件编写容易

 6、当监控的item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从

 7、server 端去下载需要监控的item 然后取数据上传到server 端。这种方式对服务器的负载比较小。

 8、Api 的支持,方便与其他系统结合

缺点

  需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库

Zabbix监控原理

  Zabbix 通过C/S 模式采集数据,通过B/S模式在web 端展示和配置。

被监控端:主机通过安装agent 方式采集数据,网络设备通过SNMP 方式采集数据

Server 端:通过收集SNMP 和agent 发送的数据,写入数据库(MySQL,ORACLE 等),再通过php+apache 在web 前端展示。

Zabbix 运行条件

Server:Zabbix Server 需运行在LAMP(Linux+Apache+Mysql+PHP)环境下(或者LNMP),对硬件要求低

Agent:目前已有的agent 基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、

windows

SNMP:支持各类常见的网络设备

SNMP(Simple Network Management Protocol,简单网络管理协议

Zabbix监控过程逻辑图

<img src="http://static.zybuluo.com/abcdocker/3k6ikw8aqzewig8krhbbj7h5/1.png" alt="1.png-212.6kB" title=""></p>

硬件监控 适用于物理机、远程管理卡(iDRAC),IPMI(只能平台管理接口)

ipmitools:,MegaCli(查看Raid磁盘)

系统监控: 监控cpt:lscpu、uptime、top、vmstat 1 、mpstat 1、htop

监控内存: free -m、

**监控硬盘:**df -h、iotop

**监控网络:**iftop、netstat、ss

**应用服务监控:**nfs、MySQL、nginx、apache、php、rsync

更详细的监控类型可以参考:http://www.abcdocker.com/abcdocker/1376

所有监控范畴,都可以整合到Zabbix

   硬件监控:Zabbix、IPMI、lnterface

   系统监控:Zabbix、Agent、Interface

   Java监控:Zabbix、JMX、lnterface

   网络设备监控:Zabbix、SNMP、lnterface

   应用服务监控:Zabbix、Agent、UserParameter

   MySQL数据库监控:percona-monitoring-plulgins

   URL监控:Zabbix Web监控

<img src="http://static.zybuluo.com/abcdocker/167ih238287zm6ebg41c5bvu/2.png" alt="2.png-25.1kB" title=""></p>

二、Zabbix 环境配置

1、环境信息

  1. [root@localhost ~]# cat /etc/redhat-release
  2. CentOSLinux release 7.2.1511(Core)
  3. [root@localhost ~]# uname -r
  4. 3.10.0-327.28.3.el7.x86_64

2、yum安装

阿里云yum源已经提供了zabbix3.0,因此我们需要使用官方yum源。官方yum源下载会比较慢

  1. [root@localhost ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

问题:为什么要下载release版本的zabbix?

  1. [root@localhost ~]# ls /etc/yum.repos.d/
  2. CentOS-Base.repo CentOS-Media.repo epel.repo.rpmnew
  3. CentOS-CR.repo CentOS-Sources.repo epel-testing.repo
  4. CentOS-Debuginfo.repo CentOS-Vault.repo zabbix.repo
  5. CentOS-fasttrack.repo epel.repo

因为下载这个版本会在yum.repos.d下面生成一个zabbix.repo的文件

3、安装相关软件包

  1. [root@localhost ~]# yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb -y
  2. 注:如果Server端也需要监控则需要安装zabbix-agent

提示:在Centos7中,mysql改名为mariadb

4、修改PHP时区设置

  1. [root@localhost ~]# sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g'/etc/httpd/conf.d/zabbix.conf
  2. #要注意需要改的配置文件是/etc/httpd/conf.d/zabbix.conf而不是/etc/php.ini,

三、数据库设置

1.启动数据库

  1. [root@localhost ~]# systemctl start mariadb

2.创建zabbix数据库及用户

  1. mysql
  2. create database zabbix character set utf8 collate utf8_bin;
  3. grant all on zabbix.* to zabbix@'localhost' identified by '123456';
  4. exit

3.导入数据

  1. [root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.4/
  2. [root@localhost zabbix-server-mysql-3.0.4]# ll
  3. total 1836
  4. -rw-r--r--1 root root 98Jul2211:05 AUTHORS
  5. -rw-r--r--1 root root 687803Jul2211:05ChangeLog
  6. -rw-r--r--1 root root 17990Jul2211:06 COPYING
  7. -rw-r--r--1 root root 1158948Jul2402:59 create.sql.gz
  8. -rw-r--r--1 root root 52Jul2211:06 NEWS
  9. -rw-r--r--1 root root 188Jul2211:05 README
  10. [root@localhost zabbix-server-mysql-3.0.4]# zcat create.sql.gz |mysql -uzabbix -p123456 zabbix

我们使用zcat,专门查看sql.gz包。和cat基本相似

4.修改zabbix配置文件

  1. [root@localhost zabbix-server-mysql-3.0.4]# vim /etc/zabbix/zabbix_server.conf
  2. DBHost=localhost #数据库所在主机
  3. DBName=zabbix #数据库名
  4. DBUser=zabbix #数据库用户
  5. DBPassword=123456#数据库密码

5.启动zabbix及apache

  1. [root@localhost ~]# systemctl start zabbix-server
  2. [root@localhost ~]# systemctl start httpd
  3. 注意:如果没有启动成功,要看一下是不是80端口被占用

6.Web界面安装master

访问地址:http://192.168.56.11/zabbix/setup.php

<img src="http://static.zybuluo.com/abcdocker/am14alnxj6pp1g6ih7gkohom/1.png" alt="1.png-22.4kB" title=""> <br />

点击Next step进行安装

<img src="http://static.zybuluo.com/abcdocker/g9f1uz2h9cpmg8hn13spxpyi/1.png" alt="1.png-35.9kB" title=""> <br />

首先要确保没有no,如果时区没有改好会提示我们进行修改

<img src="http://static.zybuluo.com/abcdocker/oyzhp99j8k7kxomh0jbbmzp8/1.png" alt="1.png-32.2kB" title=""> <br />

账号密码都是我们刚刚在配置文件中设置的,端口默认就是3306

<img src="http://static.zybuluo.com/abcdocker/x24zoahsaju4twjh2l2tfn8j/2.png" alt="2.png-24kB" title=""> <br />

为我们的zabbix起个名字,一会在右上角会显示

<img src="http://static.zybuluo.com/abcdocker/bkeql7byn49dpcfrdeialuhv/1.png" alt="1.png-31.8kB" title=""></p>

最后是展示我们的配置信息,可以查看到哪里有错误

<img src="http://static.zybuluo.com/abcdocker/ysa1env8sbzci9df5nnto81z/1.png" alt="1.png-23kB" title=""> <br />

点击Finish

<img src="http://static.zybuluo.com/abcdocker/227kxcx6p58dac0d0tr064xi/1.png" alt="1.png-19.3kB" title=""> <br />

<img src="http://static.zybuluo.com/abcdocker/3d47mhyhcvhsue27zic0lpdh/2.png" alt="2.png-61kB" title=""></p>

提示:上去之后请立即修改密码

7.配置zabbix-agent端

  1. [root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. Server=127.0.0.1修改Server端的IP地址(被动模式IP地址)
  3. ServerActive=127.0.0.1主动模式,主动向server端报告
  4. [root@localhost ~]# systemctl start zabbix-agent

查看端口号

  1. [root@localhost ~]# netstat -lntp
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:33060.0.0.0:* LISTEN 7806/mysqld
  5. tcp 000.0.0.0:220.0.0.0:* LISTEN 1062/sshd
  6. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2208/master
  7. tcp 000.0.0.0:100500.0.0.0:* LISTEN 11511/zabbix_agentd
  8. tcp 000.0.0.0:100510.0.0.0:* LISTEN 11335/zabbix_server
  9. tcp 00127.0.0.1:1990.0.0.0:* LISTEN 2692/snmpd
  10. tcp6 00:::80:::* LISTEN 11408/httpd
  11. tcp6 00:::22:::* LISTEN 1062/sshd
  12. tcp6 00::1:25:::* LISTEN 2208/master
  13. tcp6 00:::443:::* LISTEN 11408/httpd
  14. tcp6 00:::10050:::* LISTEN 11511/zabbix_agentd
  15. tcp6 00:::10051:::* LISTEN 11335/zabbix_server
  16. 10051为server端口,10050为agent端口

四、Web界面配置

找到Configuration---->Hosts 添加一台监控主机

<img src="http://static.zybuluo.com/abcdocker/g6845br6ps0jf75fojsps0u2/1.png" alt="1.png-95.1kB" title=""> <br />

<img src="http://static.zybuluo.com/abcdocker/azq19gcgcoiji0tdcwznxbjh/2.png" alt="2.png-52.3kB" title=""></p>

开启后,如果出现错误我们可以看一下zabbix的日志

  1. [root@localhost ~]# ls /var/log/zabbix/zabbix_
  2. zabbix_agentd.log zabbix_server.log

<img src="http://static.zybuluo.com/abcdocker/4o7klpb512ai2vc99btd7y6g/3.png" alt="3.png-32.5kB" title=""> <br />

当ZBX变成绿色的时候,说明监控成功。因为我们没有配置SNMP、JMX、IPMI等。所以我发监控

<img src="http://static.zybuluo.com/abcdocker/eh6mswvghbq8wrb7ap90cdbz/4.png" alt="4.png-19.4kB" title=""> <br />

因为我们现在只安装了一台服务器,所以只有一个主机。我们可以查看现在这台主机的CPU等及基本的信息

<img src="http://static.zybuluo.com/abcdocker/3z8eszo3fkq049tannaae5uk/5.png" alt="5.png-34.8kB" title=""> <br />

点击Monitoring-----Graphs,选择我们要监控的内容

<img src="http://static.zybuluo.com/abcdocker/jtf1af4xjnvy3xrsd4dj78xh/6.png" alt="6.png-15.9kB" title=""> <br />

我们选择可以随便选择一个进行查看信息

例如:我们查看CPU的负载

<img src="http://static.zybuluo.com/abcdocker/0bm73njm959ptg4als0qwa5b/1.png" alt="1.png-60.8kB" title=""> <br />

  某一段时间内,CPU正在处理以及等待CPU处理的进程数的之和。Load Average是从另一个角度来体现CPU的使用状态的。

  这些监控其实就是zabbix在数据库查找数据,然后使用jd进行画图

Zabbix性能依赖于mysql数据库

五、Zabbix页面安全设置

1、设置默认账号密码

<img src="http://static.zybuluo.com/abcdocker/qy3undo0ws22uih91qjtw1g3/2.png" alt="2.png-43.5kB"> <br />

<img src="http://static.zybuluo.com/abcdocker/9chk4nn6s1i80oztvxyvaw2o/3.png" alt="3.png-36.4kB"> <br />

  设置完中文

<img src="http://static.zybuluo.com/abcdocker/kppvhe6mf9grw9w5jdsb07co/1.png" alt="1.png-72.5kB"></p>

六、Zabbix 菜单说明

Zabbix 上方的菜单简单介绍说明

<img src="http://static.zybuluo.com/abcdocker/x3qq2drpbjmdiiwvui1jy5jr/2.png" alt="2.png-54.1kB"> <br />

Doshboard下面可以设置你想设置的图形,添加方法如下:

<img src="http://static.zybuluo.com/abcdocker/v3wzxt4vfzdxw0urfwf9bdgx/3.png" alt="3.png-67.2kB"> <br />

<img src="http://static.zybuluo.com/abcdocker/s7iukf6yamvnzv7m9zf58t2l/4.png" alt="4.png-73.4kB" title="点击查看大图"> <br />

  这时,就可以找到你喜爱的了,直接打开

<img src="http://static.zybuluo.com/abcdocker/fqhleiocm3bx04i40u4n8gwk/6.png" alt="6.png-5.1kB"> <br />

screens其实就是一个聚合图形,可以把多个图片合在一起。然后放在大屏幕上,供别人查看

<img src="http://static.zybuluo.com/abcdocker/dh9wdzemshgzlyg7n4gw761u/1.png" alt="1.png-3.9kB"> <br />

maps就是一个架构图

<img src="http://static.zybuluo.com/abcdocker/hd8shs7qc7xkaoh7z3u7umxw/2.png" alt="2.png-3.2kB"> <br />

Status of Zabbix就是一个状态栏

<img src="http://static.zybuluo.com/abcdocker/bwbdx3oquikrub658ezkyiii/1.png" alt="1.png-18.4kB"> <br />

 第一行是Server是否运行[yes]和后面的运行地址

 第二行监控的机器 (启用的/关闭的/模板)

 第三行监控项 (启用的/关闭的/不支持的)

 第四行触发器的状态 (启用的/关闭的/【故障/正常】)

 第五行 当前用户数量 (在线数量)

 第六行 zabbix每秒可以收到的一个新值

告警的级别

<img src="http://static.zybuluo.com/abcdocker/c6pamoytwajoil3xqpu77owd/2.png" alt="2.png-8kB"> <br />

我们可以设置报警响铃,让他在前端响

<img src="http://static.zybuluo.com/abcdocker/gg42ppmuie5b8lgkp6odqa61/3.png" alt="3.png-57.9kB"> <br />

<img src="http://static.zybuluo.com/abcdocker/5z3wnonc9s9bn6zuxnyjfq4j/4.png" alt="4.png-36.8kB"> <br />

我们首页的监控列表是可以随意拖动的

<img src="http://static.zybuluo.com/abcdocker/3rj36j9dwl6eqmsj4zca2tx8/5.png" alt="5.png-79kB"> <br />

我们还可以将它关闭,并且设置刷新时间

<img src="http://static.zybuluo.com/abcdocker/kht30c50wjjh2q9jmjdfmd31/6.png" alt="6.png-19.8kB"></p>

##################################################################################

Zabbix 3.0 部署监控 [二]

Agent可以干一些SNMP无法干的事情,例如自定义监控项

snmp相关文章:http://www.abcdocker.com/abcdocker/1376

这里我们先不着急点add,还需要设置其他选项

点击监控模板

  zabbix监控是由监控项组成(cpu使用率监控就是一个监控项/内存使用率就是一个监控项),如果是100台服务器就需要监控模板了。只需要将监控项和模板关联起来即可

举个例子:我们上面主机使用的是SNMP,就可以直接搜索SNMP提示:有的模板需要自己定义

温馨提示:请点击下面的小add 然后在点大的。否则会出现问题哦

IPMI如果有的话,需要在这里写上用户名密码

宏定义,这个宏其实就是一个变量。我们给可以给变量附一个值

  因为我们设置的是SNMPSNMP有一个团体名。并且可以设置定义

  团体名是中间的abcdocker,具体的可以看http://www.abcdocker.com/abcdocker/1376

  1. [root@localhost ~]# cat /etc/snmp/snmpd.conf
  2. rocommunity abcdocker 192.168.56.11

值:{$SNMP_COMMUNITY}

主机资产设置分为3中

1、关闭 Disabled

2、手动 Manual

3、自动 Automatic (自动代表的是你在定义监控项的时候,他有一个小箭头,勾上之后监控项的值就会填写在这里)

   我们这设置好模板就可以选择add

SNMP变绿就好了

  现在的状态是用SNMP进行监控了,我们只是添加了一个SNMP OS LINUX的模板,但是出现了4个。这4个链接。可以和多个模板连起来用

进入监控项,下面这个菜单是过滤搜索用的

下面全都是模板

  我们可以随便点击一个,这里我们新建一个监控项

点击创建

类型选择

  Zabbix agent 被动

  Zabbix agent (active主动模式)

  Simple check 简单检测

  SNMPv1 agent ……

在Key这行点击Select 可以进行选择

我们随便选择一个,例如agent.version。查看agent的版本

Numeric是无符号整数型

Configuration----hosts----Graphs

绘图靠的是监控项,我们可以随便打开一个看看

颜色等都是可以随意设置

提示:因为咱们用的版本是3.0当2.4的时候需要在Configuration----下面来创建screens

创建Screens

我们创建一个2*2 命名为test screensscreens

然后我们点进去

点击编辑

点击Change进行设置

多添加几个之后就是以下结果

二、监控案例[自定义监控项]

例如:我们自己添加一个监控项来进行监控当前的活动连接数 [Nginx 安装请看上一篇]

nginx安装地址:http://www.abcdocker.com/abcdocker/1376

Nginx状态模块配置如下,过于简单不说了

  1. [root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
  2. listen 8080;
  3. location /status {
  4. stub_status on;
  5. access_log off;
  6. allow 192.168.56.0/24;
  7. deny all;
  8. }

修改nginx端口并重启

测试:http://192.168.56.11:8080/status

解释说明:使用zabbix来监控活动连接数,通过status状态模块为前提

  我们现在命令取出我们想要的值,例如:

  1. [root@localhost ~]# curl -s http://192.168.56.11:8080/status|grep Active|awk -F "[ ]"'{print $3}'
  2. 1

因为我们是监控他的活动连接数,他的活动连接数为1

  1. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. Include=/etc/zabbix/zabbix_agentd.d/

#提示: 如果想要加自定义监控项,不要在配置文件中写入,可以在Include里面定义的目录写上

  只要我们写在Include目录下,都可以识别到

  1. [root@linux-node1 ~]# cd /etc/zabbix/zabbix_agentd.d/
  2. [root@linux-node1 zabbix_agentd.d]# ls
  3. userparameter_mysql.conf
  4. #默认有一个MySQL的,我们可以参考MySQL的进行操作
  5. UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
  6. #提示,前面是key的名称 后面的key的命令
  7. UserParameter=mysql.version,mysql -V

我们自己编辑一个文件

  1. [root@linux-node1 zabbix_agentd.d]# cat nginx.conf

  2. UserParameter=nginx.active,/usr/bin/curl -s http://192.168.56.11:8080/status|grep Active|awk -F "[ ]"'{print $3}'

  3. #提示,此处配置文件的名字可以随便起

      如果是多个命令可以写一个脚本,命令最好写绝对路径!这个过程其实就是我们定义监控的过程,前面是key的名字,后面是命令

修改完配置文件之后需要重启zabbix-agent

  1. [root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent

      配置完成之后先在server端测试,是否可以获取到agent上的值。不要着急添加

      我们现在只用了1台服务器,本机是server也是agent。然后使用zabbix-get进行测试

  2. [root@linux-node1 zabbix_agentd.d]# yum list|grep zabbix

  3. zabbix-agent.x86_64 3.0.4-1.el7@zabbix

  4. zabbix-release.noarch 3.0-1.el7 installed

  5. zabbix-server-mysql.x86_64 3.0.4-1.el7@zabbix

  6. zabbix-web.noarch 3.0.4-1.el7@zabbix

  7. zabbix-web-mysql.noarch 3.0.4-1.el7@zabbix

  8. python-pyzabbix.noarch 0.7.3-2.el7 epel

  9. uwsgi-stats-pusher-zabbix.x86_64 2.0.13.1-2.el7 epel

  10. zabbix-get.x86_64 3.0.4-1.el7 zabbix

  11. 查看zabbix_get

  12. [root@linux-node1 zabbix_agentd.d]# yum install -y zabbix-get

zabbix-get使用参数如下:

  1. [root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
  2. -s 指定我们要查看的服务器
  3. -p 端口,可以不加。默认是10050
  4. -k 监控项的名称(根据上面的配置来定义的)
  5. 更多参数:zabbix_get --help

如果出现如下错误,大致意思是拒绝连接

  1. [root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
  2. zabbix_get [24234]:Check access restrictions inZabbix agent configuration

解决方法:

  1. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. Server=192.168.56.11

因为我们当时只允许本机127.0.0.1进行连接。所以会出现这样问题

  1. [root@linux-node1 ~]# systemctl restart zabbix-agent

修改完配置文件都要重启

提示: zabbix-agent的配置文件中指定允许那个server连接,那个才可以进行连接。

  1. [root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
  2. 1

正确结果如上!

提示:如果在zabbix-agent上面修改了,还需要在网页上进行修改

/etc/zabbix/zabbix-agent.conf上面指定的Server是谁,就只会允许谁通过。如果有多个ip可以使用逗号进行分割

找到一个安装zabbix-agent,点击

点击items

然后添加Create item(创建item)

Data type:数据类型,这里我们选择Decimal。其他的基本上用不上

Units:单位 超过1千就写成1k了。 可以在这里做一个单位的设置。默认就可以

Use custom multiplier:如果这里面设置了一个数,得出来的结果都需要乘以文本框设定的值

Update interval(in sec) 监控项刷新时间间隔(一般不要低于60秒)

Custom intervals 创建时间间隔(例如:1点-7点每隔多少秒进行监控)格式大致为:周,时,分

History storage period 历史数据存储时间(根据业务来设置,默认就可以)

Trend storage period 趋势图要保存多久

New application 监控项的组

application 选择一个监控项组

Populates host inventory field 资产,可以设定一个监控项。把获取的值设置在资产上面

描述!必须要写。 要不你就是不负责任

添加自定义监控项小结:

   1、添加用户自定义参数(在/etc/zabbix/zabbix.agent.d/定义了一个nginx.conf步骤如上)

   2、重启zabbix-agent

   3、在Server端使用zabbix_get测试获取(命令如上)

   4、在web界面创建item(监控项)

Name:名字

Width:宽度

Height:高度

Graph type:图形类型

其他默认即可

然后我们点击Add添加Items监控项,找到我们刚刚设置的服务器

然后找到我们刚刚添加的监控项

还可以选择颜色,添加其他的很多设置。不细说

  点击Prewview可以进行预览,如果出现字符乱码可以阅读我们另一篇文章(zabbix默认不支持中文)

  确定没有问题,选择下方Add即可

出现我们添加的

需要在Monitoring--->Graphs--->选择我们添加的主机即可

接下来我们需要进行测试

测试前:

使用ab测试工具进行测试,设置100万并发进行访问

  1. [root@linux-node1 ~]# ab -c 1000-n 1000000 http://192.168.56.11:8080/
  2. ThisisApacheBench,Version2.3<$Revision:1430300 $>
  3. Copyright1996AdamTwiss,ZeusTechnologyLtd, http://www.zeustech.net/
  4. Licensed to TheApacheSoftwareFoundation, http://www.apache.org/
  5. Benchmarking192.168.56.11(be patient)

测试后:

我们可以查看zabbix监控图标

我们中间设置了间隔60秒,说明每隔60秒我们进行获取一次

  我们可以设置它的方式显示

找到Graph选择类型,Stacked是堆叠显示,其他的大家可以自行百度。不细说

  堆叠显示如下:

如果我们想加多个图形都显示在一张图上,可以进行如下操作

找到Graphs

找到我们设置的图形

点击添加即可

我们可以让多个图标显示在一个图片上

点击我们创建一个聚合图形(screens

点击进去

点击编辑

选择item添加的地方,因为上面创建聚合图形的时候我们选择了2X2 所以这里会显示2个

找到相对应的添加即可

我们可以多添加几个

结果如上图显示

除了显示图片还可以显示其他内容

Action log:日志
Clock:时间
Data overview:数据概述
Graph:图形
History of events:历史事件
Host group issues:主机组问题
Host issues:主机问题
Hosts info:主机信息
Plain text:文本
Map:架构图
Screen:屏幕
Server info:服务器信息
Simple graph:简单的图
Simple graph prototype:简单的原型图
System status:系统状态
Triggers info:触发器信息
Tiggers overview:概述
URL:URL地址

例如我们输入一个URL:

我们还可以自定义一个Maps,一张架构图。操作如下:

第二步:选择编辑Edit map

因为他默认图片比较小,我们可以点击下方,进行调整图片大小。

点击右上角编辑,然后我们点中图中的服务器即可

我们模拟有2台服务器

然后我们选中新添加的服务器进行修改

点击Apply就可以了。

按住Ctrl点中zabbix server和另台服务器

然后我们点击左上方的Link:他们就连接起来了

温馨提示:修改完成后需要点击保存[update]如果不点后果就是从新在做一遍~

##########################################################################################

Zabbix 3.0 部署监控 [三]


Status of Zabbix(Zabbix状态)介绍

Zabbix server is running                           #Zabbix服务器是否运行
Number of hosts (enabled/disabled/templates)          #主机数量(已启用/已禁用/模板)
Number of items (enabled/disabled/not supported)   #监控项数量(已启用/已禁用/不支持)
Number of triggers (enabled/disabled [problem/ok])   #触发器数量(已启用/已禁用/问题/正常)
Number of users (online)                                             #用户数(线上)
Required server performance, new values per second #要求的主机性能,每秒新值

此处需要注意的事项如下:

1、需要时刻关注那些主机数量中已禁用的(例如:那一天有一台监控有问题,顺手关闭了。没有打开 结果后期导致监控出现问题)

2、监控项数量里面最好不要放置已禁用,要么删除这个监控项或者不让他报警。尽量不要给他禁用

3、触发器只禁用几个没什么大问题,但是如果一下禁用几十个不方便进行管理

4、正式环境最好划分主机组,可以按照业务划分,类型划分。那个出现问题都方便查看处理

Latest data 最新数据介绍

  刚刚之前我们一直使用的是一台服务器,因为不方便解释。我们新添加一台服务器

 加入监控的几个步骤:

  1、安装软件

  2、修改配置

1、设置yum源

  1. [root@linux-node2 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

2、安装软件包

  1. [root@linux-node2 ~]# yum install -y zabbix-agent

3、修改配置文件

  1. [root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. Server=192.168.56.11
  3. ServerActive=192.168.56.11
  4. #提示:这里的IP地址改成Server端的IP地址

4、启动

  1. [root@linux-node2 ~]# systemctl start zabbix-agent
  2. [root@linux-node2 ~]# netstat -lntup|grep zabbix
  3. tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
  4. tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd

5、web界面设置

克隆~

步骤:我们随便点击一个进去。拉到最下面有一个全部克隆

剩下的我们就改一下就可以了

模板修改

其他的就没有什么可以配置的,模板主要是添加Template OS Linux。然后我们选择Add即可

创建完成如下:

新添加的IP如上述所示

上次只是简单的连接线的设置,这次我们进行深入设置

路径:Monitoring--->Maps--->Edit map进行修改

我们点击Zabbix server没有设置主机的,选择Host 修改linux-node2

提示:此处我们修改了2台主机,这个可以根据业务需求进行设置

我们新添加一台,然后进行连接。Ctrl + 主机 然后点击Link:Add

  例如我们想查看他们的流量带宽

  首先,他们必须要连接在一起,然后点击Links选项后面的Edit进行编辑

  我们可以在Label表里面写监控项的值

  我们可以在Configuration--->Hosts--->items中查看到

括号内写入发下:

  1. {linux-node2.example.com:net.if.out[eth0].last(0)}
  2. linux-node2.example.com=主机名
  3. net.if.out=key值
  4. last(0)=获取最新的一个数据

  现在我们就可以实时的监控流量

  切记需要update

保存如下图显示

  我们可以先打开Events查看事件

**zabbix事件有很多类型

Trigger=触发器的事件

Disovery=自动发现事件

还有内部的事件以及自动注册的事件**

我们可以选择主机,查看相对应的事件

  Zabbix的报警可以当做事件通知,当这个事件发生时。zabbix进行通知(报警)

  事件报警分为2种方式:

**1、怎么通知

2、通知给谁**

Zabbix通知方式:

Zabbix通知方式通过Actions进行通知

Zabbix默认有一个,我们可以点开进行查看

条件设置

操作设置

温馨提示:保存的时候需要先点击下方小的Update 否则就木有啦

  这里的步骤可以让报警邮件发送的级别、例如:先发送给运维、项目经理、项目总监

例如如下:

  刚刚的填写完成,现在提示的是1-2 发送的人 我们可以点击下面的New在添加几个

  模拟设置,当报警1-2次时候发送给XX,2-4次发送给XX依次叠加

   我们需要配置报警媒介类型,用于发送邮件

  温馨提示:3.0之前发送邮件需要启动邮件相关服务来进行安全认证,3.0之后默认自带安全认证

  我们以qq邮箱为例

  我们还需要配置用户的邮箱,因为上面已经选择发送给那个用户。接下来就改配置用户的邮箱

我们点开之后选择Media报警媒介进行设置)如果看不懂英文我们可以设置中文

然后我们选择下方的Add

  设置收件人地址

小结:步骤就不截图了,可以调成中文,按照步骤来。

1、报警媒介
2、动作(active)配置(操作--编辑)  注意点小的update
3、创建用户群组(注意权限)
4、创建用户(权限和报警媒介设置)权限只能按照用户组分配(我们可以选择用户/管理员/超级管理员)

提示:添加新主机后,要注意确认权限分配

  我们的使用QQ邮箱需要开启SNMP和一个授权码。 填写发件人密码时需要设置授权码为密码

邮件结果如下:

异常

因为我们开启了正常之后继续发送邮件,所以正常之后邮件如下

提示:当异常时它会一直发邮件,直到服务正常或者匹配规则到时

#################################################################################

Zabbix 3.0 生产案例 [四]

一、项目规划

   交换机

   Nginx

   Tomcat

   MySQL

  1、使用SNMP监控交换机

  2、使用IPMI监控服务器硬件

  3、使用Agent监控服务器

  4、使用JMX监控Java应用

  5、监控MySQL

  6、监控Web状态

  7、监控Nginx状态

SNMP监控

 1.1 在交换机上开启Snmp

  1. config t

  2. snmp-server community public ro

  3. end

  4. 提示:如果不知道我们可以百度

     1.2 在Zabbix上添加SNMP监控

     步骤:Configuration--->Hosts--->设置

     

 1.3 Host页面设置

 1.4 Templates 模板设置

设置SNMP团体名称Macros宏

这里的设置要跟我们创建的SNMP的设置相同

因为Zabbix监控的时候依赖团体名称

 1.5 生产图片

  Zabbix会自动给我们进行检测端口,每个端口都会添加一个网卡的流量图,每个端口都会加上一个触发器。(端口的状态) 还会帮我们添加VLAN的一个监控

 1.6 案例图

  含有有进口和出口流量

提示:此图是Zabbix SNMP模板自动生成的


IPMI监控

  2.1 添加IPMI

Configuration--->Hosts--->选择主机--->设置IPMI端口及主机--->用户名密码

  因为IMP容易超时,建议使用自定义item,本地执行ipmitool命令来获取数据

JMX监控

  Zabbix默认提供了一个监控JMX

通过java gateway来监控java

地址:https://www.zabbix.com/documentation/3.2/manual/appendix/config/zabbix_java

  JAVA GATEWAY需要独立安装,相当于一个网关,因为zabbix_server和zabbix-agent不可以直接获取java信息。所以需要一个代理来获取

zabbix java Gateway不存任何数据,只是一个简单的代理

1、安装

  1. [root@linux-node1 ~]# yum install -y zabbix-java-gateway java-1.8.0
  2. 提示:java-gateway 需要java环境

2、配置

修改java-gateway

  1. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
  2. # LISTEN_IP="0.0.0.0" 监听的IP地址
  3. # LISTEN_PORT=10052 监听的端口
  4. PID_FILE="/var/run/zabbix/zabbix_java.pid"存放pid路径
  5. # START_POLLERS=5 开通几个进程,默认是5。你有多少java进行可以设置多少个,也可以设置java进程的一半。
  6. TIMEOUT=3超时时间1-30,如果网络环境差,超时时间就修改长一点

我们默认就可以了,不进行修改

3、启动

  1. [root@linux-node1 ~]# systemctl start zabbix-java-gateway.service

4、端口、进程查看

我们可以进行进程的查看

  1. [root@linux-node1 ~]# netstat -lntp
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:33060.0.0.0:* LISTEN 10439/mysqld
  5. tcp 000.0.0.0:80800.0.0.0:* LISTEN 33484/nginx: master
  6. tcp 000.0.0.0:220.0.0.0:* LISTEN 1054/sshd
  7. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2484/master
  8. tcp 000.0.0.0:100500.0.0.0:* LISTEN 76482/zabbix_agentd
  9. tcp 000.0.0.0:100510.0.0.0:* LISTEN 34572/zabbix_server
  10. tcp 00127.0.0.1:1990.0.0.0:* LISTEN 11143/snmpd
  11. tcp6 00:::80:::* LISTEN 10546/httpd
  12. tcp6 00:::22:::* LISTEN 1054/sshd
  13. tcp6 00::1:25:::* LISTEN 2484/master
  14. tcp6 00:::10050:::* LISTEN 76482/zabbix_agentd
  15. tcp6 00:::10051:::* LISTEN 34572/zabbix_server
  16. tcp6 00:::10052:::* LISTEN 13465/java

10052 zabbix-java-gateway默认端口已经起来了!

  它是一个java应用,需要安装jdk

  1. [root@linux-node1 ~]# ps -aux|grep java
  2. root 134650.43.4224894434060?Sl19:170:01 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-3.0.4.jar-Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.timeout=3-Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
  3. root 135840.00.0112648972 pts/0 S+19:210:00 grep --color=auto java

5、通知zabbix-server

  我们需要通知zabbix-serverjava-gateway在哪里

修改配置文件

  1. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf
  2. 编辑zabbix-server来指定zabbix-java-gateway
  3. JavaGateway=192.168.56.11#IP地址是安装java-gateway的服务器
  4. # JavaGatewayPort=10052 端口,默认就可以
  5. StartVMwareCollectors=5预启动多少个进程[zabbix--->java-gateway的数量]

6、重启zabbix-server

  1. [root@linux-node1 ~]# systemctl restart zabbix-server.service

7、准备apache

我们安装tomcat-8版本

官网:http://tomcat.apache.org

下载软件包

  1. [root@linux-node2 src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

我们将tomcat安装在apache服务器上,来模拟监控jvm

  1. [root@linux-node2 src]# tar xf apache-tomcat-8.5.5.tar.gz
  2. [root@linux-node2 src]# mv apache-tomcat-8.5.5/usr/local/
  3. [root@linux-node2 src]# ln -s /usr/local/apache-tomcat-8.5.5/ /usr/local/tomcat
  4. [root@linux-node2 src]# yum install -y java-1.8.0#tomcat 需要在java环境运行
  5. [root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
  6. Using CATALINA_BASE:/usr/local/tomcat
  7. Using CATALINA_HOME:/usr/local/tomcat
  8. Using CATALINA_TMPDIR:/usr/local/tomcat/temp
  9. Using JRE_HOME:/usr
  10. Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  11. Tomcat started.

在web2上面查看运行状态

  1. [root@linux-node2 src]# netstat -lntup
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
  5. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
  6. tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
  7. tcp6 00:::8080:::* LISTEN 25750/java
  8. tcp6 00:::22:::* LISTEN 1073/sshd
  9. tcp6 00::1:25:::* LISTEN 2498/master
  10. tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
  11. tcp6 00127.0.0.1:8005:::* LISTEN 25750/java
  12. tcp6 00:::8009:::* LISTEN 25750/java

JMX三种类型:

  1.无密码认证

  2.用户面密码认证

  3.ssl

开启JMX远程监控

官方文档:http://tomcat.apache.org/tomcat-8.0-doc/monitoring.html

我们创建一个无密码认证

  1. [root@linux-node2 src]# vim /usr/local/tomcat/bin/catalina.sh
  2. CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
  3. -Dcom.sun.management.jmxremote.port=8888    #端口号
  4. -Dcom.sun.management.jmxremote.ssl=false     #SSL 关闭
  5. -Dcom.sun.management.jmxremote.authenticate=false #用户密码验证关闭
  6. -Djava.rmi.server.hostname=192.168.56.12"        #监控的主机

修改完成后重启tomcat

可以使用./shutdown.sh 或者使用kill的方式

  1. [root@linux-node2 src]#/usr/local/tomcat/bin/shutdown.sh
  2. Using CATALINA_BASE:/usr/local/tomcat
  3. Using CATALINA_HOME:/usr/local/tomcat
  4. Using CATALINA_TMPDIR:/usr/local/tomcat/temp
  5. Using JRE_HOME:/usr
  6. Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  7. 中间可以使用px -aux|grep java 查看是否被杀死
  8. [root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
  9. Using CATALINA_BASE:/usr/local/tomcat
  10. Using CATALINA_HOME:/usr/local/tomcat
  11. Using CATALINA_TMPDIR:/usr/local/tomcat/temp
  12. Using JRE_HOME:/usr
  13. Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  14. Tomcat started.

我们JMX端口设置为8888

  1. [root@linux-node2 src]# netstat -lntup

  2. ActiveInternet connections (only servers)

  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name

  4. tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd

  5. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master

  6. tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd

  7. tcp6 00:::8080:::* LISTEN 26226/java

  8. tcp6 00:::22:::* LISTEN 1073/sshd

  9. tcp6 00:::8888:::* LISTEN 26226/java

  10. tcp6 00::1:25:::* LISTEN 2498/master

  11. tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd

  12. tcp6 00:::38532:::* LISTEN 26226/java

  13. tcp6 00127.0.0.1:8005:::* LISTEN 26226/java

  14. tcp6 00:::8009:::* LISTEN 26226/java

  15. tcp6 00:::38377:::* LISTEN 26226/java

     我们可以在windows上面安装jdk ,使用命令行来监控java

  我们下载安装,具体步骤不说了,然后我们找到jconsole.exe文件运行

填写安装JMX的服务器

  因为在配置文件中我们设置的是无密码认证,所以这里不需要输入密码直接连接。端口号我们设置的是8888连接即可

这样我们就可以在图形化监控tomcat

  提示:按照现在观察,java-gateway已经安装成功,我们可以加入到zabbix中

  找我们要添加的主机

填写安装java-gateway的主机

我们还需要设置一个模板

这个模板就是我们自带的一个监控JMX的模板,然后我们点击Update.更新

我们需要等待一会才可以出图

提示:可以在Zabbix-server上使用zabbix-get获取某一台机器的某一个key

效果图如下:需要等待一会

手动检测监控状态

Zabbix-Server操作:

  1. [root@linux-node1 ~]# yum install -y zabbix-get

Key:

我们随便找一个key,然后我们复制后面的key

  1. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k jmx["java.lang:type=Runtime",Uptime]
  2. ZBX_NOTSUPPORTED:Unsupported item key.

提示:未支持的key,现在并不能获取到这个key 因为没有获取到这个值,所以不会显示。我们可以获取别的试一下

  1. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  2. 0.079323
  3. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  4. 0.075377
  5. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  6. 0.075377
  7. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  8. 0.073547

小结: Zabbix其实就是通过zabbix_get 获取到的这个值进行比较的

开启zabbix debug模式

  1. [root@linux-node2 tomcat]# systemctl restart zabbix-agent

  2. ### Option: DebugLevel

  3. # Specifies debug level:

  4. # 0 - basic information about starting and stopping of Zabbix processes

  5. # 1 - critical information

  6. # 2 - error information

  7. # 3 - warnings

  8. # 4 - for debugging (produces lots of information)

  9. # 5 - extended debugging (produces even more information)

  10. DebugLevel=4

如果及别是4就是debug模式,修改完配置文件之后需要重启生效

**1.开启Nginx监控

2.编写脚本来进行数据采集

3.设置用户自定义参数

4.重启zabbix-agent

5.添加item

6.创建图形

7.创建触发器

8.创建模板**

  1. 脚本编写: 我们这里提供已经写好的脚本

  链接:https://pan.baidu.com/s/19JrCetaRZYGY_mvq4CyoJQ 密码:94us

  2. 需要修改一下zabbix-agent的配置文件

  1. vim /etc/zabbix/zabbix_agentd.conf

  2. #修改Include设置,这样我们可以把脚本放在这个目录下。配置就是.conf结尾

  3. Include=/etc/zabbix/zabbix_agentd.d/*.conf

      3.添加权限及测试脚本

  4. [root@linux-node1 zabbix_agentd.d]# chmod +x zabbix_linux_plugin.sh

  5. [root@linux-node1 zabbix_agentd.d]# sh zabbix_linux_plugin.sh

  6. Usage: zabbix_linux_plugin.sh {tcp_status key|memcached_status key|redis_status key|nginx_status key}

提示: 这个脚本要用zabbix用户执行的权限,因为都是zabbix用户在执行,监控TCP会在/tmp/目录生成一个文件用于监控使用

 4.修改nginx配置文件

  1. 提示:nginx 默认路径是/usr/local/nginx 编译安装需要查看安装路径
  2. [root@linux-node1 zabbix_agentd.d]# vim /usr/local/nginx/conf/nginx.conf
  3. location /nginx_status {
  4. stub_status on;
  5. allow 127.0.0.1;
  6. access_log off;
  7. }

因为脚本的url是nginx_status所以我们配置文件也要这样修改

  测试脚本

  1. [root@linux-node1 zabbix_agentd.d]# curl 192.168.56.11:8080/nginx_status
  2. Active connections:1
  3. server accepts handled requests
  4. 282368228236822821835
  5. Reading:0Writing:1Waiting:0
  6. [root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 active
  7. 1
  8. [root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 reading
  9. 0
  10. [root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 handled
  11. 2823688

设置Key,首先是Key的名称

  1. [root@linux-node1 zabbix_agentd.d]# cat linux.conf
  2. UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1""$2""$3"
  3. [*]代表一个传参,可以将后面的$1,$2,$3引入进行
  4. ,后面是脚步本的路径

需要重启agent

  1. [root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent

我们使用zabbix_get进行测试

  1. [root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-k linux_status[nginx_status,8080,active]

  2. 1

  3. [-k]就是指定key 不细说了

  4. [*]*的作用在web界面配置item会显示出来

     5.Zabbix web界面设置

      我们需要添加item,因为要加好多。我们就使用模板的方式进行添加

提示:我们写一下注释然后选择Add即可

找到我们的模板

我们创建item

创建

各参数前文都有讲解不细说!

 修改完成吼点击Add

  添加完成后我们要复制很多个用来监控Nginx status的所有状态,所以我们使用克隆。来克隆多个进行设置

点进我们的item,然后拖到最下面选择克隆

填一些基本的修改即可,例如下:

添加完成如下图:

item添加完成我们还需要添加一个图形,用于展示,找到图形路径。点击创建

因为我们主机还没有加入我们的模板,所以我们这里是没有数据的

下面将模板加入到主机中

修改模板

查看结果如下:

 6.导出模板

因为设置模板比较麻烦,我们可以将模板导出

导出之后我们需要修改名称就可以了

 7.导入模板

我们需要导出自然需要导入,操作如下:

点击添加即可

提示: 模板之间的名称不可以相同

 8.导入TCP模板

  加入模板的步骤跟刚刚加入Nginx的一样,这里我们就使用模板了。

下载链接:http://pan.baidu.com/s/1i54ULjJ 密码:25lh

我们导入模板即可

导入完成之后我们可以查看模板

  在里面我们可以见到TCP的11种状态,这个item是我们需要根据我们脚本进行同步的。

我们可以随便点击一个进行查看,其中这里的key要和脚本的相同

我们在两台服务器都加载这个模板

步骤和上面的一样

添加完成

  查看脚本需要等待1分钟,这主要看我们设置的获取值的时间而定。

我们可以查看图形

###########################################################################################

Zabbix 3.0 生产案例 [五]

上面我们说到了监控TCP和Nginx状态,但是光是监控是没有任何作用的。监控完我们不知道跟没监控没啥区别,下面我们进行`监控项的讲解

  首先我们给Nginx添加触发器

1.选择Configuration--->Hosts

2.找到我们相对应的主机进入

3.选择主机中的Triggers--->添加(Create trigger)

我们设置一个事件

我们选择Insert,然后选择Add即可

4.查看报警状态

 因为我们设置的级别大于1就报警,默认Nginx是0,随便访问以下就是1.所以肯定就会报警。报警邮件可以根据我们前面 [Zabbix 3.0 部署监控 [三]]文章进行设置

 报警邮件如下:

我们可以查看这个事件的相关过程

以上就是我们添加的一个触发器报警步骤

 Zabbix默认触发器的预值比较低,我们需要调大。这个在面试过程中会被问到

我们进行修改默认模板

路径下图:

我们可以看到默认是大于300进行报警,我们点进去修改即可

  根据实际情况进行修改,我们设置600即可。同时触发器支持多个条件进行报警,如or all等,只需要在上面的值后面继续添加即可。

  我们修改完之后

  

  还有一个有警告显示磁盘不够,因为是虚拟机我们不予理会,我们可以查看到恢复之后的邮件

提示: Zabbix邮件报警是3.0才有的,以前不支持用户名密码。所以早期都是使用脚本进行发送邮件报警。

 由于时间关系我们就不进行写了请下载发送邮件的python脚本:

链接:http://pan.baidu.com/s/1gfkGrgZ 密码:6bsh

脚本注释:

  1. Python脚本中三个相关的参数
  2. receiver = sys.argv[1]
  3. #收件人地址
  4. subject = sys.argv[2]
  5. #发送邮件的主题
  6. mailbody = sys.argv[3]
  7. #发送邮件的内容
  8. smtpserver ='smtp.exmail.qq.com'
  9. #邮件服务器地址,本脚本使用的是企业邮箱
  10. username ='username'
  11. #用户名
  12. password ='password'
  13. #密码
  14. sender = username
  15. #发送人名称

我们如果要写一个发送邮件的脚本,需要支持个参数

**1、收件人

2、标题

3、内容**

 我们也可以使用shell写一个最简单的

脚本存放路径:我们可以在配置文件中查看

  1. [root@linux-node1 web]# vim /etc/zabbix/zabbix_server.conf
  2. AlertScriptsPath=/usr/lib/zabbix/alertscripts

提示: 这行配置文件定义了邮件脚本的存放路径,因为它默认会从usr/lib/zabbix/alertscripts查找邮件脚本

  1. [root@linux-node1 web]# vim /usr/lib/zabbix/alertscripts/sms.sh

  2. #!/bin/bash

  3. ALTER_TO=$1

  4. ALTER_TITLE=$2

  5. ALTER_BODY=$3

  6. echo $ALTER_TO >>/tmp/sls.log

  7. echo $ALTER_TITLE >>/tmp/sms.log

  8. echo $ALTER_BODY >>/tmp/sms.log

我们可以写完之后进行检测,如果这里有信息说明已经调用这个脚本。 如果我们有短信通道将里面的内容换一下即可,短信通道都是有售后的

  1. 修改权限

  2. [root@linux-node1 web]# chmod +x /usr/lib/zabbix/alertscripts/sms.sh

  3. [root@linux-node1 web]# ll /usr/lib/zabbix/alertscripts/sms.sh

  4. -rwxr-xr-x 1 root root 152Oct820:26/usr/lib/zabbix/alertscripts/sms.sh

      我们写的脚本是短信报警,首先你需要有一个短信通道,我们可以使用阿里云大鱼,本次我们使用文件追加的形式来模拟.

点击右上角创建报警介质

点击最下面的Add

提示:先点击小的Update在点最下面的Update

我们还需要修改报警媒介

找到相对应的用户,点击。

  接下来就需要我们触发报警了

上面我们设置的连接数是大于1,所以我们多刷新几次就可以了

这里显示发送完成,我们去日志进行查看

  1. 13122323232为发送的手机号
  2. PROBLEM:为主题信息NginxActive监控项
  3. Original........:为故障信息,2代表连接数是2

提示: 因为中国的短信收费是70个字符2毛,字母也算是。所以我们发送邮件的报警信息就需要简介明了一点

修改后如下:

  设置完成之后最好数一下,不要超过70个字符

http://www.alidayu.com/

有兴趣的同学可以自己了解一下阿里大鱼,可以提供短信通道、语音、验证码等业务。

短信通道比较出名的几款产品:

  亿美软通 阿里大鱼 腾讯云也有

  短信报警和邮件报警已经说过了,我们简单的说一下微信报警

  因为在很早之前就说过,个人服务号和订阅号不支持直接跟订阅用户进行沟通。如果是企业号可以直接获取到一个类似key,拿着这个key直接curl就可以了发了。 具体内容可以进行百度或者谷哥搜索。

扩展: 除了以上三种报警,还有钉钉报警以前还有QQ报警飞信报警,但是现在已经不开源了

提示: 上面那三行最好不要删除,在生产环境中追加到一个文件中。记录发送邮件的信息

#####################################################################################

Zabbix 3.0 监控MySQL [六]

Mysql监控

  zabbix自带了一个监控mysql的模板,但是真正监控mysql的并不是zabbix自带的模板。而是percona公司的一个监控mysql模板

 percona官网: www.percona.com

Percona组成介绍

1、php脚本    用来数据采集
2、shell脚本  用来调用采集信息
3、zabbix配置文件
4、zabbix模板文件

安装文档:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html

  percona 利用的是php来获取mysql的相关信息,所以如果我们想使用percona插件监控mysql就需要在agent端安装php。在安装文档上有写哦~

安装步骤: 查看上面的链接也可以进行安装

我们安装在zabbix-server上,因为上面有一个MySQL

  1. [root@linux-node1 web]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

  2. [root@linux-node1 web]# yum install percona-zabbix-templates php php-mysql -y

  3. #percona插件是通过php去获取mysql的参数,所以我们要安装php和php-mysql

  4. 我们可以查看它都安装了那些软件

  5. [root@linux-node1 web]# rpm -ql percona-zabbix-templates

  6. /var/lib/zabbix/percona

  7. /var/lib/zabbix/percona/scripts

  8. /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh #shell脚本

  9. /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php #php获取mysql信息

  10. /var/lib/zabbix/percona/templates

  11. /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf #zabbix配置文件

  12. /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml #zabbix模板文件

  13. 在percona组成我们已经说过了,此处只是略微介绍。

我们将zabbix模板下载下来

  1. [root@linux-node1 web]# sz /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml

      然后我们需要将模板通过web界面导入到zabbix中

提示:如果出现错误,可能是zabbix 3.0版本的问题。我们这里提供了一个生产的模板

下载链接:https://pan.baidu.com/s/1TgsPR3qjWyxjwKYQrz6fWQ 密码:u09h

然后从新上传即可

复制配置文件

  1. [root@linux-node1 web]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
  2. [root@linux-node1 web]# ls /etc/zabbix/zabbix_agentd.d/
  3. #安装完软件包后会在/var/lib/zabbix/percona/templates/目录下产生一个配置文件,我们将它拷贝,因为在前面的博文中,我们已经修改过zabbix的配置文件[Include=/etc/abbix/zabbix_agentd.d/
  4. ]所以将配置文件放在这个目录下,zabbix就会自己在这个目录下查找相关信息
  5. [root@linux-node1 web]# systemctl restart zabbix-agent.service
  6. 重启一下!

下面就应该配置与MySQL的连接

/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf创建一个文件

  1. [root@linux-node1 ~]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
  2. <?php
  3. $mysql_user ='root';
  4. $mysql_pass ='';
  5. #用户名密码可以自己创建,有密码写密码,没密码为空就好了

提示: 正常这里的用户我们应该创建一个专门用来监控的,由于我这里是测试环境。就不浪费时间了

查看是否可以获取到值,随便找一个测试

  1. [root@linux-node1 ~]# cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf
  2. 选择一个肯定有值的key
  3. [root@linux-node1 ~]# cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf|grep gm
  4. UserParameter=MySQL.read-views,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gm
  5. 测试结果如下:
  6. [root@linux-node1 ~]# cd /var/lib/zabbix/percona/scripts/
  7. [root@linux-node1 scripts]#./get_mysql_stats_wrapper.sh gm
  8. 1
  9. [root@linux-node1 scripts]#./get_mysql_stats_wrapper.sh gw
  10. 9736342
  11. 可以获取到值,说明没有问题

温馨提示: shell脚本中数据库的路径是localhost,如果我们没有授权localhost会获取不到值

  1. [root@linux-node1 scripts]# cat get_mysql_stats_wrapper.sh

  2. HOST=localhost

  3. RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G'| egrep '(Slave_IO_Running|Slave_SQL_Running):'| awk -F:'{print $2}'| tr '\n'','`

  4. #mysql是通过命令来获取的,如果环境变量不一样 也可能造成影响

Zabbix_Web界面配置

  模板已经上传到zabbix中,这时候我们就需要进行设置了

提示: 我们还需要授权/tmp下的一个文件,因为默认情况下 zabbix在文件中获取的值

修改完就可以获取值了,所以我们还需要测试

结果如下图

思想:

  如果出现错误我们需要先查看shell的脚本,因为shell是去调用php。 错误的因素有很多,最简单的方法就是用shell 后面加上key 看看是否可以有值。

  其中报错最多的地方就是php和mysql连接的问题,还有我们mysql授权的一些问题。

#######################################################################################

Zabbix 3.0 监控Web [七]

  Zabbix 默认自带一个web监控

我们可以从Monitoring--->Web进行查看

一、检查

  首先我们需要检查192.168.56.12是否有tomcat,是否可以运行。能否访问

  1. 1.查看进程

  2. [root@linux-node2 ~]# ps -ef|grep java

  3. root 804825468010:31 pts/000:00:00 grep --color=auto java

  4. root 4275710Sep26 pts/000:38:59/usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djdk.tls.ephemeralDHKeySize=2048-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.56.12-classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

  5. 2.查看端口

  6. [root@linux-node2 ~]# lsof -i:8080

  7. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

  8. java 42757 root 48uIPv63793790t0 TCP *:webcache (LISTEN)

  9. 3.测试是否可以访问8080端口

  10. [root@linux-node2 ~]# curl -I 192.168.56.11:8080

  11. HTTP/1.1200 OK

  12. Server: nginx/1.10.1

  13. Date:Mon,10Oct201605:08:18 GMT

  14. Content-Type: text/html

  15. Content-Length:612

  16. Last-Modified:Mon,19Sep201601:59:49 GMT

  17. Connection: keep-alive

  18. ETag:"57df4695-264"

  19. Accept-Ranges: bytes

提示: 监控Web 不依赖于agent,是server直接发送请求的

提示: 这里名字叫做Web场景,因为我们可以设置触发上面3个选项后,才进行报警

提示: 字符串里面可以添加一些字符串,当请求下来有这个字符串就是正常,没有就是不正常。但是最常用的还是状态

然后我们选择Add

  比较坑的一点是,我们新添加了一个Web监控。zabbix默认没有给我们安装触发器

Web监控中默认不含有触发器,所以需要手动添加

点右上角,进行创建触发器

1、停掉tomcat,要想返回值不是200 停掉tomcat是最简单的

  1. [root@linux-node2 ~]#/usr/local/tomcat/bin/shutdown.sh

  2. Using CATALINA_BASE:/usr/local/tomcat

  3. Using CATALINA_HOME:/usr/local/tomcat

  4. Using CATALINA_TMPDIR:/usr/local/tomcat/temp

  5. Using JRE_HOME:/usr

  6. Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

  7. 检查

  8. [root@linux-node2 ~]# ps aux|grep tomcat

  9. root 87230.00.0112648976 pts/1 R+12:210:00 grep --color=auto tomcat

报警如下:

回复如上

邮件报警设置可以访问 Zabbix 3.0 生产案例 [五]

我们还可以优化动作[Actions]

  **Zabbix 就是一个万能的什么都可以监控,只要我们有key。什么都可以监控

key我们可以使用脚本,程序等等等**

###########################################################################################

监控常遇到的问题?

  1.监控主机多,性能跟不上,延迟大

  2.多机房,防火墙因素

Zabbix轻松解决以上问题,Nagios不太好解决的问题。

Zabbix 模式介绍:

1、被动模式

2、主动模式

  默认是被动模式,我们可以通过以下方式查看监控项是什么模式

因为我们使用的是模板,无法进行修改。我们可以修改配置文件或者新建item的时候设置。

  注意:

 1、当监控主机超过300+,建议使用主动模式(此处是一个经验值,要根据服务器的硬件来进行考虑)

 2、还需要保证Queue对列里面没有延迟的主机

Queue 对列介绍

如果此处的延迟主机有点多的话,我们就需要将被动模式修改为主动模式.

192.168.56.12监控设置为主动模式

1、修改配置文件

为了方便模拟,我们将node2(192.168.56.12)从Zabbix删除从新添加

  1. [root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf

  2. #Server=192.168.56.11

  3. #我们需要注释Server,因为这个是被动模式用的

  4. StartAgents=0

  5. #设置为0之后就不会TCP端口,之前监听TCP端口是因为Server要去问agent信息所以需要开启

  6. ServerActive=192.168.56.11

  7. #此处可以是IP或者是域名,他会连接10051端口

  8. Hostname=linux-node2.example.com

  9. #唯一识别符,我们需要修改成我们本机的主机名。如果我们不设置,它默认会通过item来获取

  10. [root@linux-node2 ~]# systemctl restart zabbix-agent.service

  11. 保存重启

保存重启之后我们可以查看我们监听的一些端口,因为我们关闭的被动模式所以不会在监听zabbix端口了

  1. [root@linux-node2 ~]# netstat -lntup
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
  5. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
  6. tcp6 00:::44589:::* LISTEN 9052/java
  7. tcp6 00:::8080:::* LISTEN 9052/java
  8. tcp6 00:::22:::* LISTEN 1073/sshd
  9. tcp6 00:::8888:::* LISTEN 9052/java
  10. tcp6 00::1:25:::* LISTEN 2498/master
  11. tcp6 00:::39743:::* LISTEN 9052/java
  12. tcp6 00127.0.0.1:8005:::* LISTEN 9052/java
  13. tcp6 00:::8009:::* LISTEN 9052/java

我们可以查看日志,进行检查

  1. [root@linux-node2 ~]# tailf /var/log/zabbix/zabbix_agentd.log
  2. 14932:20161011:084303.210****Enabled features ****
  3. 14932:20161011:084303.210IPv6 support: YES
  4. 14932:20161011:084303.210 TLS support: YES
  5. 14932:20161011:084303.210**************************
  6. 14932:20161011:084303.210 using configuration file:/etc/zabbix/zabbix_agentd.conf
  7. 14932:20161011:084303.210 agent #0 started [main process]
  8. 14933:20161011:084303.227 agent #1 started [collector]
  9. 14934:20161011:084303.227 agent #2 started [active checks #1]
  10. 14934:20161011:084303.271 no active checks on server [192.168.56.11:10051]: host [linux-node2.example.com]not found
  11. 14934:20161011:084503.415 no active checks on server [192.168.56.11:10051]: host [linux-node2.example.com]not found

日志解释:

zabbix—agent设置完主动模式后,会去主动问server需求。相当于入职刚入职运维需要老大进行分配任务。并且以后就会根据这个任务清单进行执行 因为我们还没有配置server,所以现在会出现错误

Zabbix-web设置

我们需要添加zabbix-agent

添加模板zabbix没有提供主动模式的模板。所以我们需要克隆一下OS Linux

找到OS Linux 模板,移动到最下面 点击复制

我们从新进行设置名称

修改我们刚刚添加的模板名为OS Linux Active

我们点击刚刚创建模板的item

然后选择最下方Update

结果如下:

在次查看模板,发现zabbix还依赖一个模板。我们需要把它也改了或者是删掉。

我们添加主机

添加模板

#提示:我们已经可以获取到数据了,但是发现zabbix 这个模块发红。可能是由于我们没有修改他的依赖造成的

如下图:

可能是通过agent.ping来获取信息,没有看过源码 所以不太清楚,我研究它

zabbix主备模式完成

#########################################################################################

Zabbix 3.0 分布式监控 [九]

  Zabbix Proxy是一个类似于代理的服务,可以代替Zabbix-server获取 zabbix-agent信息。其中数据存到本地(Proxy有自己的数据库)然后在发送给Server,这样可以保证数据不丢失

  Zabbix-server ----->Zabbix-Proxy ----->Zabbix-Server

  

地址:https://www.zabbix.com/documentation/3.0/manual/distributed_monitoring/proxies

  常用于多机房情况或者监控主机特别多,几千台左右。这时候使用Zabbix Proxy 可以减轻服务器server的压力,还可以减轻Zabbix的维护。

  最常用的特点是适用于多机房网络不稳定的时候,因为如果直接由Zabbix-server发送信息可能agent没有收到,但是直接使用Zabbix-Proxy就不会遇到这个问题。

Zabbix官方说明(分布式监控)

Proxy 有如下功能

地址: https://www.zabbix.com/documentation/3.0/manual/distributed_monitoring

NO - 中文解释

1.没有Web界面

2.本身不做任何告警通知(告警通知都是Server做)

小结:

  Zabbix Proxy 可以有多个,用来代理Zabbix server来运行。Proxy会将所有数据暂存于本地,然后同一转发到Zabbix Server上

  Proxy只需要一条TCP链接,可以连接到Zabbix-server上即可。所以防火墙只需要添加一条Zabbix Proxy即可 我们可以参考上面的Zabbix Proxy图

  Proxy是需要使用单独的数据库,所以不能将ServerAgent放在一起

Proxy说明:https://www.zabbix.com/documentation/3.0/manual/distributed_monitoring/proxies

安装文档:https://www.zabbix.com/documentation/3.0/manual/installation/install

 官方文档使用的是源码安装,因为方便我们使用yum安装,因为我们只有2台,所以就用agent当做Proxy

  1. [root@linux-node2 ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mariadb-server

  2. 我们需要启动MySQL

  3. [root@linux-node2 ~]# systemctl start mariadb.service

我们还需要创建一个

  1. mysql
  2. create database zabbix_proxy character set utf8;
  3. grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy';

我们需要导入数据

  1. [root@linux-node2 ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.5/
  2. [root@linux-node2 zabbix-proxy-mysql-3.0.5]# zcat schema.sql.gz | mysql -uzabbix_proxy -p zabbix_proxy
  3. Enter password:
  4. #密码是:zabbix_proxy 是我们数据库授权的密码

检查数据库

  1. mysql
  2. show databases;
  3. use zabbix_proxy;
  4. show tables;
  5. #查看是否含有数据

我们需要修改proxy的配置文件

  1. [root@linux-node2 zabbix-proxy-mysql-3.0.5]# vim /etc/zabbix/zabbix_proxy.conf

  2. Server=192.168.56.11

  3. Hostname=Zabbix proxy

  4. DBName=zabbix_proxy

  5. #数据库名称

  6. DBUser=zabbix_proxy

  7. #用户名

  8. DBPassword=zabbix_proxy

  9. #用户密码

  10. 配置文件中没有配置的内容如下:(有需要可以配置)

  11. # ProxyLocalBuffer=0

  12. #数据保留的时间(小时为单位)

  13. # ProxyOfflineBuffer=1

  14. #连不上Server,数据要保留多久(小时为单位,默认1小时)

  15. # DataSenderFrequency=1

  16. #数据的发送时间间隔(默认是1秒)

  17. # StartPollers=5

  18. #启动的线程数

  19. # StartIPMIPollers=0

  20. #启动IPMI的线程数

  21. 从这往下都是性能的监控,就不一次说明了。上面都有中文注释

过滤修改过的配置如下:

  1. [root@linux-node2 zabbix-proxy-mysql-3.0.5]# grep '^[a-Z]'/etc/zabbix/zabbix_proxy.conf
  2. Server=192.168.56.11
  3. Hostname=Zabbix proxy
  4. LogFile=/var/log/zabbix/zabbix_proxy.log
  5. LogFileSize=0
  6. PidFile=/var/run/zabbix/zabbix_proxy.pid
  7. DBName=zabbix_proxy
  8. DBUser=zabbix_proxy
  9. DBPassword=zabbix_proxy
  10. SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
  11. Timeout=4
  12. ExternalScripts=/usr/lib/zabbix/externalscripts
  13. LogSlowQueries=3000

启动

  1. [root@linux-node2 ~]# systemctl start zabbix-proxy

查看proxy进程

  1. [root@linux-node2 ~]# netstat -lntup
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:33060.0.0.0:* LISTEN 15685/mysqld
  5. tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
  6. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
  7. tcp 000.0.0.0:100510.0.0.0:* LISTEN 15924/zabbix_proxy
  8. tcp6 00:::44589:::* LISTEN 9052/java
  9. tcp6 00:::8080:::* LISTEN 9052/java
  10. tcp6 00:::22:::* LISTEN 1073/sshd
  11. tcp6 00:::8888:::* LISTEN 9052/java
  12. tcp6 00::1:25:::* LISTEN 2498/master
  13. tcp6 00:::39743:::* LISTEN 9052/java
  14. tcp6 00:::10051:::* LISTEN 15924/zabbix_proxy
  15. tcp6 00127.0.0.1:8005:::* LISTEN 9052/java
  16. tcp6 00:::8009:::* LISTEN 9052/java

Zabbix-proxy 监控10051端口,因为是代理就必须跟Server的端口相同,对于Agent Proxy就是Server

Zabbix Web 添加

点击Add即可

我们需要将这台主机的Server设置为Proxy

编辑192.168.56.12 这台主机,需要将Server的IP地址修改成自己的

因为现在是主动模式,我们只需要修改主动模式的Server即可

  1. [root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf

  2. ServerActive=192.168.56.12

  3. #配置文件修改完需要重启

  4. [root@linux-node2 ~]# systemctl restart zabbix-agent

这时候我们就可以看到那个proxy都管理了那些机器,做到方便管理的机制

proxy简单的理解就是一个Server

##########################################################################

Zabbix 3.0 自动化监控 [十]

所有的自动化都可以分为2

1.自动注册

 Zabbix agnet 自动添加

2.主动发现

 1.自动发现 Discover

 2.zabbix api

 因为我们只有2web,为了方便演示。我们将原来添加的proxy删掉.

提示: 主动模式下设置自动注册

agent配置文件修改

  1. [root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf

  2. LogFileSize=0

  3. StartAgents=0

  4. Server=192.168.56.11

  5. ServerActive=192.168.56.11

  6. Hostname=192.168.56.11

  7. HostMetadata=system.uname

  8. #Server IP地址

  9. HostMetadataItem=system.uname

  10. #特征

  11. 1.可以我们自己写一个特征

  12. 2.我们执行一个key

  13. #手写级别大于执行key

过滤出我们的配置[如下]

  1. [root@CentOS6 zabbix]# egrep -v "#|^$" zabbix_agentd.conf
  2. PidFile=/var/run/zabbix/zabbix_agentd.pid
  3. LogFile=/var/log/zabbix/zabbix_agentd.log
  4. LogFileSize=0
  5. StartAgents=0
  6. Server=192.168.56.11
  7. ServerActive=192.168.56.11
  8. Hostname=192.168.56.12
  9. HostMetadata=system.uname
  10. Include=/etc/zabbix/zabbix_agentd.d/

我们先不重启,因为重启就生效了。我们需要设置一个规则.

注意自动发现必须要设置ServerActive让客户端启动主动去寻找服务端

提示,zabbix-agent起来的时候去找server,这时候就会产生一个事件,然后我们可以基于这个事件来完成一个动作

提示: zabbix-agent起来的时候回去找Server,这时候就会产生一个事件,然后我们可以基于这个事件来完成一个动作。

我们需要选中,然后在进行创建

如果选项匹配到Linux,为什么匹配Linux呢? 因为Linux 可以在输入任何命令都可以生成

  1. [root@linux-node2 ~]# uname
  2. Linux
  3. [root@linux-node2 ~]# uname -a
  4. Linux linux-node2.example.com 3.10.0-327.36.1.el7.x86_64 #1 SMP Sun Sep 18 13:04:29 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

提示: 需要点击小的Add 才可以继续操作

设置操作

我们先点击Add,在选择Host

我们在添加一个主机组,随便选一个就可以。

我们在添加一个模板

解释: 这样设置后我发现你这台主机我会给你设置一个主机组和一个模板。并且是Linux

最后我们选择Add

修改完之后我们在重启一下

  1. [root@linux-node2 ~]# systemctl restart zabbix-agent.service

如果还没有出来,我们可以稍等一会

自动注册完!

----------分割线---------------


因为我们的服务器只用了2台,所以昨晚自动注册我们在把它停掉。要不总会影响我们

我们在删除刚刚添加的主机

自动发现可以去扫描IP地址范围(需要手动设置)进行发现的动作

官方说明: https://www.zabbix.com/documentation/3.0/manual/discovery/network_discovery

创建Zabbix自动发现(生产一般不用)

唯一的标识我们可以设置IP地址,或者key值

  然后我们创建一个Action(动作)

现在它自己就添加上去了

  Zabbix提供了一个丰富的APIZabbix提供的API有2种功能。

一个是管理

一个是查询

请求方法 POST

我们可以进行访问查看

无法打开,我们需要进行POST请求才可以。

官方说明文档:https://www.zabbix.com/documentation/3.0/manual/api

  1. curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
  2. {
  3. "jsonrpc": "2.0",
  4. "method": "user.login",
  5. "params": {
  6. "user": "zhangsan",
  7. "password": "123456"
  8. },
  9. "id": 1
  10. }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

-d 请求的内容

-H 类型

id 名字,类似一个标识

user 我们登陆用的是zhangsan 默认是Admin

password 默认是zabbix,我们修改为123456了

  1. [root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
  2. > {
  3. > "jsonrpc": "2.0",
  4. > "method": "user.login",
  5. > "params": {
  6. > "user": "zhangsan",
  7. > "password": "123456"
  8. > },
  9. > "id": 1
  10. > }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
  11. --------------------------分割线------------------------
  12. 下面是返回的结果!!!!!!!!!!!!!!!!!!!!!!
  13. {
  14. "id":1,
  15. "jsonrpc":"2.0",
  16. "result":"d8286f586348b96b6b0f880db3db8a02"
  17. }

例如:我们获取所有主机的列表

官方文档:https://www.zabbix.com/documentation/3.0/manual/api/reference/host/get

  1. curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
  2. {
  3. "jsonrpc": "2.0",
  4. "method": "host.get",
  5. "params": {
  6. "output": ["host"]
  7. },
  8. "auth": "d8286f586348b96b6b0f880db3db8a02",
  9. "id": 1
  10. }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

提示: auth里面填写的是我们刚刚返回的result里面的值,如果我们在["hostid"]加上id就会显示id。想全显示主机名就直接写host

  1. [root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'

  2. {

  3. "jsonrpc": "2.0",

  4. "method": "host.get",

  5. "params": {

  6. "output": ["host"]

  7. },

  8. "auth": "d8286f586348b96b6b0f880db3db8a02",

  9. "id": 1

  10. }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

  11. {

  12. "id":1,

  13. "jsonrpc":"2.0",

  14. "result":[

  15. {

  16. "host":"Zabbix server",

  17. "hostid":"10084"

  18. },

  19. {

  20. "host":"linux-node1.example.com",

  21. "hostid":"10105"

  22. },

  23. {

  24. "host":"linux-node1.example.com1",

  25. "hostid":"10107"

  26. },

  27. {

  28. "host":"linux-node2.example.com",

  29. "hostid":"10117"

  30. }

  31. ]

  32. }

                             对比图

例如:如何获取模板

官方文档:https://www.zabbix.com/documentation/3.0/manual/api/reference/template/get

  1. curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
  2. {
  3. "jsonrpc": "2.0",
  4. "method": "template.get",
  5. "params": {
  6. "output": "extend"
  7. },
  8. "auth": "d8286f586348b96b6b0f880db3db8a02",
  9. "id": 1
  10. }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

默认太多不发了,看图!

  过滤

过滤主机有OS LINUX的模板

  1. curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
  2. {
  3. "jsonrpc": "2.0",
  4. "method": "template.get",
  5. "params": {
  6. "output": "extend",
  7. "filter": {
  8. "host": [
  9. "Template OS Linux"
  10. ]
  11. }
  12. },
  13. "auth": "d8286f586348b96b6b0f880db3db8a02",
  14. "id": 1
  15. }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

效果图如下!

  我们提供一个快速认证的Python脚本

链接:http://pan.baidu.com/s/1gf0pQwF 密码:m7dq

脚本内容如下

  1. [root@linux-node1 ~]# cat zabbix_auth.py

  2. #!/usr/bin/env python

  3. # -*- coding:utf-8 -*-

  4. import requests

  5. import json

  6. url ='http://192.168.56.11/zabbix/api_jsonrpc.php'

  7. post_data ={

  8. "jsonrpc":"2.0",

  9. "method":"user.login",

  10. "params":{

  11. "user":"zhangsan",

  12. "password":"123123"

  13. },

  14. "id":1

  15. }

  16. post_header ={'Content-Type':'application/json'}

  17. ret = requests.post(url, data=json.dumps(post_data), headers=post_header)

  18. zabbix_ret = json.loads(ret.text)

  19. ifnot zabbix_ret.has_key('result'):

  20. print'login error'

  21. else:

  22. print zabbix_ret.get('result')

我们可以执行一下进行查看

提示: 需要修改里面的用户名密码

  1. #安装python环境
  2. [root@linux-node1 ~]# yum install python-pip -y
  3. [root@linux-node1 ~]# pip install requests
  4. You are using pip version 7.1.0, however version 8.1.2is available.
  5. You should consider upgrading via the 'pip install --upgrade pip' command.
  6. Collecting requests
  7. Downloading requests-2.11.1-py2.py3-none-any.whl (514kB)
  8. 100%|████████████████████████████████|516kB204kB/s
  9. Installing collected packages: requests
  10. Successfully installed requests-2.11.1
  11. ################################################
  12. ################################################
  13. ################################################
  14. 执行结果
  15. [root@linux-node1 ~]# python zabbix_auth.py
  16. 5b21317186f2a47404214556c5c1d846

首先我们需要删除主机和自动发现

我们使用API来实现自动添加监控主机

使用API添加主机:https://www.zabbix.com/documentation/3.0/manual/api/reference/host/create

  1. curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
  2. {
  3. "jsonrpc": "2.0",
  4. "method": "host.create",
  5. "params": {
  6. "host": "Zabbix agent 192",
  7. "interfaces": [
  8. {
  9. "type": 1,
  10. "main": 1,
  11. "useip": 1,
  12. "ip": "192.168.56.12",
  13. "dns": "",
  14. "port": "10050"
  15. }
  16. ],
  17. "groups": [
  18. {
  19. "groupid": "8"
  20. }
  21. ],
  22. "templates": [
  23. {
  24. "templateid": "10001"
  25. }
  26. ]
  27. },
  28. "auth": "5b21317186f2a47404214556c5c1d846",
  29. "id": 1
  30. }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool

用户组ID获取方法

模板IP查看方法

执行结果如下:

  1. [root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
  2. > {
  3. > "jsonrpc": "2.0",
  4. > "method": "host.create",
  5. > "params": {
  6. > "host": "Zabbix agent 192",
  7. > "interfaces": [
  8. > {
  9. > "type": 1,
  10. > "main": 1,
  11. > "useip": 1,
  12. > "ip": "192.168.56.12",
  13. > "dns": "",
  14. > "port": "10050"
  15. > }
  16. > ],
  17. > "groups": [
  18. > {
  19. > "groupid": "8"
  20. > }
  21. > ],
  22. > "templates": [
  23. > {
  24. > "templateid": "10001"
  25. > }
  26. > ]
  27. > },
  28. > "auth": "5b21317186f2a47404214556c5c1d846",
  29. > "id": 1
  30. > }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
  31. {
  32. "id":1,
  33. "jsonrpc":"2.0",
  34. "result":{
  35. "hostids":[
  36. "10118"
  37. ]
  38. }
  39. }

查看Zabbix 页面

提示: 里面的主机名/模板 都是我们设置好的

Zabbix完!