学习zabbix(十)
一、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
中
硬件监控:
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、环境信息
[root@localhost ~]# cat /etc/redhat-release
CentOSLinux release 7.2.1511(Core)
[root@localhost ~]# uname -r
3.10.0-327.28.3.el7.x86_64
2、yum安装
阿里云yum源已经提供了zabbix3.0
,因此我们需要使用官方yum源。官方
yum源下载会比较慢
[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?
[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Media.repo epel.repo.rpmnew
CentOS-CR.repo CentOS-Sources.repo epel-testing.repo
CentOS-Debuginfo.repo CentOS-Vault.repo zabbix.repo
CentOS-fasttrack.repo epel.repo
因为下载这个版本会在yum.repos.d
下面生成一个zabbix.repo
的文件
3、安装相关软件包
[root@localhost ~]# yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb -y
注:如果Server端也需要监控则需要安装zabbix-agent
提示:在Centos7中,mysql
改名为mariadb
4、修改PHP时区设置
[root@localhost ~]# sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g'/etc/httpd/conf.d/zabbix.conf
#要注意需要改的配置文件是/etc/httpd/conf.d/zabbix.conf而不是/etc/php.ini,
三、数据库设置
1.启动数据库
[root@localhost ~]# systemctl start mariadb
2.创建zabbix数据库及用户
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by '123456';
exit
3.导入数据
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.4/
[root@localhost zabbix-server-mysql-3.0.4]# ll
total 1836
-rw-r--r--1 root root 98Jul2211:05 AUTHORS
-rw-r--r--1 root root 687803Jul2211:05ChangeLog
-rw-r--r--1 root root 17990Jul2211:06 COPYING
-rw-r--r--1 root root 1158948Jul2402:59 create.sql.gz
-rw-r--r--1 root root 52Jul2211:06 NEWS
-rw-r--r--1 root root 188Jul2211:05 README
[root@localhost zabbix-server-mysql-3.0.4]# zcat create.sql.gz |mysql -uzabbix -p123456 zabbix
我们使用zcat
,专门查看sql.gz
包。和cat
基本相似
4.修改zabbix配置文件
[root@localhost zabbix-server-mysql-3.0.4]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost #数据库所在主机
DBName=zabbix #数据库名
DBUser=zabbix #数据库用户
DBPassword=123456#数据库密码
5.启动zabbix及apache
[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# systemctl start httpd
注意:如果没有启动成功,要看一下是不是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端
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1修改Server端的IP地址(被动模式IP地址)
ServerActive=127.0.0.1主动模式,主动向server端报告
[root@localhost ~]# systemctl start zabbix-agent
查看端口号
[root@localhost ~]# netstat -lntp
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:33060.0.0.0:* LISTEN 7806/mysqld
tcp 000.0.0.0:220.0.0.0:* LISTEN 1062/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2208/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 11511/zabbix_agentd
tcp 000.0.0.0:100510.0.0.0:* LISTEN 11335/zabbix_server
tcp 00127.0.0.1:1990.0.0.0:* LISTEN 2692/snmpd
tcp6 00:::80:::* LISTEN 11408/httpd
tcp6 00:::22:::* LISTEN 1062/sshd
tcp6 00::1:25:::* LISTEN 2208/master
tcp6 00:::443:::* LISTEN 11408/httpd
tcp6 00:::10050:::* LISTEN 11511/zabbix_agentd
tcp6 00:::10051:::* LISTEN 11335/zabbix_server
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
的日志
[root@localhost ~]# ls /var/log/zabbix/zabbix_
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 部署监控 [二]
一、添加监控主机及设置
1.创建主机
Agent可以干一些SNMP无法干的事情,例如自定义监控项
snmp相关文章:http://www.abcdocker.com/abcdocker/1376
这里我们先不着急点add
,还需要设置其他选项
点击监控模板
zabbix监控是由监控项
组成(cpu
使用率监控就是一个监控项
/内存使用率
就是一个监控项),如果是100
台服务器就需要监控模板
了。只需要将监控项和模板关联
起来即可
举个例子:我们上面主机使用的是SNMP,就可以直接搜索SNMP
。提示:有的模板需要自己定义
温馨提示:请点击下面的小add
然后在点大的。否则会出现问题哦
IPMI
如果有的话,需要在这里写上用户名
和密码
宏定义,这个宏其实就是一个变量。我们给可以给变量附一个值
因为我们设置的是SNMP
,SNMP
有一个团体名。并且可以设置定义
团体名是中间的abcdocker
,具体的可以看http://www.abcdocker.com/abcdocker/1376
[root@localhost ~]# cat /etc/snmp/snmpd.conf
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
是无符号整数型
2.图形说明
Configuration----hosts----Graphs
绘图靠的是监控项
,我们可以随便打开一个看看
颜色等都是可以随意设置
3、聚合图形screens设置
提示:因为咱们用的版本是3.0当2.4的时候需要在Configuration----
下面来创建screens
创建Screens
我们创建一个2*2
命名为test screens
的screens
然后我们点进去
点击编辑
点击Change
进行设置
多添加几个之后就是以下结果
二、监控案例[自定义监控项]
例如:我们自己添加一个监控项来进行监控当前的活动连接数 [Nginx 安装请看上一篇]
nginx
安装地址:http://www.abcdocker.com/abcdocker/1376
Nginx状态模块配置如下,过于简单不说了
[root@localhost ~]# cat /usr/local/nginx/conf/nginx.conf
listen 8080;
location /status {
stub_status on;
access_log off;
allow 192.168.56.0/24;
deny all;
}
修改nginx
端口并重启
测试:http://192.168.56.11:8080/status
解释说明:使用zabbix来监控活动连接数,通过status状态模块为前提
我们现在命令取出我们想要的值,例如:
[root@localhost ~]# curl -s http://192.168.56.11:8080/status|grep Active|awk -F "[ ]"'{print $3}'
1
因为我们是监控他的活动连接数,他的活动连接数为1
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/
#提示: 如果想要加自定义监控项,不要在配置文件中写入,可以在Include
里面定义的目录写上
只要我们写在Include
目录下,都可以识别到
[root@linux-node1 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@linux-node1 zabbix_agentd.d]# ls
userparameter_mysql.conf
#默认有一个MySQL的,我们可以参考MySQL的进行操作
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
#提示,前面是key的名称 后面的key的命令
UserParameter=mysql.version,mysql -V
我们自己编辑一个文件
[root@linux-node1 zabbix_agentd.d]# cat nginx.conf
UserParameter=nginx.active,/usr/bin/curl -s http://192.168.56.11:8080/status|grep Active|awk -F "[ ]"'{print $3}'
#提示,此处配置文件的名字可以随便起
如果是多个命令可以写一个脚本
,命令最好写绝对路径
!这个过程其实就是我们定义监控的过程,前面是key
的名字,后面是命令
修改完配置文件之后需要重启zabbix-agent
[root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent
配置完成之后先在server
端测试,是否可以获取到agent
上的值。不要着急添加
我们现在只用了1台服务器,本机是server也是agent。然后使用zabbix-get
进行测试
[root@linux-node1 zabbix_agentd.d]# yum list|grep zabbix
zabbix-agent.x86_64 3.0.4-1.el7@zabbix
zabbix-release.noarch 3.0-1.el7 installed
zabbix-server-mysql.x86_64 3.0.4-1.el7@zabbix
zabbix-web.noarch 3.0.4-1.el7@zabbix
zabbix-web-mysql.noarch 3.0.4-1.el7@zabbix
python-pyzabbix.noarch 0.7.3-2.el7 epel
uwsgi-stats-pusher-zabbix.x86_64 2.0.13.1-2.el7 epel
zabbix-get.x86_64 3.0.4-1.el7 zabbix
查看zabbix_get
[root@linux-node1 zabbix_agentd.d]# yum install -y zabbix-get
zabbix-get
使用参数如下:
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
-s 指定我们要查看的服务器
-p 端口,可以不加。默认是10050
-k 监控项的名称(根据上面的配置来定义的)
更多参数:zabbix_get --help
错误案例:
如果出现如下错误,大致意思是拒绝连接
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
zabbix_get [24234]:Check access restrictions inZabbix agent configuration
解决方法:
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.11
因为我们当时只允许本机127.0.0.1
进行连接。所以会出现这样问题
[root@linux-node1 ~]# systemctl restart zabbix-agent
修改完配置文件都要重启
提示: zabbix-agent的配置文件中指定允许那个server连接,那个才可以进行连接。
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-p 10050-k "nginx.active"
1
正确结果如上!
提示:如果在zabbix-agent
上面修改了,还需要在网页上进行修改
在/etc/zabbix/zabbix-agent.conf
上面指定的Server
是谁,就只会允许谁通过。如果有多个ip
可以使用逗号进行分割
添加item
找到一个安装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万
并发进行访问
[root@linux-node1 ~]# ab -c 1000-n 1000000 http://192.168.56.11:8080/
ThisisApacheBench,Version2.3<$Revision:1430300 $>
Copyright1996AdamTwiss,ZeusTechnologyLtd, http://www.zeustech.net/
Licensed to TheApacheSoftwareFoundation, http://www.apache.org/
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 部署监控 [三]
Dashboard首页信息介绍
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源
[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、安装软件包
[root@linux-node2 ~]# yum install -y zabbix-agent
3、修改配置文件
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.11
ServerActive=192.168.56.11
#提示:这里的IP地址改成Server端的IP地址
4、启动
[root@linux-node2 ~]# systemctl start zabbix-agent
[root@linux-node2 ~]# netstat -lntup|grep zabbix
tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
5、web界面设置
克隆~
步骤:我们随便点击一个进去。拉到最下面有一个全部克隆
剩下的我们就改一下就可以了
模板修改
其他的就没有什么可以配置的,模板主要是添加Template OS Linux
。然后我们选择Add
即可
创建完成如下:
新添加的IP
如上述所示
Maps 优化设置
上次只是简单的连接线的设置,这次我们进行深入设置
路径:Monitoring--->Maps--->Edit map
进行修改
我们点击Zabbix server
没有设置主机的,选择Host
修改linux-node2
。
提示:此处我们修改了2
台主机,这个可以根据业务需求进行设置
我们新添加一台,然后进行连接。Ctrl + 主机
然后点击Link:Add
例如我们想查看他们的流量带宽
首先,他们必须要连接在一起,然后点击Links
选项后面的Edit
进行编辑
我们可以在Label
表里面写监控项的值
我们可以在Configuration--->Hosts--->items
中查看到
括号内写入发下:
{linux-node2.example.com:net.if.out[eth0].last(0)}
linux-node2.example.com=主机名
net.if.out=key值
last(0)=获取最新的一个数据
现在我们就可以实时的监控流量
切记需要update
保存如下图显示
如何让Zabbix报警
我们可以先打开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 生产案例 [四]
Zabbix 生产案例实战
一、项目规划
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
config t
snmp-server community public ro
end
提示:如果不知道我们可以百度
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、安装
[root@linux-node1 ~]# yum install -y zabbix-java-gateway java-1.8.0
提示:java-gateway 需要java环境
2、配置
修改java-gateway
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
# LISTEN_IP="0.0.0.0" 监听的IP地址
# LISTEN_PORT=10052 监听的端口
PID_FILE="/var/run/zabbix/zabbix_java.pid"存放pid路径
# START_POLLERS=5 开通几个进程,默认是5。你有多少java进行可以设置多少个,也可以设置java进程的一半。
TIMEOUT=3超时时间1-30,如果网络环境差,超时时间就修改长一点
我们默认就可以了,不进行修改
3、启动
[root@linux-node1 ~]# systemctl start zabbix-java-gateway.service
4、端口、进程查看
我们可以进行进程的查看
[root@linux-node1 ~]# netstat -lntp
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:33060.0.0.0:* LISTEN 10439/mysqld
tcp 000.0.0.0:80800.0.0.0:* LISTEN 33484/nginx: master
tcp 000.0.0.0:220.0.0.0:* LISTEN 1054/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2484/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 76482/zabbix_agentd
tcp 000.0.0.0:100510.0.0.0:* LISTEN 34572/zabbix_server
tcp 00127.0.0.1:1990.0.0.0:* LISTEN 11143/snmpd
tcp6 00:::80:::* LISTEN 10546/httpd
tcp6 00:::22:::* LISTEN 1054/sshd
tcp6 00::1:25:::* LISTEN 2484/master
tcp6 00:::10050:::* LISTEN 76482/zabbix_agentd
tcp6 00:::10051:::* LISTEN 34572/zabbix_server
tcp6 00:::10052:::* LISTEN 13465/java
10052
zabbix-java-gateway
默认端口已经起来了!
它是一个java应用,需要安装jdk
[root@linux-node1 ~]# ps -aux|grep java
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
root 135840.00.0112648972 pts/0 S+19:210:00 grep --color=auto java
5、通知zabbix-server
我们需要通知zabbix-server
,java-gateway在哪里
修改配置文件
[root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf
编辑zabbix-server来指定zabbix-java-gateway
JavaGateway=192.168.56.11#IP地址是安装java-gateway的服务器
# JavaGatewayPort=10052 端口,默认就可以
StartVMwareCollectors=5预启动多少个进程[zabbix--->java-gateway的数量]
6、重启zabbix-server
[root@linux-node1 ~]# systemctl restart zabbix-server.service
7、准备apache
我们安装tomcat-8版本
官网:http://tomcat.apache.org
下载软件包
[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
[root@linux-node2 src]# tar xf apache-tomcat-8.5.5.tar.gz
[root@linux-node2 src]# mv apache-tomcat-8.5.5/usr/local/
[root@linux-node2 src]# ln -s /usr/local/apache-tomcat-8.5.5/ /usr/local/tomcat
[root@linux-node2 src]# yum install -y java-1.8.0#tomcat 需要在java环境运行
[root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
在web2上面查看运行状态
[root@linux-node2 src]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
tcp6 00:::8080:::* LISTEN 25750/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
tcp6 00127.0.0.1:8005:::* LISTEN 25750/java
tcp6 00:::8009:::* LISTEN 25750/java
JMX三种类型:
1.无密码认证
2.用户面密码认证
3.ssl
开启JMX远程监控
官方文档:http://tomcat.apache.org/tomcat-8.0-doc/monitoring.html
我们创建一个无密码认证
[root@linux-node2 src]# vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888 #端口号
-Dcom.sun.management.jmxremote.ssl=false #SSL 关闭
-Dcom.sun.management.jmxremote.authenticate=false #用户密码验证关闭
-Djava.rmi.server.hostname=192.168.56.12" #监控的主机
修改完成后重启tomcat
可以使用./shutdown.sh 或者使用kill的方式
[root@linux-node2 src]#/usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
中间可以使用px -aux|grep java 查看是否被杀死
[root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
我们JMX端口设置为8888
[root@linux-node2 src]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
tcp6 00:::8080:::* LISTEN 26226/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00:::8888:::* LISTEN 26226/java
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
tcp6 00:::38532:::* LISTEN 26226/java
tcp6 00127.0.0.1:8005:::* LISTEN 26226/java
tcp6 00:::8009:::* LISTEN 26226/java
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操作:
[root@linux-node1 ~]# yum install -y zabbix-get
Key:
我们随便找一个key,然后我们复制后面的key
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k jmx["java.lang:type=Runtime",Uptime]
ZBX_NOTSUPPORTED:Unsupported item key.
提示:未支持的key,现在并不能获取到这个key 因为没有获取到这个值,所以不会显示。我们可以获取别的试一下
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.079323
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.075377
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.075377
[root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
0.073547
小结: Zabbix其实就是通过zabbix_get 获取到的这个值进行比较的
日志
开启zabbix debug模式
[root@linux-node2 tomcat]# systemctl restart zabbix-agent
### Option: DebugLevel
# Specifies debug level:
# 0 - basic information about starting and stopping of Zabbix processes
# 1 - critical information
# 2 - error information
# 3 - warnings
# 4 - for debugging (produces lots of information)
# 5 - extended debugging (produces even more information)
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
的配置文件
vim /etc/zabbix/zabbix_agentd.conf
#修改Include设置,这样我们可以把脚本放在这个目录下。配置就是.conf结尾
Include=/etc/zabbix/zabbix_agentd.d/*.conf
3.添加权限及测试脚本
[root@linux-node1 zabbix_agentd.d]# chmod +x zabbix_linux_plugin.sh
[root@linux-node1 zabbix_agentd.d]# sh zabbix_linux_plugin.sh
Usage: zabbix_linux_plugin.sh {tcp_status key|memcached_status key|redis_status key|nginx_status key}
提示: 这个脚本要用zabbix用户执行的权限,因为都是zabbix用户在执行,监控TCP会在/tmp/目录生成一个文件用于监控使用
4.修改nginx配置文件
提示:nginx 默认路径是/usr/local/nginx 编译安装需要查看安装路径
[root@linux-node1 zabbix_agentd.d]# vim /usr/local/nginx/conf/nginx.conf
location /nginx_status {
stub_status on;
allow 127.0.0.1;
access_log off;
}
因为脚本的url是nginx_status
所以我们配置文件也要这样修改
测试脚本
[root@linux-node1 zabbix_agentd.d]# curl 192.168.56.11:8080/nginx_status
Active connections:1
server accepts handled requests
282368228236822821835
Reading:0Writing:1Waiting:0
[root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 active
1
[root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 reading
0
[root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 handled
2823688
设置Key
,首先是Key
的名称
[root@linux-node1 zabbix_agentd.d]# cat linux.conf
UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1""$2""$3"
[*]代表一个传参,可以将后面的$1,$2,$3引入进行
,后面是脚步本的路径
需要重启agent
[root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent
我们使用zabbix_get进行测试
[root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-k linux_status[nginx_status,8080,active]
1
[-k]就是指定key 不细说了
[*]*的作用在web界面配置item会显示出来
5.Zabbix web界面设置
我们需要添加item,因为要加好多。我们就使用模板的方式进行添加
提示:我们写一下注释然后选择Add即可
找到我们的模板
我们创建item
创建
各参数前文都有讲解不细说!
修改完成吼点击Add
添加完成后我们要复制很多个用来监控Nginx status
的所有状态,所以我们使用克隆
。来克隆多个进行设置
点进我们的item,然后拖到最下面选择克隆
填一些基本的修改即可,例如下:
添加完成如下图:
item
添加完成我们还需要添加一个图形,用于展示,找到图形路径。点击创建
因为我们主机还没有加入我们的模板,所以我们这里是没有数据的
下面将模板加入到主机中
修改模板
查看结果如下:
6.导出模板
因为设置模板比较麻烦,我们可以将模板导出
导出之后我们需要修改名称就可以了
7.导入模板
我们需要导出自然需要导入,操作如下:
点击添加即可
提示: 模板之间的名称不可以相同
以上就是Nginx完整的监控使用
8.导入TCP模板
加入模板的步骤跟刚刚加入Nginx
的一样,这里我们就使用模板了。
下载链接:http://pan.baidu.com/s/1i54ULjJ 密码:25lh
我们导入模板即可
导入完成之后我们可以查看模板
在里面我们可以见到TCP的11种状态,这个item
是我们需要根据我们脚本进行同步的。
我们可以随便点击一个进行查看,其中这里的key要和脚本的相同
我们在两台服务器都加载这个模板
步骤和上面的一样
添加完成
查看脚本需要等待1分钟
,这主要看我们设置的获取值的时间而定。
我们可以查看图形
###########################################################################################
Zabbix 3.0 生产案例 [五]
上面我们说到了监控TCP和Nginx状态,但是光是监控是没有任何作用的。监控完我们不知道跟没监控没啥区别,下面我们进行`监控项
的讲解
1.触发器
首先我们给Nginx添加触发器
1.选择Configuration--->Hosts
2.找到我们相对应的主机进入
3.选择主机中的Triggers
--->添加
(Create trigger
)
我们设置一个事件
我们选择Insert
,然后选择Add
即可
4.查看报警状态
因为我们设置的级别大于1就报警,默认Nginx是0,随便访问以下就是1.所以肯定就会报警。报警邮件可以根据我们前面 [Zabbix 3.0 部署监控 [三]]文章进行设置
报警邮件如下:
我们可以查看这个事件的相关过程
以上就是我们添加的一个触发器报警步骤
Zabbix
默认触发器的预值
比较低,我们需要调大。这个在面试过程中会被问到
我们进行修改默认模板
路径下图:
我们可以看到默认是大于300
进行报警,我们点进去修改即可
根据实际情况进行修改,我们设置600即可。同时触发器支持多个条件进行报警,如or all
等,只需要在上面的值后面继续添加即可。
我们修改完之后
还有一个有警告显示磁盘不够,因为是虚拟机我们不予理会,我们可以查看到恢复之后的邮件
2.脚本发送邮件
提示: Zabbix邮件报警是3.0才有的,以前不支持用户名密码。所以早期都是使用脚本进行发送邮件报警。
由于时间关系我们就不进行写了请下载发送邮件的python
脚本:
链接:http://pan.baidu.com/s/1gfkGrgZ 密码:6bsh
脚本注释:
Python脚本中三个相关的参数
receiver = sys.argv[1]
#收件人地址
subject = sys.argv[2]
#发送邮件的主题
mailbody = sys.argv[3]
#发送邮件的内容
smtpserver ='smtp.exmail.qq.com'
#邮件服务器地址,本脚本使用的是企业邮箱
username ='username'
#用户名
password ='password'
#密码
sender = username
#发送人名称
我们如果要写一个发送邮件的脚本,需要支持三
个参数
1、收件人
2、标题
3、内容
自定义告警脚本
我们也可以使用shell
写一个最简单的
脚本存放路径:我们可以在配置文件中查看
[root@linux-node1 web]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
提示: 这行配置文件定义了邮件脚本的存放路径,因为它默认会从usr/lib/zabbix/alertscripts
查找邮件脚本
[root@linux-node1 web]# vim /usr/lib/zabbix/alertscripts/sms.sh
#!/bin/bash
ALTER_TO=$1
ALTER_TITLE=$2
ALTER_BODY=$3
echo $ALTER_TO >>/tmp/sls.log
echo $ALTER_TITLE >>/tmp/sms.log
echo $ALTER_BODY >>/tmp/sms.log
我们可以写完之后进行检测,如果这里有信息说明已经调用这个脚本。 如果我们有短信通道将里面的内容换一下即可,短信通道都是有售后的
修改权限
[root@linux-node1 web]# chmod +x /usr/lib/zabbix/alertscripts/sms.sh
[root@linux-node1 web]# ll /usr/lib/zabbix/alertscripts/sms.sh
-rwxr-xr-x 1 root root 152Oct820:26/usr/lib/zabbix/alertscripts/sms.sh
我们写的脚本是短信报警,首先你需要有一个短信通道,我们可以使用阿里云大鱼
,本次我们使用文件追加的形式来模拟.
Zabbix页面设置
点击右上角创建报警介质
点击最下面的Add
提示:先点击小的Update
在点最下面的Update
我们还需要修改报警媒介
找到相对应的用户,点击。
接下来就需要我们触发报警了
上面我们设置的连接数是大于1,所以我们多刷新几次就可以了
这里显示发送完成,我们去日志进行查看
13122323232为发送的手机号
PROBLEM:为主题信息NginxActive监控项
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
[root@linux-node1 web]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
[root@linux-node1 web]# yum install percona-zabbix-templates php php-mysql -y
#percona插件是通过php去获取mysql的参数,所以我们要安装php和php-mysql
我们可以查看它都安装了那些软件
[root@linux-node1 web]# rpm -ql percona-zabbix-templates
/var/lib/zabbix/percona
/var/lib/zabbix/percona/scripts
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh #shell脚本
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php #php获取mysql信息
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf #zabbix配置文件
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml #zabbix模板文件
在percona组成我们已经说过了,此处只是略微介绍。
我们将zabbix模板下载下来
[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
然后从新上传即可
复制配置文件
[root@linux-node1 web]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@linux-node1 web]# ls /etc/zabbix/zabbix_agentd.d/
#安装完软件包后会在/var/lib/zabbix/percona/templates/目录下产生一个配置文件,我们将它拷贝,因为在前面的博文中,我们已经修改过zabbix的配置文件[Include=/etc/abbix/zabbix_agentd.d/
]所以将配置文件放在这个目录下,zabbix就会自己在这个目录下查找相关信息
[root@linux-node1 web]# systemctl restart zabbix-agent.service
重启一下!
下面就应该配置与MySQL的连接
在/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
创建一个文件
[root@linux-node1 ~]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
<?php
$mysql_user ='root';
$mysql_pass ='';
#用户名密码可以自己创建,有密码写密码,没密码为空就好了
提示: 正常这里的用户我们应该创建一个专门用来监控的,由于我这里是测试环境。就不浪费时间了
测试
查看是否可以获取到值,随便找一个测试
[root@linux-node1 ~]# cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf
选择一个肯定有值的key
[root@linux-node1 ~]# cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf|grep gm
UserParameter=MySQL.read-views,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gm
测试结果如下:
[root@linux-node1 ~]# cd /var/lib/zabbix/percona/scripts/
[root@linux-node1 scripts]#./get_mysql_stats_wrapper.sh gm
1
[root@linux-node1 scripts]#./get_mysql_stats_wrapper.sh gw
9736342
可以获取到值,说明没有问题
温馨提示: shell脚本中数据库的路径是localhost
,如果我们没有授权localhost
会获取不到值
[root@linux-node1 scripts]# cat get_mysql_stats_wrapper.sh
HOST=localhost
RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G'| egrep '(Slave_IO_Running|Slave_SQL_Running):'| awk -F:'{print $2}'| tr '\n'','`
#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.查看进程
[root@linux-node2 ~]# ps -ef|grep java
root 804825468010:31 pts/000:00:00 grep --color=auto java
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
2.查看端口
[root@linux-node2 ~]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 42757 root 48uIPv63793790t0 TCP *:webcache (LISTEN)
3.测试是否可以访问8080端口
[root@linux-node2 ~]# curl -I 192.168.56.11:8080
HTTP/1.1200 OK
Server: nginx/1.10.1
Date:Mon,10Oct201605:08:18 GMT
Content-Type: text/html
Content-Length:612
Last-Modified:Mon,19Sep201601:59:49 GMT
Connection: keep-alive
ETag:"57df4695-264"
Accept-Ranges: bytes
二、Zabbix Web界面配置
提示: 监控Web 不依赖于agent,是server直接发送请求的
提示: 这里名字叫做Web场景,因为我们可以设置触发上面3个选项后,才进行报警
提示: 字符串里面可以添加一些字符串,当请求下来有这个字符串就是正常,没有就是不正常。但是最常用的还是状态
然后我们选择Add
比较坑的一点是,我们新添加了一个Web监控。zabbix默认没有给我们安装触发器
三、触发器添加
Web监控中默认不含有触发器,所以需要手动添加
点右上角,进行创建触发器
四、触发器报警测试
1、停掉tomcat,要想返回值不是200 停掉tomcat是最简单的
[root@linux-node2 ~]#/usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE:/usr/local/tomcat
Using CATALINA_HOME:/usr/local/tomcat
Using CATALINA_TMPDIR:/usr/local/tomcat/temp
Using JRE_HOME:/usr
Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
检查
[root@linux-node2 ~]# ps aux|grep tomcat
root 87230.00.0112648976 pts/1 R+12:210:00 grep --color=auto tomcat
报警如下:
回复如上
邮件报警设置可以访问 Zabbix 3.0 生产案例 [五]
我们还可以优化动作[Actions]
Zabbix 就是一个万能的什么都可以监控,只要我们有key。什么都可以监控
key我们可以使用脚本,程序等等等
###########################################################################################
Zabbix 3.0 主备模式 [八]
监控常遇到的问题?
1.监控主机多,性能跟不上,延迟大
2.多机房,防火墙因素
Zabbix轻松解决以上问题,Nagios
不太好解决的问题。
Zabbix 模式介绍:
1、被动模式
2、主动模式
默认是被动模式,我们可以通过以下方式查看监控项是什么模式
因为我们使用的是模板,无法进行修改。我们可以修改配置文件或者新建item的时候设置。
注意:
1、当监控主机超过300+,建议使用主动模式(此处是一个经验值,要根据服务器的硬件来进行考虑)
2、还需要保证Queue对列里面没有延迟的主机
Queue 对列介绍
如果此处的延迟主机有点多的话,我们就需要将被动模式修改为主动模式.
主动模式设置
将192.168.56.12
监控设置为主动模式
1、修改配置文件
为了方便模拟,我们将node2(192.168.56.12)从Zabbix删除从新添加
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
#Server=192.168.56.11
#我们需要注释Server,因为这个是被动模式用的
StartAgents=0
#设置为0之后就不会TCP端口,之前监听TCP端口是因为Server要去问agent信息所以需要开启
ServerActive=192.168.56.11
#此处可以是IP或者是域名,他会连接10051端口
Hostname=linux-node2.example.com
#唯一识别符,我们需要修改成我们本机的主机名。如果我们不设置,它默认会通过item来获取
[root@linux-node2 ~]# systemctl restart zabbix-agent.service
保存重启
保存重启之后我们可以查看我们监听的一些端口,因为我们关闭的被动模式所以不会在监听zabbix端口了
[root@linux-node2 ~]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp6 00:::44589:::* LISTEN 9052/java
tcp6 00:::8080:::* LISTEN 9052/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00:::8888:::* LISTEN 9052/java
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::39743:::* LISTEN 9052/java
tcp6 00127.0.0.1:8005:::* LISTEN 9052/java
tcp6 00:::8009:::* LISTEN 9052/java
我们可以查看日志,进行检查
[root@linux-node2 ~]# tailf /var/log/zabbix/zabbix_agentd.log
14932:20161011:084303.210****Enabled features ****
14932:20161011:084303.210IPv6 support: YES
14932:20161011:084303.210 TLS support: YES
14932:20161011:084303.210**************************
14932:20161011:084303.210 using configuration file:/etc/zabbix/zabbix_agentd.conf
14932:20161011:084303.210 agent #0 started [main process]
14933:20161011:084303.227 agent #1 started [collector]
14934:20161011:084303.227 agent #2 started [active checks #1]
14934:20161011:084303.271 no active checks on server [192.168.56.11:10051]: host [linux-node2.example.com]not found
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 使用场景
常用于多机房情况或者监控主机特别多,几千台左右。这时候使用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是需要使用单独的数据库
,所以不能将Server
和Agent
放在一起
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
[root@linux-node2 ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mariadb-server
我们需要启动MySQL
[root@linux-node2 ~]# systemctl start mariadb.service
我们还需要创建一个库
mysql
create database zabbix_proxy character set utf8;
grant all on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy';
我们需要导入数据
[root@linux-node2 ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.5/
[root@linux-node2 zabbix-proxy-mysql-3.0.5]# zcat schema.sql.gz | mysql -uzabbix_proxy -p zabbix_proxy
Enter password:
#密码是:zabbix_proxy 是我们数据库授权的密码
检查数据库
mysql
show databases;
use zabbix_proxy;
show tables;
#查看是否含有数据
我们需要修改proxy
的配置文件
[root@linux-node2 zabbix-proxy-mysql-3.0.5]# vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.56.11
Hostname=Zabbix proxy
DBName=zabbix_proxy
#数据库名称
DBUser=zabbix_proxy
#用户名
DBPassword=zabbix_proxy
#用户密码
配置文件中没有配置的内容如下:(有需要可以配置)
# ProxyLocalBuffer=0
#数据保留的时间(小时为单位)
# ProxyOfflineBuffer=1
#连不上Server,数据要保留多久(小时为单位,默认1小时)
# DataSenderFrequency=1
#数据的发送时间间隔(默认是1秒)
# StartPollers=5
#启动的线程数
# StartIPMIPollers=0
#启动IPMI的线程数
从这往下都是性能的监控,就不一次说明了。上面都有中文注释
过滤修改过的配置如下:
[root@linux-node2 zabbix-proxy-mysql-3.0.5]# grep '^[a-Z]'/etc/zabbix/zabbix_proxy.conf
Server=192.168.56.11
Hostname=Zabbix proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
启动
[root@linux-node2 ~]# systemctl start zabbix-proxy
查看proxy
进程
[root@linux-node2 ~]# netstat -lntup
ActiveInternet connections (only servers)
ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
tcp 000.0.0.0:33060.0.0.0:* LISTEN 15685/mysqld
tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
tcp 000.0.0.0:100510.0.0.0:* LISTEN 15924/zabbix_proxy
tcp6 00:::44589:::* LISTEN 9052/java
tcp6 00:::8080:::* LISTEN 9052/java
tcp6 00:::22:::* LISTEN 1073/sshd
tcp6 00:::8888:::* LISTEN 9052/java
tcp6 00::1:25:::* LISTEN 2498/master
tcp6 00:::39743:::* LISTEN 9052/java
tcp6 00:::10051:::* LISTEN 15924/zabbix_proxy
tcp6 00127.0.0.1:8005:::* LISTEN 9052/java
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即可
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.56.12
#配置文件修改完需要重启
[root@linux-node2 ~]# systemctl restart zabbix-agent
这时候我们就可以看到那个proxy
都管理了那些机器,做到方便管理的机制
proxy简单的理解就是一个Server
自动化分类
所有的自动化都可以分为2
种
1.自动注册
Zabbix agnet 自动添加
2.主动发现
1.自动发现 Discover
2.zabbix api
因为我们只有2
台web
,为了方便演示。我们将原来添加的proxy
删掉.
提示: 主动模式下设置自动注册
一、自动注册设置
agent配置文件修改
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
LogFileSize=0
StartAgents=0
Server=192.168.56.11
ServerActive=192.168.56.11
Hostname=192.168.56.11
HostMetadata=system.uname
#Server IP地址
HostMetadataItem=system.uname
#特征
1.可以我们自己写一个特征
2.我们执行一个key
#手写级别大于执行key
过滤出我们的配置[如下]
[root@CentOS6 zabbix]# egrep -v "#|^$" zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
Server=192.168.56.11
ServerActive=192.168.56.11
Hostname=192.168.56.12
HostMetadata=system.uname
Include=/etc/zabbix/zabbix_agentd.d/
我们先不重启,因为重启就生效了。我们需要设置一个规则.
注意自动发现必须要设置ServerActive让客户端启动主动去寻找服务端
提示,zabbix-agent起来的时候去找server,这时候就会产生一个事件,然后我们可以基于这个事件来完成一个动作
提示: zabbix-agent起来的时候回去找Server,这时候就会产生一个事件,然后我们可以基于这个事件来完成一个动作。
我们需要选中,然后在进行创建
如果选项匹配到Linux,为什么匹配Linux呢? 因为Linux 可以在输入任何命令都可以生成
[root@linux-node2 ~]# uname
Linux
[root@linux-node2 ~]# uname -a
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
修改完之后我们在重启
一下
[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
(动作)
现在它自己就添加上去了
三、API介绍
Zabbix
提供了一个丰富的API
,Zabbix
提供的API有2
种功能。
一个是管理
一个是查询
请求方法 POST
我们可以进行访问查看
无法打开,我们需要进行POST
请求才可以。
官方说明文档:https://www.zabbix.com/documentation/3.0/manual/api
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "zhangsan",
"password": "123456"
},
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
-d
请求的内容
-H
类型
id
名字,类似一个标识
user
我们登陆用的是zhangsan 默认是Admin
password
默认是zabbix,我们修改为123456了
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
> {
> "jsonrpc": "2.0",
> "method": "user.login",
> "params": {
> "user": "zhangsan",
> "password": "123456"
> },
> "id": 1
> }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
--------------------------分割线------------------------
下面是返回的结果!!!!!!!!!!!!!!!!!!!!!!
{
"id":1,
"jsonrpc":"2.0",
"result":"d8286f586348b96b6b0f880db3db8a02"
}
例如:我们获取所有主机的列表
官方文档:https://www.zabbix.com/documentation/3.0/manual/api/reference/host/get
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
提示: auth里面填写的是我们刚刚返回的result
里面的值,如果我们在["hostid"]
加上id就会显示id。想全显示主机名就直接写host
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
{
"id":1,
"jsonrpc":"2.0",
"result":[
{
"host":"Zabbix server",
"hostid":"10084"
},
{
"host":"linux-node1.example.com",
"hostid":"10105"
},
{
"host":"linux-node1.example.com1",
"hostid":"10107"
},
{
"host":"linux-node2.example.com",
"hostid":"10117"
}
]
}
对比图
例如:如何获取模板
官方文档:https://www.zabbix.com/documentation/3.0/manual/api/reference/template/get
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend"
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
默认太多不发了,看图!
过滤
过滤主机有OS LINUX
的模板
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": "extend",
"filter": {
"host": [
"Template OS Linux"
]
}
},
"auth": "d8286f586348b96b6b0f880db3db8a02",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
效果图如下!
我们提供一个快速认证的Python
脚本
链接:http://pan.baidu.com/s/1gf0pQwF 密码:m7dq
脚本内容如下
[root@linux-node1 ~]# cat zabbix_auth.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import json
url ='http://192.168.56.11/zabbix/api_jsonrpc.php'
post_data ={
"jsonrpc":"2.0",
"method":"user.login",
"params":{
"user":"zhangsan",
"password":"123123"
},
"id":1
}
post_header ={'Content-Type':'application/json'}
ret = requests.post(url, data=json.dumps(post_data), headers=post_header)
zabbix_ret = json.loads(ret.text)
ifnot zabbix_ret.has_key('result'):
print'login error'
else:
print zabbix_ret.get('result')
我们可以执行一下进行查看
提示: 需要修改里面的用户名
和密码
!
#安装python环境
[root@linux-node1 ~]# yum install python-pip -y
[root@linux-node1 ~]# pip install requests
You are using pip version 7.1.0, however version 8.1.2is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting requests
Downloading requests-2.11.1-py2.py3-none-any.whl (514kB)
100%|████████████████████████████████|516kB204kB/s
Installing collected packages: requests
Successfully installed requests-2.11.1
################################################
################################################
################################################
执行结果
[root@linux-node1 ~]# python zabbix_auth.py
5b21317186f2a47404214556c5c1d846
四、案例:使用API进行自动添加主机
首先我们需要删除主机和自动发现
我们使用API来实现自动添加监控主机
使用API添加主机:https://www.zabbix.com/documentation/3.0/manual/api/reference/host/create
curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Zabbix agent 192",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.56.12",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "8"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "5b21317186f2a47404214556c5c1d846",
"id": 1
}' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
用户组ID获取方法
模板IP查看方法
执行结果如下:
[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc'-d'
> {
> "jsonrpc": "2.0",
> "method": "host.create",
> "params": {
> "host": "Zabbix agent 192",
> "interfaces": [
> {
> "type": 1,
> "main": 1,
> "useip": 1,
> "ip": "192.168.56.12",
> "dns": "",
> "port": "10050"
> }
> ],
> "groups": [
> {
> "groupid": "8"
> }
> ],
> "templates": [
> {
> "templateid": "10001"
> }
> ]
> },
> "auth": "5b21317186f2a47404214556c5c1d846",
> "id": 1
> }' http://192.168.56.11/zabbix/api_jsonrpc.php | python -m json.tool
{
"id":1,
"jsonrpc":"2.0",
"result":{
"hostids":[
"10118"
]
}
}
查看Zabbix 页面
提示: 里面的主机名/模板 都是我们设置好的
Zabbix完!
学习zabbix(十)的更多相关文章
- 十一、Android学习第十天——项目开始(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- Python 学习 第十篇 CMDB用户权限管理
Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...
- Linux学习之十四、管线命令
Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php
- Learning ROS for Robotics Programming Second Edition学习笔记(十) indigo Gazebo rviz slam navigation
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 moveit是书的最后一章,由于对机械臂完全不知,看不懂 ...
- Django学习之十: staticfile 静态文件
目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方面 总结 Django学习之十: staticfile 静态文件 理解阐述 ...
- 【转载】 强化学习(十)Double DQN (DDQN)
原文地址: https://www.cnblogs.com/pinard/p/9778063.html ------------------------------------------------ ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...
- python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
随机推荐
- 5款开源BI系统倾力推荐,企业信息化的利器
如今的企业都在选择开源BI系统,提升企业信息化的水平.那么开源BI系统到底该如何选择?在目前的百度上面有着许许多多类似的内容,本文就整理了其中优秀的5款工具,帮助大家选择合适的软件. 1.Smartb ...
- 【C# 异常处理】调试器 管理异常
装载自:https://docs.microsoft.com/zh-cn/visualstudio/debugger/managing-exceptions-with-the-debugger?vie ...
- layui模板注册表单
今天晚上用layui模板做了一个简单的注册表单,功能主要有可以js验证密码重复,可以验证手机号码. 这是界面 下面是我的html文件代码 <!DOCTYPE html> <html ...
- Excel:如何在间断的序号间插入空行
https://jingyan.baidu.com/article/e6c8503cb7ad7de54e1a1851.html
- Python:Scrapy(三) 进阶:额外的一些类ItemLoader与CrawlSpider,使用原理及总结
学习自:Python Scrapy 爬虫框架实例(一) - Blue·Sky - 博客园 这一节是对前两节内容的补充,涉及内容为一些额外的类与方法,来对原代码进行改进 原代码:这里并没有用前两节的代码 ...
- JVM上篇:JVM与Java体系结构
JVM笔记 JVM传言 Java不是最强大的语言,但是JVM是最强大的虚拟机 虚拟机分类 系统虚拟机 类似VMware,就属于系统虚拟机,它提供了一个可运行完整操作系统的平台 程序虚拟机 Java虚拟 ...
- WPF优秀组件推荐之LiveCharts
概述 LiveCharts是一个比较漂亮的WPF图表控件,在数据变化时还会有动画切换的效果,并且样式也可以控制. 官方网站:Live Charts (lvcharts.net) 开源代码:GitHub ...
- php常见的危险函数
代码执行的危险函数 eval() 把字符串作为php代码执行 早期php一句话木马都用这个 <?php @eval($_POST['shell']);?> assert() 检查一个断言是 ...
- ajax 无刷新页面登录
1:页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 结合AngularJS实现拖拽
最近项目中要实现,左侧树向右侧树中元素的拖拽功能,开始在网上看了好多ng-drag等等操作,都没有实现预想的效果,偶然发现一篇博客,然后根据博客改编,实现了自己想要的效果.下面简单的分析一下实现过程. ...