1、zabbix支持的主要监控方式:java
zabbix主要Agent,Trapper,SNMP,JMX,IPMI这几种监控方式,本文章主要经过监控理论和实际操做测试等方式来简单介绍这几种方式的监控原理和优缺点等 。下面对几种监控方式的监控原理进行介绍:linux
一、Agent监控方式web
在Agent监控方式下,zabbix-agent会主动收集本机的监控信息并经过TCP协议与zabbix-server传递信息。Agent监控方式分为主动和被动模式。在被动模式下,zabbix-agent监听10050端口,等待zabbix-server的监控信息收集信息请求;在主动模式下,zabbix-agent收集监控信息并经过10050端口主动将数据传给zabbix-server所在服务器的10051端口。vim
优势:windows
(1)是zabbix最经常使用的监控方式,监测指标深刻细致有针对性。安全
(2)内置监控功能强大,内置监控项目丰富。服务器
(3)TCP方式实现通信,可靠性也有保证。网络
缺点:架构
(1)须要在被监控机器上安装zabbix-agent客户端,部署相对麻烦,最初须要逐个机器安装代理软件app
(2)zabbix-agent客户端运行在被监控机上,会收集本机信息
二、Trapper监控方式
Trapper监控方式使用zabbix-sender程序主动向zabbix-server发送数据。key的名称和发送的数据内容均可以灵活定义。发送的信息采用JSON格式,遵循zabbix-sender协议。能够自定义脚本利用zabbix-sender协议来zabbix-server发送信息。
优势:
(1)不须要在被监控机器上安装zabbix-agent
(2)不收集被监控机器的信息
(3)能够自定义发送的信息内容
(4)可使用自定义脚本发送信息
缺点:
(1)须要自定义发送的信息内容
(2)无内置监控项目
三、SNMP监控方式
SNMP全称Simple Network Management Protocol,即网络管理协议,包括进程管理和被管理设备两部分。做为一种国际通用的网络管理协议被普遍的应用于各类交换机,路由器等网络设备的管理上,而如今也愈来愈多被用于对服务器的监控上。
优势:
(1)服务器一旦部署SNMPAgent,任何能实现SNMP协议的软件均可以对其进行监测。
(2)经过这种手段进行监测不需知道被监测服务器的用户名和密码,比较安全。
缺点:
(1)不少服务器并不是默认安装SNMPAgent,若是经过这种方式监测则须要对全部服务器安装部署。
(2)能监测的参数指标比较固定不够深刻,没法知足用户的特殊需求。
(3)因为SNMP协议是经过UDP方式实现的。在网络情况不佳的状况下其可靠性能以保证。
四、JMX监控方式
JMX,全称Java Management Extensions,即Java管理拓展,是Java平台为应用程序,设备,系统等植入管理功能的框架。在zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采集。
优势:
(1)能够详细的监控各种Java程序的运行状态
缺点:
(1)被监控机上须要安装zabbix-java-gateway
五、IPMI监控方式
IPMI,全称Interlligent Platform Management Interface,即智能平台管理接口,本来是Intel架构中企业系统的周边设备所采用的一种工业标准,之后成为业界通用的标准。用户能够利用IPMI监控服务器的物理特性,如温度,电压,电扇工做状态,电源供应以及机箱***等指标。
根据以上对zabbix各主要监控方式的梳理,结论以下:
(1)根据被监控机器的环境和客户要求选用适当的监控方式,可同时配合多种监控方式。
(2)有条件在监控机上部署zabbix-agent客户端时,该方法为第一选择,由于其功能强大且配置相对简便。
(3)须要自定义脚本或者监控信息时,可以使用Trapper方式,即便用zabbix-sender程序或者自定义脚本遵循zabbix-sender协议,已JSON形式,经过TCP发送自定义信息。
2、Agent监控方式
一、经过Agent方式监控Linux服务器
(1)须要在Linux服务器上安装zabbix-agent客户端安装包,须要先导入软件安装源:
rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
(2)安装zabbix-agent客户端服务:
yum -y install zabbix-agent
(3)zabbix 客户端配置:
配置zabbix_server配置文件:
vim /etc/zabbix/zabbix_agentd.conf
修改如下配置信息:
EnableRemoteCommands=1 #容许zabbix服务器端远程操做
LogRemoteCommands=1 #开启远程执行命令日志
Server=192.168.181.136 #zabbix服务器端IP地址
ServerActive=192.168.181.136 #zabbix服务器端IP地址
Hostname=zabbix_agent #该值跟zabbix web上配置的主机名称要一致 :(配置-》主机-》主机名称)
ListenPort=10050 #监控服务端口
systemctl start zabbix-agent 启动zabbix-agent服务
(4)zabbix服务器端添加被监控主机
选择“配置”-“主机”,而后选择“建立主机”;选择添加的模板
二、经过Agent方式监控windows服务器 :
(1)下载Windows的zabbix客户端
下载地址:https://www.zabbix.com/download_agents
(2)windows上安装agent:
准备好安装文件zabbix_agents-4.0.5-win-amd64-openssl.zip,能够从官网上下载,在此须要注意和server端一致。而后解压,解压后的文档结构(bin conf)
(3)进入conf目录,对配置文件进行配置:
找到conf下的配置文件zabbix——agent.win.conf,须要修改的内容为:LogFile、Server、Hostname、ServerActive这几个参数。具体配置以下:
EnableRemoteCommands=1
LogRemoteCommands=1
Server=192.168.181.136
ServerActive=192.168.181.136
Hostname=windows-host
ListenPort=10050
(4)肯定被监控主机的系统是32位仍是64位
右键“此电脑”,查看操做系统版本,若是是32位,用bin\win32下的应用程序,不然用bin\win64下的应用程序。
(5)安装zabbix-agent客户端程序
用管理员权限打开CMD,进入到zabbix的应用程序目录,执行安装命令:
zabbix_agentd.exe -c D:\zabbix-agent\conf\zabbix_agentd.win.conf -i
安装成功后,执行运行命令:
zabbix_agentd.exe -c D:\zabbix-agent\conf\zabbix_agentd.win.conf -s
(6)在zabbix server端配置agent
在server端,选择 配置-主机 界面,而后点击“建立主机”,在添加主机的界面,输入被监控主机客户端的信息。
(7)设定防火墙容许,zabbix默认要用到的端口是10050,因此设定容许10050端口的访问
查看:netstat -ano
在Zabbix服务器端查看:
3、zabbix Trapper监控方式:
一、zabbix Trapper 工做原理
zabbix获取数据时有时会出现超时,若是一些数据须要执行较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种状况,zabbix增长了Trapper功能,客户端本身提交数据给zabbix。
Trapper是被监控主机主动发送数据给zabbix server,与主动模式的区别是不须要安装客户端;Trapper方式发送数据是以主机名处理,不是IP地址,因此主机名要惟一。
在配置监控项时候Type of information项要选择text,不然会报not support错误。
Trapper工做模式中,使用zabbix监控类型zabbix Trapper(能够称为zabbix捕捉器),在zabbix服务器上必须有一个捕捉项目,而后须要配合zabbix_sender把数据推送给zabbix服务器,该程序由zabbix发行版本自带,源码包解压后在bin目录下,配合crontab按期发送数据给zabbix server。
zabbix_sender是一个命令行工具,能够用来发送zabbix服务器处理性能数据。该工具一般用于长时间运行的用户 脚本,用于按期发送可用性和性能数据。
二、zabbix_sender命令:
rpm导入zabbix_sender安装源:
rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-sender-4.0.0-1.alpha1.el7.x86_64.rpm
使用rpm安装,默认在/bin目录下:
cd /bin
[root@localhost bin]# ./zabbix_sender
zabbix_sender [2844]: either '-c' or '-z' option must be specified
usage:
zabbix_sender [-v] -z server [-p port] [-I IP-address] -s host -k key
-o value
zabbix_sender [-v] -z server [-p port] [-I IP-address] [-s host] [-T] [-r]
-i input-file
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] -k key -o value
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] [-T] [-r] -i input-file
zabbix_sender [-v] -z server [-p port] [-I IP-address] -s host
--tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file -k key
-o value
zabbix_sender [-v] -z server [-p port] [-I IP-address] [-s host]
--tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file [-T] [-r]
-i input-file
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file -k key
-o value
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file]
[--tls-server-cert-issuer cert-issuer]
[--tls-server-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file [-T] [-r]
-i input-file
zabbix_sender [-v] -z server [-p port] [-I IP-address] -s host
--tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file -k key -o value
zabbix_sender [-v] -z server [-p port] [-I IP-address] [-s host]
--tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file [-T] [-r] -i input-file
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file -k key -o value
zabbix_sender [-v] -c config-file [-z server] [-p port] [-I IP-address]
[-s host] --tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file [-T] [-r] -i input-file
zabbix_sender -h
zabbix_sender -V
Try 'zabbix_sender --help' for more information.
usage:zabbix_sender [-Vhv] {[-zpsl] -ko | [-zpl] -T -i <file> -r} [-c<file>]
参数说明:
-c --config<file> 配置文件绝对路径
-z --zabbix-server<server> zabbix server的IP地址
-p --port<server port> zabbix server 端口默认10051
-s --host <hostname> 主机名,zabbix客户端zabbix.agentd.conf配置文件中定义的Hostname(不是服务器的hostname),不是客户端主机的IP地址
-l -- source-address <IP address> 源IP
-k --key <key> 监控项的key值
-o --value<key value> key值
-i --input-file<input file> 从文件里面读取hostname、key、value一行为一条数据,使用空格做为分隔符,若是主机名带空格,那么请使用双引号包起来
-T --with-timestamps 一行一条数据,空格做为分隔符:<hostname> <key> <timestamp> <value>,配合 --input-file option,timestamp为unix时间戳
-r --real-time 将数据实时提交给服务器
-v --verbose 详细模式, -vv 更详细
三、监控项配置
(1)选择“配置”-“主机”-“新建主机”,添加zabbix-Trapper 客户端的用户名:
(2) 添加完主机后,添加监控项,选择刚添加的主机,点击“监控项”,而后点击“建立监控项”:
添加监控信息,而后点击更新:
(3)客户端使用zabbix_sender发送数据:
客户端设备操做:
cd /bin
-z --zabbix-server<server> zabbix server的IP地址
-s --host <hostname> 主机名,zabbix客户端zabbix.agentd.conf配置文件中定义的Hostname(不是服务器的hostname),不是客户端主机的IP地址
-k --key <key> 监控项的key值
-o --value<key value> key值
-vv 能够显示具体信息,这里提示没法链接到zabbix server的10051端口
4、Zabbix SNMP监控方式
一、SNMP监控介绍
若是要监控打印机、路由器、交换机、UPS等设备,确定不能使用zabbix agentd,由于他们不能安装软件,可是通常都支持SNMP协议,可使用SNMP来监控。SNMP检查基于UDP协议。
注意事项:若是监控基于SNMPv3协议的设备,确保msgAuthoritativeEngineID(一般叫作snmpEngineID或“Engine ID”)是惟一的。
之前SNMPv3协议只支持MD5和DES加密,从zabbix2.2开始支持SHA与AES加密协议。
二、Zabbix SNMP监控Linux操做系统
(1)zabbix服务器端须要先安装SNMP服务
使用yum源在线安装SNMP服务配置
yum -y install net-snmp*
配置SNMP配置文件
vim /etc/snmp/snmpd.conf
proc mountd
proc ntalkd 4
proc sendmail 10 1
disk / 10000
load 12 14 14
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
设置开机启动SNMP:
systemctl enable snmpd.service
systemctl start snmpd.service
(2)zabbix服务器使用snmpwalk命令测试被监控计算机名
2c是指采用SNMP V2版本,192.168.181.146是指监控设备开启了SNMP服务,不然会获取失败,sysName是指被监控设备的计算机名。
[root@localhost ~]# snmpwalk -v 2c -c public 192.168.181.136 sysName
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain
(3)被监控设备安装SNMP服务
yum -y install net-snmp*
配置SNMP配置文件:
vim /etc/snmp/snmpd.conf
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1
com2sec notConfigUser default zabbix
#zabbix是被监控的团体名 public团体名称能够修改为本身设置的字符串也可使用默认public,default字符串默认是全部IP地址均可以访问,若是把default修改为192.168.181.136(zabbix服务器IP地址),表示只容许zabbix服务器访问这台被监控电脑的SNMP服务。
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl enable snmpd.service
[root@localhost ~]# systemctl start snmpd.service
(4)zabbix服务端web界面添加主机
选择“配置”-“主机”-“建立主机”,添加要被监控设备的主机信息:
添加模块:
添加宏:
三、zabbix SNMP监控windows系统
https://blog.51cto.com/5001660/2149599
四、zabbix SNMP 监控网设备
5、zabbix JMX监控方式
一、zabbix JMX 简介
在企业中,不少程序是基于Java来编写的,java程序运行在JVM之上,而JVM本身就能够监听在某个套接字上,将本身内部的状态信息输出出去,因此监控服务器只须要直接链接JVM的套接字就能够获取到Java进程的相关信息,不须要经过Agent、SNMP;但是zabbix是没办法本身链接JVM套接字的,也就是说,zabbix自身是不可以做为客户端来连接该套接字的。因此,就须要额外安装一个服务来链接JVM套接字的。这个服务就是zabbix-java-gateway.x86_64(Java网关);能够经过该网关来监听多个JVM;zabbix-agent-gateway能够是一个单独的主机,能够和zabbix server安装到一台主机上;
二、zabbix server 安装java gateway
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX能够跨越一系列异构操做平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
yum install -y java java-devel zabbix-java-gateway
6、zabbix IPMI监控方式
IPMI(Intelligent PlatformManagement Interface)既智能平台管理接口是使硬件管理具有“智能化”的新一代通用接口标准。用户能够利用IPMI监视服务器的物理特性,如温度、电压、电扇工做状态、电源供应以及机箱入侵等。Ipmi最大的优点在于它是独立于 CPU BIOS 和OS的,因此用户不管在开机仍是关机的状态下,只要接通电源就能够实现对服务器的监控。Ipmi是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller),一种嵌入式管理微控制器,它至关于整个平台管理的“大脑”,经过它 ipmi 能够监控各个传感器的数据并记录各类事件的日志。
使用 ipmi 的先决条件,想要实现对服务器的 ipmi 管理,必须在硬件、OS、管理工具等几个方面都知足:
a.服务器硬件自己提供对 ipmi 的支持目前惠普、戴尔和 NEC 等大多数厂商的服务器都支持IPMI 1.5,但并非全部服务器都支持,因此应该先经过产品手册或在 BIOS 中肯定服务器是否支持 ipmi,也就是说服务器在主板上要具备 BMC 等嵌入式的管理微控制器。
b.操做系统提供相应的 ipmi 驱动经过操做系统监控服务器自身的 ipmi 信息时须要系统内核提供相应的支持,linux 系统经过内核对OpenIPMI(ipmi 驱动)的支持来提供对 ipmi 的系统接口。
平常监控中使用IPMI的方式很少,在此不举例说明了。