学习zabbix(十)

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监控过程逻辑图
1.png-212.6kB

 

监控类型

硬件监控 适用于物理机、远程管理卡(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
   硬件监控:Zabbix、IPMI、lnterface
   系统监控:Zabbix、Agent、Interface
   Java监控:Zabbix、JMX、lnterface
   网络设备监控:Zabbix、SNMP、lnterface
   应用服务监控:Zabbix、Agent、UserParameter
   MySQL数据库监控:percona-monitoring-plulgins
   URL监控:Zabbix Web监控
2.png-25.1kB

 

二、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
1.png-22.4kB

点击Next step进行安装
1.png-35.9kB

首先要确保没有no,如果时区没有改好会提示我们进行修改
1.png-32.2kB

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

为我们的zabbix起个名字,一会在右上角会显示
1.png-31.8kB

最后是展示我们的配置信息,可以查看到哪里有错误
1.png-23kB

点击Finish
1.png-19.3kB

2.png-61kB

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

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. 10051server端口,10050agent端口
 

四、Web界面配置

找到Configuration---->Hosts 添加一台监控主机
1.png-95.1kB

2.png-52.3kB

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

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

3.png-32.5kB

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

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

点击Monitoring-----Graphs,选择我们要监控的内容
6.png-15.9kB

我们选择可以随便选择一个进行查看信息
例如:我们查看CPU的负载
1.png-60.8kB

  某一段时间内,CPU正在处理以及等待CPU处理的进程数的之和。Load Average是从另一个角度来体现CPU的使用状态的。
  这些监控其实就是zabbix在数据库查找数据,然后使用jd进行画图
Zabbix性能依赖于mysql数据库

 

五、Zabbix页面安全设置

1、设置默认账号密码
2.png-43.5kB

3.png-36.4kB

  设置完中文
1.png-72.5kB

 

六、Zabbix 菜单说明

Zabbix 上方的菜单简单介绍说明
2.png-54.1kB

Doshboard下面可以设置你想设置的图形,添加方法如下:
3.png-67.2kB

4.png-73.4kB

  这时,就可以找到你喜爱的了,直接打开
6.png-5.1kB

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

maps就是一个架构图
2.png-3.2kB

Status of Zabbix就是一个状态栏
1.png-18.4kB

 第一行是Server是否运行[yes]和后面的运行地址
 第二行监控的机器 (启用的/关闭的/模板)
 第三行监控项 (启用的/关闭的/不支持的)
 第四行触发器的状态 (启用的/关闭的/【故障/正常】)
 第五行 当前用户数量 (在线数量)
 第六行 zabbix每秒可以收到的一个新值

告警的级别
2.png-8kB

我们可以设置报警响铃,让他在前端响
3.png-57.9kB

4.png-36.8kB

我们首页的监控列表是可以随意拖动的
5.png-79kB

我们还可以将它关闭,并且设置刷新时间
6.png-19.8kB

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

Zabbix 3.0 部署监控 [二]

一、添加监控主机及设置

1.创建主机

1.png-47.5kB

2.png-52.5kB

Agent可以干一些SNMP无法干的事情,例如自定义监控项
snmp相关文章:http://www.abcdocker.com/abcdocker/1376
3.png-32kB

这里我们先不着急点add,还需要设置其他选项
1.png-17.4kB

点击监控模板
  zabbix监控是由监控项组成(cpu使用率监控就是一个监控项/内存使用率就是一个监控项),如果是100台服务器就需要监控模板了。只需要将监控项和模板关联起来即可
举个例子:我们上面主机使用的是SNMP,就可以直接搜索SNMP提示:有的模板需要自己定义
2.png-30.2kB

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

IPMI如果有的话,需要在这里写上用户名密码
2.png-23kB

宏定义,这个宏其实就是一个变量。我们给可以给变量附一个值
3.png-15.1kB

  因为我们设置的是SNMPSNMP有一个团体名。并且可以设置定义
  团体名是中间的abcdocker,具体的可以看http://www.abcdocker.com/abcdocker/1376

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

1.png-23.1kB

值:{$SNMP_COMMUNITY}
2.png-43.1kB

主机资产设置分为3中
1、关闭 Disabled
2、手动 Manual
3、自动 Automatic (自动代表的是你在定义监控项的时候,他有一个小箭头,勾上之后监控项的值就会填写在这里)
   我们这设置好模板就可以选择add
3.png-43.8kB

SNMP变绿就好了
4.png-52.6kB

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

进入监控项,下面这个菜单是过滤搜索用的
2.png-57.3kB

下面全都是模板
  我们可以随便点击一个,这里我们新建一个监控项
3.png-65.2kB

点击创建
类型选择
  Zabbix agent 被动
  Zabbix agent (active主动模式)
  Simple check 简单检测
  SNMPv1 agent ......
1.png-45kB

在Key这行点击Select 可以进行选择
2.png-97.3kB

我们随便选择一个,例如agent.version。查看agent的版本
Numeric是无符号整数型
1.png-20.3kB

 

2.图形说明

Configuration----hosts----Graphs
1.png-81.6kB

绘图靠的是监控项,我们可以随便打开一个看看
2.png-58.6kB

颜色等都是可以随意设置

 

3、聚合图形screens设置

1.png-42kB

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

创建Screens
2.png-16.3kB

我们创建一个2*2 命名为test screensscreens
3.png-37.5kB

然后我们点进去
点击编辑
1.png-34.9kB

点击Change进行设置
1.png-32.5kB

2.png-25.8kB

多添加几个之后就是以下结果
3.png-96.9kB

 

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

例如:我们自己添加一个监控项来进行监控当前的活动连接数 [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
1.png-8.7kB

解释说明:使用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进行测试

 
  1. [root@linux-node1 zabbix_agentd.d]# yum list|grep zabbix
  2. zabbix-agent.x86_64 3.0.4-1.el7@zabbix
  3. zabbix-release.noarch 3.0-1.el7 installed
  4. zabbix-server-mysql.x86_64 3.0.4-1.el7@zabbix
  5. zabbix-web.noarch 3.0.4-1.el7@zabbix
  6. zabbix-web-mysql.noarch 3.0.4-1.el7@zabbix
  7. python-pyzabbix.noarch 0.7.3-2.el7 epel
  8. uwsgi-stats-pusher-zabbix.x86_64 2.0.13.1-2.el7 epel
  9. zabbix-get.x86_64 3.0.4-1.el7 zabbix
  10. 查看zabbix_get
  11. [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上面修改了,还需要在网页上进行修改
1.png-73.8kB

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

 

添加item

2.png-97.6kB

找到一个安装zabbix-agent,点击
3.png-80.8kB

点击items
1.png-68.9kB

然后添加Create item(创建item)
1.png-38.4kB

2.png-4.3kB

Data type:数据类型,这里我们选择Decimal。其他的基本上用不上
Units:单位 超过1千就写成1k了。 可以在这里做一个单位的设置。默认就可以
Use custom multiplier:如果这里面设置了一个数,得出来的结果都需要乘以文本框设定的值
1.png-17.2kB

Update interval(in sec) 监控项刷新时间间隔(一般不要低于60秒)
Custom intervals 创建时间间隔(例如:1点-7点每隔多少秒进行监控)格式大致为:周,时,分
2.png-21.7kB

History storage period 历史数据存储时间(根据业务来设置,默认就可以)
Trend storage period 趋势图要保存多久
New application 监控项的组
application 选择一个监控项组
Populates host inventory field 资产,可以设定一个监控项。把获取的值设置在资产上面
1.png-22.1kB

描述!必须要写。 要不你就是不负责任
2.png-6.4kB

添加自定义监控项小结:
   1、添加用户自定义参数(在/etc/zabbix/zabbix.agent.d/定义了一个nginx.conf步骤如上)
   2、重启zabbix-agent
   3、在Server端使用zabbix_get测试获取(命令如上)
   4、在web界面创建item(监控项)
   

 

自定义图形

3.png-110.3kB

Name:名字
Width:宽度
Height:高度
Graph type:图形类型
其他默认即可
1.png-45.3kB

然后我们点击Add添加Items监控项,找到我们刚刚设置的服务器
2.png-145.4kB

然后找到我们刚刚添加的监控项
3.png-11.2kB

还可以选择颜色,添加其他的很多设置。不细说
4.png-36.5kB

  点击Prewview可以进行预览,如果出现字符乱码可以阅读我们另一篇文章(zabbix默认不支持中文)
  确定没有问题,选择下方Add即可
5.png-92.3kB

出现我们添加的
image_1at7vvch71hlq19i09hc1754tr6gp.png-75.2kB

需要在Monitoring--->Graphs--->选择我们添加的主机即可
接下来我们需要进行测试
测试前:
6.png-13kB

使用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)

测试后:
1.png-14.5kB

我们可以查看zabbix监控图标
2.png-69.9kB

我们中间设置了间隔60秒,说明每隔60秒我们进行获取一次
  我们可以设置它的方式显示
找到Graph选择类型,Stacked是堆叠显示,其他的大家可以自行百度。不细说
  堆叠显示如下:
3.png-58.8kB

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

找到Graphs
5.png-89.8kB

找到我们设置的图形
1.png-64.4kB

点击添加即可

我们可以让多个图标显示在一个图片上
2.png-41.9kB

点击我们创建一个聚合图形(screens
1.png-45.5kB

点击进去
2.png-40.5kB

点击编辑
1.png-28.3kB

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

找到相对应的添加即可
我们可以多添加几个
3.png-60.3kB

结果如上图显示
除了显示图片还可以显示其他内容
4.png-24.4kB

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:

1.png-24.4kB

2.png-54.9kB

我们还可以自定义一个Maps,一张架构图。操作如下:
3.png-45.4kB

第二步:选择编辑Edit map
4.png-45.8kB

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

点击右上角编辑,然后我们点中图中的服务器即可
6.png-53.4kB

我们模拟有2台服务器
7.png-47.6kB

然后我们选中新添加的服务器进行修改
8.png-68.4kB

点击Apply就可以了。
按住Ctrl点中zabbix server和另台服务器
9.png-63.9kB

然后我们点击左上方的Link:他们就连接起来了
1.png-77.6kB

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

 

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

Zabbix 3.0 部署监控 [三]

 


 

Dashboard首页信息介绍

image_1at7sropgp1kv041gtmh5vg2o9.png-92.9kB

 

Status of Zabbix(Zabbix状态)介绍

image_1at7ssci91f5ksqs1rbhklo733m.png-24.3kB

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 最新数据介绍

image_1at7sv4aq82pkpc1jed1mb5g0413.png-119.6kB

 

加入监控

  刚刚之前我们一直使用的是一台服务器,因为不方便解释。我们新添加一台服务器
 加入监控的几个步骤:
  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界面设置
克隆~
image_1at7t4i0n7k1199jf5s1bhq40f1g.png-74.4kB

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

剩下的我们就改一下就可以了
image_1at7t5hhv11mvkuaof7kif4n12a.png-47.4kB

模板修改
image_1at7t5ue2afu1cb41oni9pn8gi2n.png-32.6kB

其他的就没有什么可以配置的,模板主要是添加Template OS Linux。然后我们选择Add即可
创建完成如下:
image_1at7t6om91kpan1d8repkv1oju34.png-70.7kB

新添加的IP如上述所示

 

Maps 优化设置

上次只是简单的连接线的设置,这次我们进行深入设置
路径:Monitoring--->Maps--->Edit map进行修改
image_1at7t8f9b7pe4ih3b214951hg23h.png-89.8kB

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

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

我们新添加一台,然后进行连接。Ctrl + 主机 然后点击Link:Add
  例如我们想查看他们的流量带宽
image_1at7tas5rfon1lkhc0mbnace74o.png-80.6kB

  首先,他们必须要连接在一起,然后点击Links选项后面的Edit进行编辑
  我们可以在Label表里面写监控项的值
  我们可以在Configuration--->Hosts--->items中查看到
image_1at7tcc9e1uqm1ot5d0b17aq13bb55.png-127.7kB

括号内写入发下:

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

image_1at7td1u31bb4f491a4hqr2p7a5i.png-68.3kB

  现在我们就可以实时的监控流量
  切记需要update
保存如下图显示
image_1at7te2sf18r9pc5s481r6b19ks5v.png-41.8kB

 

如何让Zabbix报警

  我们可以先打开Events查看事件
image_1at7tes1e1raorqorsa1hvd6ni6c.png-46.6kB

zabbix事件有很多类型
Trigger=触发器的事件
Disovery=自动发现事件
还有内部的事件以及自动注册的事件

image_1at7to690v6siva1f758tmk1c6p.png-4.9kB

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

  Zabbix的报警可以当做事件通知,当这个事件发生时。zabbix进行通知(报警)
  事件报警分为2种方式:
1、怎么通知
2、通知给谁

Zabbix通知方式:
Zabbix通知方式通过Actions进行通知
image_1at7tr4jh17qc1d7k1qoo346hi176.png-41.6kB

Zabbix默认有一个,我们可以点开进行查看
image_1at7trff617jn1hiba20ge1g8m7j.png-60.4kB

条件设置
image_1at7ts6lofcrhpc1beq1add1b4n80.png-38.7kB

操作设置
image_1at7tsk41gqi18402c518ad19h28d.png-28.4kB

image_1at7tspfo1eun1ela1p5o46o12tt8q.png-76.9kB

温馨提示:保存的时候需要先点击下方小的Update 否则就木有啦
  这里的步骤可以让报警邮件发送的级别、例如:先发送给运维、项目经理、项目总监
例如如下:
image_1at7ttpa1gqu1e6d1jobsfu1rk797.png-30.2kB

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

  模拟设置,当报警1-2次时候发送给XX,2-4次发送给XX依次叠加
   我们需要配置报警媒介类型,用于发送邮件
image_1at7u03971t0o1hl2bph1otj72ja1.png-38.3kB

  温馨提示:3.0之前发送邮件需要启动邮件相关服务来进行安全认证,3.0之后默认自带安全认证
  我们以qq邮箱为例
image_1at7u16rk89o1hos11cot4514v6ae.png-36.6kB

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

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

然后我们选择下方的Add
image_1at7u35b8rca5np4p1h40t22bl.png-48.6kB

  设置收件人地址
image_1at7u3r9s5g91uqun11um1oluc2.png-27.8kB

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

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

提示:添加新主机后,要注意确认权限分配
  我们的使用QQ邮箱需要开启SNMP和一个授权码。 填写发件人密码时需要设置授权码为密码
image_1at7u6f9bv4siqh1qs3nrf1onacf.png-34.1kB

邮件结果如下:
异常
image_1at7u6vis13ql6so14lujt8167tcs.png-46.6kB

因为我们开启了正常之后继续发送邮件,所以正常之后邮件如下
image_1at7u7u9fr5hkms1o3e1o3s1obkd9.png-36.6kB

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

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

Zabbix 3.0 生产案例 [四]

Zabbix 生产案例实战

1.png-18.9kB

 

一、项目规划

 

1、主机分组:

   交换机
   Nginx
   Tomcat
   MySQL

 

2、监控对象识别:

  1、使用SNMP监控交换机
  2、使用IPMI监控服务器硬件
  3、使用Agent监控服务器
  4、使用JMX监控Java应用
  5、监控MySQL
  6、监控Web状态
  7、监控Nginx状态

 

3、操作步骤:

SNMP监控
 1.1 在交换机上开启Snmp

 
  1. config t
  2. snmp-server community public ro
  3. end
  4. 提示:如果不知道我们可以百度

 1.2 在Zabbix上添加SNMP监控
 步骤:Configuration--->Hosts--->设置
 1.png-72.3kB

 1.3 Host页面设置
2.png-51.3kB

 1.4 Templates 模板设置
3.png-46.9kB

设置SNMP团体名称Macros宏
这里的设置要跟我们创建的SNMP的设置相同
4.png-36.4kB

因为Zabbix监控的时候依赖团体名称
 1.5 生产图片
3.png-46.9kB

  Zabbix会自动给我们进行检测端口,每个端口都会添加一个网卡的流量图,每个端口都会加上一个触发器。(端口的状态) 还会帮我们添加VLAN的一个监控
 1.6 案例图
  含有有进口和出口流量
5.jpg-54kB

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


IPMI监控
  2.1 添加IPMI
Configuration--->Hosts--->选择主机--->设置IPMI端口及主机--->用户名密码
  因为IMP容易超时,建议使用自定义item,本地执行ipmitool命令来获取数据

JMX监控
  Zabbix默认提供了一个监控JMX
通过java gateway来监控java
2.png-113.7kB

地址:https://www.zabbix.com/documentation/3.2/manual/appendix/config/zabbix_java
  JAVA GATEWAY需要独立安装,相当于一个网关,因为zabbix_server和zabbix-agent不可以直接获取java信息。所以需要一个代理来获取
1.jpg-11.8kB

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

1.png-412.3kB

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
1.png-264.3kB

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

填写安装JMX的服务器
4.png-84.8kB

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

这样我们就可以在图形化监控tomcat
6.png-91.7kB

  提示:按照现在观察,java-gateway已经安装成功,我们可以加入到zabbix中
  找我们要添加的主机
1.png-178kB

填写安装java-gateway的主机
1.png-120.5kB

我们还需要设置一个模板
2.png-69.9kB

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

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

提示:可以在Zabbix-server上使用zabbix-get获取某一台机器的某一个key
效果图如下:需要等待一会
1 (1).png-566kB

手动检测监控状态
Zabbix-Server操作:

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

Key:
2 (1).png-165.8kB

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

1.png-146.9kB

 
  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模式,修改完配置文件之后需要重启生效

 

Zabbix生产案例

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.添加权限及测试脚本

 
  1. [root@linux-node1 zabbix_agentd.d]# chmod +x zabbix_linux_plugin.sh
  2. [root@linux-node1 zabbix_agentd.d]# sh zabbix_linux_plugin.sh
  3. 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,因为要加好多。我们就使用模板的方式进行添加
CKD_1XOES2~JK28{8XIFKP3.png-318.8kB

1.png-75.9kB

2.png-27.6kB

提示:我们写一下注释然后选择Add即可
找到我们的模板
3.png-209.7kB

我们创建item
1.png-93.9kB

创建
2.png-139.6kB

各参数前文都有讲解不细说!
 修改完成吼点击Add
3.png-92.6kB

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

点进我们的item,然后拖到最下面选择克隆
5.png-42.3kB

填一些基本的修改即可,例如下:
1.png-97.6kB

添加完成如下图:
3.png-210.1kB

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

5.png-132.8kB

因为我们主机还没有加入我们的模板,所以我们这里是没有数据的
1.png-106.8kB

下面将模板加入到主机中
2.png-193.8kB

修改模板
3.png-97.4kB

查看结果如下:
4.png-258.4kB

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

5.png-403.2kB

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

 7.导入模板
我们需要导出自然需要导入,操作如下:
6.png-289.1kB

点击添加即可
7.png-241.7kB

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

 

以上就是Nginx完整的监控使用

 8.导入TCP模板
  加入模板的步骤跟刚刚加入Nginx的一样,这里我们就使用模板了。
下载链接:http://pan.baidu.com/s/1i54ULjJ 密码:25lh
我们导入模板即可
1.png-82.8kB

导入完成之后我们可以查看模板
2.png-330.1kB

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

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

5.png-33.2kB

我们在两台服务器都加载这个模板
6.png-97kB

步骤和上面的一样
7.png-95.5kB

添加完成
8.png-166.2kB

  查看脚本需要等待1分钟,这主要看我们设置的获取值的时间而定。
我们可以查看图形
2.png-64.9kB

 

 

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

Zabbix 3.0 生产案例 [五]

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

1.触发器

  首先我们给Nginx添加触发器
1.选择Configuration--->Hosts
2.找到我们相对应的主机进入
3.选择主机中的Triggers--->添加(Create trigger)
1.png-109.2kB

我们设置一个事件
2.png-163.6kB

3.png-72.4kB

我们选择Insert,然后选择Add即可
4.查看报警状态
 因为我们设置的级别大于1就报警,默认Nginx是0,随便访问以下就是1.所以肯定就会报警。报警邮件可以根据我们前面 [Zabbix 3.0 部署监控 [三]]文章进行设置
 报警邮件如下:
5.png-218.5kB

我们可以查看这个事件的相关过程
4.png-214.1kB

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

1 (1).png-100.5kB

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

我们进行修改默认模板
路径下图:
2.png-33.3kB

1.png-159.9kB

3.png-333.3kB

我们可以看到默认是大于300进行报警,我们点进去修改即可
4.png-102.4kB

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

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

 

2.脚本发送邮件

提示: 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

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

 

Zabbix页面设置

1.png-90.4kB

点击右上角创建报警介质
5.png-73.4kB

点击最下面的Add
4.png-70.3kB

5.png-71.3kB

6.png-120.4kB

提示:先点击小的Update在点最下面的Update
我们还需要修改报警媒介
7.png-96kB

找到相对应的用户,点击。
8.png-61.1kB

1.png-89.7kB

  接下来就需要我们触发报警了
3.png-230.6kB

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

这里显示发送完成,我们去日志进行查看
2.png-46.9kB

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

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

 

优化图如下:

1.png-118.5kB

修改后如下:
2.png-77.4kB

  设置完成之后最好数一下,不要超过70个字符
3.png-226.8kB

http://www.alidayu.com/
有兴趣的同学可以自己了解一下阿里大鱼,可以提供短信通道、语音、验证码等业务。
1.png-80.7kB

短信通道比较出名的几款产品:
  亿美软通 阿里大鱼 腾讯云也有

 

微信报警

  短信报警和邮件报警已经说过了,我们简单的说一下微信报警
4.png-42.1kB

  因为在很早之前就说过,个人服务号和订阅号不支持直接跟订阅用户进行沟通。如果是企业号可以直接获取到一个类似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。在安装文档上有写哦~
1.png-135.5kB

安装步骤: 查看上面的链接也可以进行安装
我们安装在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中
2.png-310.6kB

2.png-90kB

提示:如果出现错误,可能是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中,这时候我们就需要进行设置了
1.png-155.4kB

2.png-106.9kB

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

修改完就可以获取值了,所以我们还需要测试
4.png-131.9kB

结果如下图
5.png-202.5kB

思想:
  如果出现错误我们需要先查看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
 

二、Zabbix Web界面配置

1.png-178.7kB

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

2.png-105.8kB

3.png-31kB

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

1 (1).png-73.9kB

2 (1).png-105.6kB

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

然后我们选择Add
4.png-141.9kB

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

 

三、触发器添加

2.png-164.3kB

Web监控中默认不含有触发器,所以需要手动添加
点右上角,进行创建触发器
0.1.png-96.1kB

1.png-53.9kB

2.png-254.9kB

 

四、触发器报警测试

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

报警如下:
1.png-229.3kB

 

1.png-78.1kB

2.png-73.7kB

回复如上
邮件报警设置可以访问 Zabbix 3.0 生产案例 [五]
我们还可以优化动作[Actions]
111.png-70.4kB

  Zabbix 就是一个万能的什么都可以监控,只要我们有key。什么都可以监控
key我们可以使用脚本,程序等等等

猜你喜欢

转载自www.cnblogs.com/wuhg/p/10511179.html