https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/snmp
1Items
1.1creating items
index |
detail |
note |
1 |
Configuration->hosts |
|
2 |
Click on Items in the row of the host |
|
3 |
Click on Create item in the upper right corner of the screen |
|
4 |
Enter parameters of the item in the form |
1.You can also create an item by opening an existing one, pressing the Clone button and then saving under a different name.
2.parameter description refer to
https://www.zabbix.com/documentation/3.4/manual/config/items/item
3.Text data limits depend on the database backend.
4.Unit blacklist.
By default, specifying a unit for an item will result in a multiplier prefix being added - for example, value 2048 with unit B would be displayed as 2KB. For a pre-defined, hardcoded list of units this is prevented: ms | RPM|rpm|%
5.Item value preprocessing
The Preprocessing tab allows to define transformation rules for the received values. Transformations are executed in the order in which they are defined.
6. Unsupported items
An item can become unsupported if its value cannot be retrieved for some reason. Such items are still rechecked at a fixed interval, configurable in Administration section.
1.1.1Item key format
Description:Item key format, including key parameters, must follow syntax rules.The following illustrations depict the supported syntax. Allowed elements and characters at each point can be determined by following the arrows - if some block can be reached through the line, it is allowed, if not - it is not allowed.
To construct a valid item key, one starts with specifying the key name, then there's a choice to either have parameters or not - as depicted by the two lines that could be followed.
Item key format
Name |
format |
Description |
Key name |
0-9a-zA-Z_-. |
Numbers,lowercase/uppercase letters,upderscore,dash,dot is allowed |
Key parameters |
1multiple parameters can be separated by comma (,) 2 Each key parameter can be either a quoted string, an unquoted string or an array. 3 can also be left empty using the default value. |
1 2 3such as icmpping[,,200,,500]. part parameters are left at their defaults |
|
Parameter - quoted string: any Unicode character is allowed, and included double quotes must be backslash escaped. |
To quote item key parameters, use double quotes only. Single quotes are not supported. |
|
Parameter - unquoted string: any Unicode character is allowed except comma and right square bracket (]). Unquoted parameter cannot start with left square bracket ([). |
|
|
Parameter – array: it is again enclosed in square brackets, where individual parameters come in line with the rules and syntax of specifying multiple parameters. |
1.1.2Custom intervals
Create custom rules to set the times when an item is checked.Two ways:
Method |
Description |
Detail |
1Flexible intervals |
A flexible interval is defined with Interval and Period: Interval – the update interval for the specified time period Period – the time period when the flexible interval is active |
allow to redefine the default update interval |
2Scheduling |
are used to check items at specific times |
whereby an item check can be executed at a specific time or sequence of times |
Detail rules refer to:
https://www.zabbix.com/documentation/3.4/manual/config/items/item/custom_intervals
1.2 Item types
Such as zabbix agent checks| SNMP agent checks|SNMP traps|IPMI checks|Simple checks…
Note: If a particular item type requires a particular interface (like an IPMI check needs an IPMI interface on the host) that interface must exist in the host definition.
1 Multiple interfaces can be set in the host definition: Zabbix agent, SNMP agent, JMX and IPMI
2 If an item can use more than one interface, it will search the available host interfaces (in the order: Agent→SNMP→JMX→IPMI) for the first appropriate one to be linked with.
3
1.2.1 Zabbix agent
Type |
Description |
Detail |
Zabbix agent |
for passive checks |
|
Zabbix gent (active) |
for active checks |
Zabbix agent supports lots of item keys, Parameters without angle brackets are mandatory. Parameters marked with angle brackets < > are optional.
Details for item keys refer to :
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent
windows specific item keys refer to:
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent/win_keys
1.2.2SNMP agent
Overview:
Column |
Detail |
note |
purpose |
monitoring on devices |
such as printers, network switches, routers or UPS that usually are SNMP-enabled and on which it would be impractical to attempt setting up complete operating systems and Zabbix agents. |
Specail note |
To be able to retrieve data provided by SNMP agents on these devices, Zabbix server must be initially configured with SNMP support. |
SNMP checks are performed over the UDP protocol only |
feature |
1Use bulk requests 2query SNMP devices for multiple values in a single request. 3retry at least one time |
1incorrect SNMP response:SNMP response from host "gateway" does not contain all of the requested variable bindings. 2If monitoring SNMPv3 devices, make sure that msgAuthoritativeEngineID (also known as snmpEngineID or “Engine ID”) is never shared by two devices. According to RFC 2571 (section 3.1.1.1) it must be unique for each device. |
Configuring SNMP monitoring
1安装snmp
安装前基础知识:Snmp部分常用OID
http://www.ttlsa.com/monitor/snmp-oid/
或https://www.cnblogs.com/aspx-net/p/3554044.html
系统参数(1.3.6.1.2.1.1) |
|||
OID |
描述 |
备注 |
请求方式 |
.1.3.6.1.2.1.1.1.0 |
获取系统基本信息 |
SysDesc |
GET |
.1.3.6.1.2.1.1.3.0 |
监控时间 |
sysUptime |
GET |
.1.3.6.1.2.1.1.4.0 |
系统联系人 |
sysContact |
GET |
.1.3.6.1.2.1.1.5.0 |
获取机器名 |
SysName |
GET |
.1.3.6.1.2.1.1.6.0 |
机器坐在位置 |
SysLocation |
GET |
.1.3.6.1.2.1.1.7.0 |
机器提供的服务 |
SysService |
GET |
.1.3.6.1.2.1.25.4.2.1.2 |
系统运行的进程列表 |
hrSWRunName |
WALK |
.1.3.6.1.2.1.25.6.3.1.2 |
系统安装的软件列表 |
hrSWInstalledName |
WALK |
说明:
1) OID等同于名称(备注中的字符串),如果要查看对应的信息可通过OID或名称执行脚本:
如查看网络接口信息,通过OID和名称查询结果一样
命令 |
结果 |
说明 |
snmpwalk -v 1 14.215.130.184 -c public IfDescr (使用名称) |
IF-MIB::ifDescr.1 = STRING: lo IF-MIB::ifDescr.2 = STRING: em1 IF-MIB::ifDescr.3 = STRING: em2 IF-MIB::ifDescr.4 = STRING: em3 IF-MIB::ifDescr.5 = STRING: em4 |
1查询所有网络接口信息 2说明共有5个网口,名称为lo,em1,… 3 lo表示本地回路 |
snmpwalk -v 2c 14.215.130.184 -c public .1.3.6.1.2.1.2.2.1.2 (使用OID) |
||
snmpwalk -v 2c 14.215.130.184 -c public IF-MIB::ifDescr.1 (使用名称) |
IF-MIB::ifDescr.1 = STRING: lo |
1查询接口1的信息 2注意 .1.3.6.1.2.1.2.2.1.2.1 最后的1代表接口1,如果查询第二个则可为2,以此类推 |
snmpwalk -v 2c 14.215.130.184 -c public .1.3.6.1.2.1.2.2.1.2.1 (使用OID) |
https://blog.csdn.net/alizee6352012/article/details/10170985
2、安装和使用
http://www.ttlsa.com/zabbix/zabbix-snmp-install/
安装snmp配置
步骤 |
详细 |
备注 |
yum安装snmp |
yum install net-snmp* -y |
|
snmp配置 |
# vim /etc/snmp/snmpd.conf view systemview included .1.3.6.1.2.1.25.1.1 //找到这行,增加下面配置 view systemview included .1 // 这个是新增加的 proc mountd // 找到这些配置,把注释去掉 proc ntalkd 4 proc sendmail 10 1 disk / 10000 load 12 14 14 |
|
启动snmpd |
service snmpd start |
|
通过snmp获取数据 |
1首先需要对应的OID,参考 http://www.ttlsa.com/monitor/snmp-oid/ 或https://www.cnblogs.com/aspx-net/p/3554044.html 本文以184服务器为测试环境: snmpwalk -c public -v 2c 14.215.130.184 sysName 得到结果: SNMPv2-MIB::sysName.0 = STRING: ISHYC-003538 |
例如获取主机名可采用名称或OID形式获取: 1使用名称: # snmpwalk -c public -v 2c 173.219.255.122 sysName // 使用名称 2使用OID: # snmpwalk -c public -v 2c 173.219.255.122 .1.3.6.1.2.1.1.5.0 // 使用OID 得到结果都为 SNMPv2-MIB::sysName.0 = STRING: li519-232 对应li519-232即为主机名 |
3配置snmp监控
步骤 |
详细 |
备注 |
1使用SNMP接口为设备创建一个主机 |
1创建一个主机(或已有主机) 2在SNMP interfaces接口栏输入ip地址 3也可使用snmp模板或自行添加snmp监控项 4点击add保存 |
1已有主机可直接配置 2snmp模板可能与主机不兼容 3snmp检查不需要代理端口,可忽略 |
2找出要监控项目的SNMP字符串(或OID) |
根据http://www.ttlsa.com/monitor/snmp-oid/ 或https://www.cnblogs.com/aspx-net/p/3554044.html 中常用OID选择要监控的项目 如:监控端口1,2,3(IFSpeed)上的接口当前带宽。 对应名称为: IF-MIB::ifSpeed.1, IF-MIB::ifSpeed.2, IF-MIB::ifSpeed.3 |
注意:3COM似乎是使用数百个端口号,例如 端口1=端口101,端口3=端口103,但思科使用常规数字,例如。 端口3=3。 关于OID和MIB介绍 |
3创建监控项 |
1回到Zabbix并点击前面创建的SNMP主机的监控项 2创建端口1监控项,单击Create item,输入监控项name, 如:SNMP-IFSpeed (pbs)1(自定义) 3将type改为SNMPv* agent (*表示1或2或3),本文采用SNMPv2 agent。为版本号 4、host interface确保已存在SNMP 5、设置key为有意义的内容,如SNMP-ifspeed1,可自定义。如报错,可遵循SNMP-**格式 6、snmp oid填入:IF-MIB::ifSpeed.1, 7、snmp community填入public,其他默认,点击”update”。 8、依次添加端口2监控项,对应名称可为SNMP-IFSpeed (pbs)2,key可为SNMP-ifspeed2,snmp oid为IF-MIB::ifSpeed.2,snmp community为public |
对snmp监控,key没有太大作用,主要通过snmp oid进行区分 |
1.2.2.1Dynamic indexes
动态索引下配置:(未使用,没明白)
在SNMP OID中的索引号可能是动态的,随时间而改变,导致监控可能停止。
为避免,定义一个考虑动态索引号的OID。
如:
如果需要检索索引值以匹配Cisco设备上的GigabitEthernet0/1接口的ifInOctets,请使用以下OID:
ifInOctets["index","ifDescr","GigabitEthernet0/1"]
语法:
<OID of data>["index","<base OID of index>","<string to search for>"]
参数 |
描述 |
备注 |
OID of data |
主OID用于监控项上的数据检索。 |
即SNMP OID表中的名称 |
index |
处理方法。目前支持一种方法: |
即固定 |
base |
该OID将被搜索以获取与该字符串对应的索引值。 |
|
string |
用于在进行查找时与值精确匹配的字符串。区分大小写 |
Details refer to:
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/snmp/dynamicindex
例如:
配置的检测语法:
HOST-RESOURCES-MIB::hrSWRunPerfMem["index","HOST-RESOURCES-MIB::hrSWRunPath",
"/usr/sbin/apache2"]
如果设备存在以下SNMP信息:
...
HOST-RESOURCES-MIB::hrSWRunPath.5376 =
STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5377 =
STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5388 =
STRING: "/usr/sbin/apache2"
HOST-RESOURCES-MIB::hrSWRunPath.5389 =
STRING: "/sbin/sshd"
...
则检索出对应的OID(5388对应的检测项),返回数据:
HOST-RESOURCES-MIB::hrSWRunPerfMem.5388 =
INTEGER: 31468 Kbytes
2索引查询缓存
动态检索请求下,Zabbix检索并缓存基本OID下完整的SNMP表进行检索。(不用再请求监控的主机,注意每个poller处理使用单独的缓存)
1.2.3 SNMP traps
与snmp agent相反,该情况下为从支持SNMP的设备发送的,由Zabbix收集或“trapped”。
(即设备主动发送)
1snmp agent和trap区别
类别 |
区别 |
备注 |
Snmp代理(agent) |
1要监控的设备无法安装操作系统或zabbix agent。 2zabbix服务器进行数据获取 3zabbix服务器初始化配置必须具备snmp支持 4端口161 |
|
Snmp |
1、 设备主动发送数据,zabbix收集或”trapped” 2、 端口162 3、 使用trap可以检测在查询间隔期间发生的一些可能被查询数据丢失的短期问题 |
Zabbix中接收SNMP trap旨在使用snmptrapd和内置机制之一来传递trap到Zabbix - 一个perl脚本或SNMPTT。 |
2接收trap流程
1)snmptrapd 收到trap
2)snmptrapd将trap传递给SNMPTT或调用Perl接收器
3)SNMPTT或Perl trap接收器解析,格式化并将trap写入文件
4)Zabbix SNMP trap读取并解析trap文件
5)对于每个trap,Zabbix发现主机接口与接收的trap地址匹配的所有“SNMP
trap”监控项。请注意,在匹配期间只使用主机接口中选定的“IP”或“DNS”。
6)对于每个找到的监控项,将trap与“snmptrap[regexp]”中的regexp进行比较。 trap设置为all匹配项的值。如果没有找到匹配的监控项,并且有一个“snmptrap.fallback”监控项,则将trap设置为该值。
7)如果trap未设置为任何监控项的值,Zabbix默认记录不匹配的trap。(这由管理 - >常规 - >其它中的“记录不匹配的SNMP
trap(Log unmatched SNMP traps)”配置。)
3配置snmp trap
步骤 |
详细 |
备注 |
复制perl脚本并授权 |
1、 本文为:/home/web2018/invt_oms/zabbix-3.4.7/misc/snmptrap/zabbix_trap_receiver.pl 2、 cp /home/web2018/invt_oms/zabbix-3.4.7/misc/snmptrap/zabbix_trap_receiver.pl 授权: chmod +x |
配置snmptrap链接:https://blog.csdn.net/liang_baikai/article/details/53522293 或 https://www.zabbix.org/wiki/Start_with_SNMP_traps_in_Zabbix linux下载zabbix源码命令: tar |
snmptrapd的配置文件并修改 |
1 find / -name snmptrapd.conf对应结果:/etc/snmp/snmptrapd.conf 2修改 vim /etc/snmp/snmptrapd.conf,增加2行代码: authCommunity execute public perl |
|
修改zabbix_server.conf文件,启动snmptrap的功能 |
vi /etc/zabbix/zabbix_server.conf 配置: StartSNMPTrapper=1 SNMPTrapperFile= /tmp/zabbix_traps.tmp |
SNMPTrapperFile=/tmp/zabbix_traps.tmp 即查看vi /usr/share/zabbix/zabbix_trap_receiver.pl中的SNMPTrapperFile配置明细,必须保持一致 |
重启zabbix_server服务 |
Systemctl restart zabbix-server |
|
启动snmptrapd服务 |
systemctl restart snmptrapd |
执行命令测试trap: snmptrap 查看vi /tmp/zabbix_traps.tmp,显示trap数据: 18:01:17 PDU notificationtype TRAP version 0 receivedfrom UDP: [14.215.130.184]:50455->[14.215.130.184]:162 注意:由于本文配置zabbix-server服务器ip为14.215.130.184,如果trap命令的ip为127.0.0.1则zabbix无法获取trap信息 |
Zabbix上配置 |
1创建主机,并配置SNMP接口。”配置”à主机à设置具有正确ip或dns的snmp接口,本文配置SNMP接口ip为14.215.130.184端口161 2创建snmptrap监控项,配置name: SNMP-TRAP-ALL Key:snmptrap.fallback Type:SNMP trap Host interface:14.215.130.184:161 Type of information:log |
查看最新数据,存在则部署成功 1将每个收到的trap地址与所有SNMP接口的IP和DNS地址进行比较,以查找相应的主机 2 key分两种:snmptrap.fallback(采集任何未被snmptrap[]规则匹配的trap)和snmptrap[regexp ](采集所有符合regexp规则的SNMP信息,如果没有规则则会采集所有信息, regexp为正则表达式) 目前不支持多行正则表达式匹配,要使SNMP trap监控工作,必须首先正确设置。 3实际测试snmptrap[]会捕获当前SNMP接口ip下所有的trap信息,如果trap信息非配置的snmp接口ip,则不会捕获和显示(如上面提到的127.0.0.1trap信息) |
以上为perl脚本处理snmptrap信息配置,也可配置为SNMPTT处理:
https://blog.csdn.net/mintazoedeng/article/details/70210358
官网中给出的为SNMPTT方式作为trap处理器,实际采用嵌入perl脚本方式效率更好,本文即使用官网最后提供的perl脚本实现trap处理。(This simple example uses SNMPTT as traphandle. For better
performance on production systems, use embedded Perl to pass traps from
snmptrapd to SNMPTT or directly to Zabbix.)
1.2.4 IPMI checks(未成功)
1简介:
1) 硬件监控,监控zabbix中智能平台管理接口(Intelligent
Platform Management Interface (IPMI))设备的健康状态和使用状态。
2) 执行IPMI监控zabbix服务器需要初始化配置IPMI支持。
3) Zabbix ipmi监控需要设备支持IPMI(HP iLO, DELL DRAC, IBM RSA, Sun SSP, etc).
2配置
Step |
Detail |
note |
主机配置 |
1主机配置IPMI监控,添加IPMI接口(ip和端口)并定义授权IPMI参数 详细步骤:ConfigurationàHostàIPMI interfacesàclick on ”Add”àip: 14.215.130.184 port:623àupdate |
|
服务器配置 |
1 vi /etc/zabbix/zabbix_server.conf 取消注释StartIPMIPollers=0 并修改为StartIPMIPollers=3 (poller个数为3) 2保存后重启zabbix_server systemctl restart zabbix-server |
Zabbix服务器默认未配置开启IPMI |
配置监控项(item) |
1create item 2 |
1安装ipmi命令:
yum -y install OpenIPMI OpenIPMI-devel
ipmitool freeipmi
2查看服务器型号:
dmidecode | grep "Product"
结果:
Product Name: PowerEdge R620
Product Name: 0XWDCF
网上查询PowerEdge
R620和0XWDCF均指dell服务器
3ipmi配置信息
http://blog.sina.com.cn/s/blog_6dc1452201014j9s.html
3.1)查看网络配置信息
ipmitool
lan print 1
结果:
Set
in Progress : Set Complete
Auth
Type Support : MD5
Auth
Type Enable : Callback : MD5
: User : MD5
: Operator : MD5
: Admin : MD5
: OEM :
IP
Address Source : Static Address
IP
Address : 192.168.0.120
Subnet
Mask : 255.255.255.0
MAC
Address : 20:47:47:87:55:e2
注意:根据该列表提供的auth方式设置命令auth值。
3.2)查看用户列表
ipmitool user list 1
可以看到当前有两个用户,一个是默认匿名用户,一个是root。
ID Name Callin
Link Auth IPMI Msg Channel Priv Limit
1 true
false false NO ACCESS
2 root true true
true ADMINISTRATOR
3 true false
false NO ACCESS
4 true false
false NO ACCESS
3.3)设置root密码
ipmitool
user set password 2
(表示设置id为2的用户的password,即root的密码)
根据提示输入2次密码。本文为invt8888test
3.4)测试ipmi配置的ip地址:
两种方式:ping 192.168.0.120或ipmitool -H 192.168.1.70 -U root power status
正常结果:power is
on.
注意:ipmitool只能对其他服务器执行,对本机执行则返回无结果;
用户开启
ipmitool
user enable 2
本地查看sensor监控列表
ipmitool
-I open sensor list
ipmitool
lan set 1 access on # 开启IPMI Over LAN
https://jingyan.baidu.com/article/1876c8527f42c7890b1376e8.html
https://www.linuxidc.com/Linux/2017-05/143523.htm
https://blog.csdn.net/yunsongice/article/details/5408802
https://www.zhihu.com/question/29248759
//测试是否有联通性
ipmitool
-H 192.168.0.120 -I lan chassis power status
监控电压:Voltage
1
https://www.iyunv.com/thread-13105-1-1.html
http://blog.51cto.com/pesen/1283836
修改ipmi的ip地址:ipmitool
lan set 1 ipaddr 172.17.0.128
//增加一条数据到arp解析表
arp
-s 172.17.0.128 20:47:47:87:55:e2
//查看arp解析表数据
arp
-n
//创建用户:
invt/invt8888test
//查看zabbix日志
//查看日志
grep
'Added sensor' /var/log/zabbix/zabbix_server.log
vi /var/log/zabbix/zabbix_server.log
1.2.5 Simple checks
1简单检查,用于远程无客户端检查服务。不需要zabbix
agent,zabbix server/proxy负责处理简单检查,例如:net.tcp.service[ftp,,155] net.tcp.service[http] net.tcp.service.perf[http,,8080]
2虚拟机的简单检查监控项需要使用user
name和password,其他则不需要
3直接创建监控项即可。需要注意:zabbix使用fping来处理ICMP pings,需要服务器或被监控对象安装,并确保权限正确以及fping文件位置和zabbix server/proxy配置的路径一致(FpingLocation参数),否则,ICMP pings将不被处理。
Fping授权:
shell> chown root:zabbix /usr/sbin/fping
shell> chmod 4710 /usr/sbin/fping
其他参数详细:https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/simple_checks
4虚拟机监控参考:https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/simple_checks/vmware_keys
详细监控见:
https://www.zabbix.com/documentation/3.4/manual/vm_monitoring
步骤 |
详细 |
备注 |
配置 |
编译版需要加上--with-libxml2 |
|
自动发现 |
使用 low-level |
|
1.2.6Log file monitoring
1基本信息:日志文件监控
描述 |
详细 |
备注 |
通知 |
用于告知用户日志文件包含指定字符或字符规则模式 |
|
监控条件 |
1主机运行zabbix agent 2日志监控项设置。 |
监控日志文件大小限制取决于大文件支持。大文件支持在32位solaris不支持。 |
2配置
步骤 |
详细 |
备注 |
校验agent参数 |
确保agent配置文件中: 1 Hostname参数和前端host name匹配 2ServerActive参数中的Servers指定为active checks 处理,即type类型为zabbix agent(active) |
本文配置: 1Vi /etc/zabbix/zabbix_agentd.conf 2设置Hostname: Hostname=Zabbix-server和web前端配置一致 3设置ServerActive: ServerActive=14.215.130.184 |
监控项配置 |
1创建监控项,配置 Name:log item test Type:zabbix agent(active) Key: log[/var/log/zabbix/zabbix_server.log,[error,Warning],,,,,] Log time format: pppppp:yyyyMMdd:hhmmss |
/var/log/zabbix/zabbix_server.log |
注意 |
1、server和agent采用2个计数器保存被监控日志的大小和最近修改时间(对于logrt),另外: |
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/log_items |
正则表达式匹配部分的提取 |
1仅提取匹配文件中感兴趣部分值,而不是匹配的整行。 2通过log和logrt监控项中附加的output参数实现。 |
log[/path/to/the/file,"large result "large result buffer Zabbix返回结果仅为数字,是因为output参数定义为\1,表示第一个也是唯一一个感兴趣子群:([0-9]+) (代表数字) 通过提取和返回数字,可定义触发器 |
maxdelay参数 |
参数允许忽略日志文件中的一些较旧的行,以便在“maxdelay”秒内获取最近分析的行。 |
指定'maxdelay'>0可能导致忽略重要的日志文件记录和错过的报警。只有在必要时才使用。 |
1.2.7Calculated items
1基础:
计算类监控项在其他监控项基础上进行计算。
描述 |
详细 |
备注 |
1 |
计算监控项可创建虚拟数据源,所有计算在zabbix server端,与计算监控项无关的则在zabbix |
2配置
描述 |
详细 |
备注 |
配置key和Formula |
key唯一性, Formula计算公式,2者无关联。Key值不能在Formula中使用 |
1简单Formula公式 func(<key>|<hostname:key>,<parameter1>,<parameter2>,...) 2所有计算公式中的监控项必须存在,如果更新了引用的item,需手动更新formula中涉及的key |
计算item失效情况 |
1引用的item存在以下情况:1)找不到2)被禁用3)属于被禁用的主机4)不支持 2无数据用于计算 3被0整除 4使用非法语法 |
|
样例1 计算硬盘剩余百分比 |
计算公式: 100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]") |
|
样例2 计算zabbix10分钟处理的数字值平均值 |
avg("Zabbix Server:zabbix[wcache,values]",600) |
ARGUMENT |
DEFINITION |
func |
One |
key |
The |
parameter(s) |
Function |
1.2.8Internal checks
1简介:可检测zabbix内部处理,即监测zabbix
server或proxy内部执行状况。如果主机被server监控则在server端计算;类似,则在proxy端计算。内部监测由zabbix poller处理。
描述 |
详细 |
备注 |
支持的检测 |
1无”<”号的参数为常量,如zabbix[host,<type>,available]中的host和available 2item和item参数的值仅在支持类型下有效(如不支持在proxy端,则仅在server下可收集数据) |
|
样例 |
创建item: Name: zabbix[boottime] Type: zabbix internal Key: zabbix[boottime] |
1.2.9SSH checks
1简介:无客户端监控,不需要agent。Zabbix
server须初始配置支持SSH2(rpm包安装情况下不需要)。
注意:libssh2库最小支持版本为1.0.0
2配置
描述 |
详细 |
备注 |
密码认证 |
Ssh检测提供2种密码验证方式: 1 user/password用户/密码对 2 key-file密钥文件 |
1 User/password方式不需要额外配置 2 /home/zabbix在这里是zabbix用户帐户的主目录,而.ssh是一个目录,默认情况下,公钥和私钥将由主目录中的ssh-keygen命令生成。 3 centos主目录的zabbix用户账号位置为/var/lib/zabbix 4公钥和私钥默认生成在/home/zabbix/.ssh目录下(分别为id_rsa.pub和 id_rsa),该目录与zabbix server配置的SSHKeyLocation参数一致 5密钥类型不为rsa可能不被zabbix中的libssh2支持 |
Key-file密钥文件认证 |
Key-file认证方式: 1)vi 2)设置SSHKeyLocation=/home/zabbix/.ssh 3)重新配置zabbix的home目录 3.1)停止agent和server。 systemctl stop zabbix-agent systemctl stop zabbix-server 3.2)尝试移动home目录位置(如果存在) usermod -m -d /home/zabbix zabbix 3.3)移动失败则创建home目录(centos中) test -d /home/zabbix || mkdir 3.4)home目录权限设置 chown zabbix:zabbix /home/zabbix chmod 700 /home/zabbix 4) 启动: systemctl start zabbix-agent systemctl start zabbix-server 5)执行秘钥生成命令 sudo -u zabbix ssh-keygen -t rsa 5.1)Enter file in 5.2)Enter passphrase |
本文配置passphrase为空 |
Shell配置 |
1每个SSH检测监控的主机上仅执行一次 2)执行以下命令,将公钥文件安装到远程主机10.10.10.10,以便以root账号执行SSH检测: sudo -u zabbix ssh-copy-id root@10.10.10.10 2.1) Are you sure you want to 2.2) root@14.215.130.184's 2.3)成功后Number of 2.4)使用默认的私钥(/home/zabbix/.ssh/id_rsa)检测SSH 登录 sudo -u zabbix ssh root@10.10.10.10 |
本文配置为14.215.130.184 |
Item配置 |
配置item: Name:SSH test check(without passphrase) Type:SSH agent Key:ssh.run[clear] Host interface:****.10050 Authentication method:public key User name:root Public key file:id_rsa.pub Private key file:id_rsa Key passphrase: Excuted script:具体执行脚本,多个脚本分行排列。如systemctl status mysql top |
libssh2库可能将执行脚本缩短为32kB |
1.2.10 Trapper items
1、概述
Trapper items接收进入的数据而不是查询的数据。适合任何push(推送)到zabbix的数据。
使用trapper item必须:1)zabbix设置trapper item 2)发送数据到zabbix
2配置
描述 |
详细 |
备注 |
Item配置 |
创建item: Name: trapper item Type: zabbix trapper Key: trap Type of information:text Allowed hosts:可为空或指定ip |
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/trapper |
发送数据 |
1该测试样例中,我们使用zabbix_sender工具发送测试数据: zabbix_sender -z 14.215.130.184 -p 10051 -s 2018-05-04 14:44:14 test value |
1安装zabbix-sender yum install -y zabbix-sender 2注意:"Zabbix-server"与Host中的Host name参数一致 |
1.2.11 jmx monitoring
1概述:
监控JMX(Java Management Extensions,即Java管理扩展)计数器。Zabbix通过名为Zabbix
Java gateway的守护进程形式支持jmx监控。
注意:java getway和被监控jmx应用间通讯不能启用防火墙,即开启端口。
2对java应用开启远程jmx监控
2.1)监控结构图:
描述 |
详细 |
备注 |
Zabbix-server ßàjava-gateway |
1) Zabbix-server通过java-gateway支持jmx监控;java-gateway提供10052端口给zabbix-server或proxy进行请求连接 2) Zabbix server或proxy通过配置StartJavaPollers参数设置连接java-gateway线程数。而java-gateway则通过START_POLLERS配置工作线程数。建议StartJavaPollers小于或等于START_POLLERS |
1)Java-gateway需要安装,本文采用rpm(安装包方式)安装,不需要额外下载,直接yum命令安装即可: yum 2) 当然java必须先安装和配置好 3)一个zabbix-server或proxy仅能配置一个gateway |
java-gateway ßàjmx |
Jmx可以理解为具体的java应用程序或基于jvm的容器,如本文的tomcat。Jmx提供默认的12345端口给java-gateway远程请求。 |
|
2.2)安装配置顺序:
描述 |
详细 |
备注 |
1 Zabbix-server端安装java gateway |
本文为rpm安装,不需额外下载安装包,直接执行命令: yum |
官网:https://www.zabbix.com/documentation/3.4/manual/concepts/java 为编译安装,而本文为rpm安装,不使用按其安装方式,配置方式可参考。 |
2配置java-gateway |
1)修改配置: vi 修改内容:
Pid文件可通过find / -name
systemctl |
本文修改后内容为:
|
3 修改zabbix-server配置 |
1) vi /etc/zabbix/zabbix_server.conf 2) JavaGateway=14.215.130.184 StartJavaPollers=5 3) 保存后重启zabbix-server systemctl restart zabbix-server |
JavaGateway=14.215.130.184 StartJavaPollers=5开启请求线程数,小于或等于java-gateway的START_POLLERS |
4 客户端配置 (如tomcat配置) |
1) 修改catalina.sh文件。 vi 2.1)非安全模式下监控,在Execute The Requested Command上添加 CATALINA_OPTS="$CATALINA_OPTS 保存后重启tomcat即可 2.2)安全模式下监控,单用户(系统仅一个用户)情况:(未验证) a)通过: find / -name management 根目录查找jdk安装路径中的management目录。 定位到该目录下:cd /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.171-2.6.13.0.el7_4.x86_64/jre/lib/management b)由于jdk默认不存在jmxremote.password文件,执行命令重命名:cp jmxremote.password.template jmxremote.password c) 创建自己的用户权限组: vi jmxremote.access 在 monitorRole readonly上添加自定义用户角色以及权限: invttest 其中invttest为自定义用户角色,readionly为用户操作权限(读权限)。 d)创建用户权限组用户 vi jmxremote.password 在最后添加用户角色及密码 invttest invt2018&Test) e)授权仅当前用户可读写操作jmxremote文件: chmod 600 jmxremote.* f) 修改catalina.sh文件。 vi 在Execute The Requested Command上添加 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password" 注意;如果多用户情况下使用该配置,则无法正常监控,会提示报错:如java.lang.SecurityException: Authentication 2.3)安全模式下监控,多用户(系统有多个用户),密码验证,非SSL: a)将单用户情况下的jmxremote.*复制到应用目录下(如tomcat目录下,随意放置),本文复制到tomcat的conf目录下 cp jmxremote.password cp jmxremote.access b)设置文件权限,仅当前用户可读写操作: chmod 600 jmxremote.* c)增加自定义用户权限,并增加密码: vi jmxremote.access 增加用户密码:web2018 在最后添加用户权限: invt readonly,保存 vi jmxremote.password 在最后添加用户密码;invt invttest2018,保存 如果使用默认的monitorRole或controlRole用户,则只在jmxremote.password中取消对应的用户注释,并修改密码即可。 d) 修改catalina.sh文件。 vi /home/web2018/iotdebug/bin/catalina.sh 在Execute The Requested Command上添加 CATALINA_OPTS="$CATALINA_OPTS 本配置采用绝对路径 f)重启tomcat,几分钟后,zabbix实现对jmx监控。如果报错:java.lang.SecurityException: Access denied! 则检查监控项Item中是否配置了用户和密码。本文由于主机导入的jmx模板未配置用户和密码报错。 解决办法(批量更新): a) b) 主机àTemplatesà选择要修改的关联模板à选择关联模板中的Itemsà勾选全选à批量更新 2.4)安全模式下监控,多用户(系统有多个用户)密码验证+SSL:(无有效SSL证书,无法验证) a)在上述基础上,增加SSL秘钥:本文使用java自带的keytool 生成秘钥库keystore,执行命令: keytool -genkey -alias tomcatsslkey -keyalg RSA -keystore /home/zabbix/mykey.keystore 其中tomcatsslkey为秘钥库别名, /home/zabbix/mykey.keystore为存储位置 b)提示输入密码并确认(本文密码invt2018): Enter keystore password: Re-enter new password: c)提示输入基本信息: What is your first and last name? 随便输入即可。 d)全部输入后,提示确认 Is CN=tomcat, OU=apache, O=apcahe, L=beijing, ST=cn, C=cn correct? [no]: 输入: y e)提示输入key password密码:如果与keystore password相同可直接回车。本文直接回车。生成后会有个Warning: 忽略 f)将生成的秘钥导出为公钥: keytool -export -alias tomcatsslkey -keystore /home/zabbix/mykey.keystore -rfc -file /home/zabbix/mypublickey.key 其中-file /home/zabbix/mypublickey.key为导出后的文件位置和名称,提示输入密码:invt2018 g) 将生成的公钥导入并生成信任证书(Truststore信任证书): keytool -import -alias tomcatsslkey -file /home/zabbix/mypublickey.key -keystore /home/zabbix/mytrustkey.keystore 提示输入密码并确认,可与keystore保持一致。本文保持一致。 至此,keystore、truststore、公钥证书都已生成完毕。查看/home/zabbix目录,生成了mykey.keystore h)配置tomcat, vi conf/server.xml 新增如下配置: <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/home/zabbix/mykey.keystore" keystorePass="invt2018" /> 浏览器输入https://14.215.130.184:8443确认不安全访问,访问成功则配置成功。 i) 修改catalina.sh文件。 vi /home/web2018/iotdebug/bin/catalina.sh 在Execute The Requested Command上添加 CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=14.215.130.184 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/home/web2018/iotdebug/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/home/web2018/iotdebug/conf/jmxremote.access -Dcom.sun.management.jmxremote.ssl=true -Djavax.net.ssl.keyStore=/home/zabbix/mykey.keystore -Djavax.net.ssl.keyStorePassword=invt2018 -Dcom.sun.management.jmxremote.ssl.need.client.auth=true -Djavax.net.ssl.trustStore=/home/zabbix/mytrustkey.keystore -Djavax.net.ssl.trustStorePassword=invt2018" 重启tomcat,但zabbix无法实现jmx监控,因为用keytool自签发的证书,CAS Client并不信任这个证书。并报错: error during JRMP connection establishment; nested exception is: |
1本文tomcat名称为iotdebug路径/home/web2018/iotdebug 2 3 Djava.rmi.server.hostname为tomcat所在的主机ip, -Dcom.sun.management.jmxremote.port=12345为提供远程监控端口号,必须为未被使用的,且防火墙开通 4 多tomcat监控好的方法是自动发现,笨方法可采用下面链接 https://www.cnblogs.com/owenma/p/6894639.html https://blog.csdn.net/Hu_wen/article/details/53587250?locationNum=14&fps=1 5 配置的jmxremote.access和jmxremote.password在整个服务器上有效(只需配置一次),因为所有的java应用均依赖于jdk。仅需要在java应用(如tomcat)配置相应的文件路径,jmx会自己查找 4) 设置权限: chmod 设置所有用户对/home/user有读权限 https://www.cnblogs.com/langke93/p/4089662.html 5) 如果jmxremote权限不限制为启动tomcat的用户所有,在修改catalina.sh文件后tomcat启动时会报错: Error: 配置参考:https://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html 6)SSL自定义参考: https://blog.csdn.net/shfqbluestone/article/details/21242323 https://www.cnblogs.com/Sunzz/p/8862338.html 或https://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html |
5 配置zabbix监控模板 |
1) 2) 3) |
Template |
报错:JMX agent
item "jmx["java.lang:type=Threading",ThreadCount]" on host
"Zabbix-server" failed: first network error, wait for 15 seconds
JMX
agent item
"jmx["java.lang:type=OperatingSystem",OpenFileDescriptorCount]"
on host "Zabbix-server" failed: first network error,
取消该模板关联,部分配置不支持导致?
1.2.12 mysql监控
https://blog.csdn.net/xiegh2014/article/details/72859982
1简介:
描述 |
详细 |
备注 |
|
ODBC监控对应zabbix页面中的Database Zabbix通过ODBC接口和配置驱动连接到数据库,可监控数据队列,使用统计等。Zabbix支持unixODBC(常用的开源ODBC API实现,linux系统自带安装包) |
|
|
|
|
2配置
步骤 |
详细 |
备注 |
安装unixODBC |
yum
|
Linux系统一般都自动安装可跳过 |
安装ODBC |
yum |
连接mysql的ODBC驱动 |
配置odbc |
1) 查看odbc安装信息:
结果为: unixODBC 2.3.1 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8 2) 修改odbcinst.ini中配置: vi /etc/odbcinst.ini 找到对应的mysql驱动信息: [MySQL] Description=ODBC for Driver=/usr/lib/libmyodbc5.so Setup=/usr/lib/libodbcmyS.so Driver64=/usr/lib64/libmyodbc5.so Setup64=/usr/lib64/libodbcmyS.so FileUsage=1 说明:[MySQL]中的mysql为数据库驱动名, Driver为驱动包位置 3) 查看/etc/odbc.ini,本文linux系统默认不存在该文件。 先创建: touch /etc/odbc.ini 修改 vi /etc/odbc.ini 添加内容: [test] Description=MySQL test Driver=MySQL Server=14.215.130.184 User=zabbix Password=zabbix2018 Port=3306 Database=zabbix 4) 执行命令: isql test 报错: [ISQL]ERROR: Could not SQLConnect 5)报错解决:原因为驱动包不存在,查看本系统已有驱动包; find / -name libmyodbc* 结果: /usr/lib64/libmyodbc8a.so /usr/lib64/libmyodbc8w.so
如果继续使用驱动名MYSQL,则修改/etc/odbcinst.ini中的Driver文件路径配置 或直接使用/etc/odbcinst.ini中配置了/usr/lib64/libmyodbc8a.so或/usr/lib64/libmyodbc8w.so的驱动名称MySQL ODBC 8.0 Unicode Driver和MySQL ODBC 8.0 ANSI Driver,本文使用MySQL ODBC 8.0 Unicode Driver。 6)再次修改vi /etc/odbc.ini [test] Description=MySQL test Driver=MySQL ODBC 8.0 Server=14.215.130.184 User=zabbix Password=zabbix2018 Port=3306 Database=zabbix 保存后,执行isql test命令,连接成功。可执行sql语句,如show tables;退出sql命令:quit; |
1)Mysql连接报错:远程连接可以,本地连接报错: ERROR https://segmentfault.com/q/1010000005657136 修改登录方式,增加主机 mysql 登录成功。原因:主机的host文件无localhost和127.0.0.1的映射或未配置'zabbix'@'localhost'权限 https://blog.csdn.net/ynnmnm/article/details/45154725 查看host文件: vi 添加映射关系 3) isql 命令报错: 原因分析参考: https://blog.csdn.net/okhelp/article/details/73770001 该文章提供了思路,原因驱动文件不存在。 vi /etc/odbcinst.ini 其他mysql驱动名称配置信息: [MySQL] Description=ODBC for MySQL Driver=/usr/lib/libmyodbc5.so Setup=/usr/lib/libodbcmyS.so Driver64=/usr/lib64/libmyodbc5.so Setup64=/usr/lib64/libodbcmyS.so FileUsage=1
[MySQL ODBC 8.0 Unicode Driver] Driver=/usr/lib64/libmyodbc8w.so UsageCount=1
[MySQL ODBC 8.0 ANSI Driver] Driver=/usr/lib64/libmyodbc8a.so UsageCount=1
|
配置监控项 |
1)Hostsà点击已添加的主机àTemplatesà选择Link new 没有数据,该默认模板需要自行提供脚本及其他配置,可参考网上(尝试也未能成功) 2)自定义监控项: 自定义监控项: Name: select count(1) from users Type:database Key: db.odbc.select[mysql-simple-check,test] Type Update 说明:test为上面/etc/odbc.ini定义的数据库连接名称,mysql-simple-check为识别字符(自定义) 更多参考https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/odbc_checks 实际并无太多价值 |
注意:mysql监控项貌似不行,每次执行mysql语句时报错 官网有类似bug信息https://support.zabbix.com/browse/ZBX-7665
https://support.zabbix.com/browse/ZBX-11573
|
|
|
|
报错信息;
37565:20180509:174256.293
Got signal [signal:11(SIGSEGV),reason:1,refaddr:0x60]. Crashing ...
37565:20180509:174256.293 ====== Fatal
information: ======
37565:20180509:174256.293 Program counter:
0x7f5fffec2377
37565:20180509:174256.293 === Registers: ===
37565:20180509:174256.293 r8 = 0 = 0 = 0
37565:20180509:174256.293 r9 = 10 = 16 = 16
37565:20180509:174256.293 r10 =
7fff4e751e20 =
140734509686304 =
96
37565:20180509:174256.294 === Backtrace: ===
37565:20180509:174256.294 27:
/usr/sbin/zabbix_server: poller #2 [got 1 values in 0.000650 sec, getting
values](zbx_log_fatal_info+0x13c) [0x563229e1d734]
37565:20180509:174256.294 26:
/usr/sbin/zabbix_server: poller #2 [got 1 values in 0.000650 sec, getting
values](+0xe7b49) [0x563229e1db49]
37565:20180509:174256.295 25:
/lib64/libpthread.so.0(+0xf5e0) [0x7f60119175e0]
37565:20180509:174256.295 24:
/usr/lib64/libmyodbc8w.so(+0x83377) [0x7f5fffec2377]
37565:20180509:174256.295 23:
/usr/lib64/libmyodbc8w.so(_Z22add_compiled_collationP12CHARSET_INFO+0x25)
[0x7f5fffec2d25]
37565:20180509:174256.295 22:
/usr/lib64/libmyodbc8w.so(_Z22init_compiled_charsetsi+0x15) [0x7f5ffff14cb5]
37565:20180509:174256.295 21:
/usr/lib64/libmyodbc8w.so(+0x827ac) [0x7f5fffec17ac]
37565:20180509:174256.295
14: /usr/lib64/libmyodbc8w.so(SQLAllocHandle+0x60) [0x7f5fffeacaf3]
37565:20180509:174256.295 13:
/lib64/libodbc.so.2(+0xd8dc) [0x7f60103468dc]
37565:20180509:174256.295 12:
/lib64/libodbc.so.2(SQLConnect+0x1a7) [0x7f6010348af7]
37565:20180509:174256.295 11:
/usr/sbin/zabbix_server: poller #2 [got 1 values in 0.000650 sec, getting
values](odbc_DBconnect+0x24d) [0x563229e75259]
37565:20180509:174256.295
3: /usr/sbin/zabbix_server: poller #2 [got 1 values in 0.000650 sec, getting
values](daemon_start+0x325) [0x563229e1ce7a]
37565:20180509:174256.295 2:
/usr/sbin/zabbix_server: poller #2 [got 1 values in 0.000650 sec, getting
values](main+0x312) [0x563229d75ea7]
37565:20180509:174256.295 1:
/lib64/libc.so.6(__libc_start_main+0xf5) [0x7f600e3aec05]
37565:20180509:174256.295 0:
/usr/sbin/zabbix_server: poller #2 [got 1 values in 0.000650 sec, getting
values](+0x34599) [0x563229d6a599]
37565:20180509:174256.295 === Memory map: ===
37565:20180509:174256.297
563229d36000-563229f3d000 r-xp 00000000 fd:00 204967485 /usr/sbin/zabbix_server_mysql
37565:20180509:174256.297
56322a13c000-56322a1a4000 r--p 00206000 fd:00 204967485 /usr/sbin/zabbix_server_mysql
37565:20180509:174256.297
56322a1a4000-56322a1ad000 rw-p 0026e000 fd:00 204967485 /usr/sbin/zabbix_server_mysql
37565:20180509:174256.297 56322a1ad000-56322a1b5000
rw-p 00000000 00:00 0
37565:20180509:174256.303 7f6012316000-7f6012317000
rw-p 00000000 00:00 0
37565:20180509:174256.303
7fff4e715000-7fff4e9f5000 rw-p 00000000 00:00 0 [stack]
37565:20180509:174256.303
7fff4e9fe000-7fff4ea00000 r-xp 00000000 00:00 0 [vdso]
37565:20180509:174256.303
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
37565:20180509:174256.303
================================
37565:20180509:174256.303 Please consider
attaching a disassembly listing to your bug report.
37565:20180509:174256.303 This listing can be
produced with, e.g., objdump -DSswx zabbix_server.
37565:20180509:174256.303
================================
37533:20180509:174256.306 One child process
died (PID:37565,exitcode/signal:1). Exiting ...