zabbix active模式

active模式适用场景

zabbix server端无法直连agent端,比如agent为内网机器,仅有内网ip,没有公网ip,但是内网机器能够访问server端

active模式相比于agent模式,是agent端通过自己对server端进行访问,获取server端对数据抓取的类型,然后自己向server端发送相关的数据。

active的配置文件示例

相比于agent端的配置文件设置,其配置文件主要变更在需要开启RefreshActiveChecksServerActive两个的值

如下有一份zabbix active模式下agent端的配置文件,可作参考

[root@RHEL6-WEB03-BSSWEB zabbix]# grep -v ^# zabbix_agentd.conf
UserParameter=tomcat.statuscode,sudo /etc/zabbix/monitorsmscode.sh
##自定义key,通过运行脚本获得
UserParameter=disk.free,sudo df -h | awk '/^\/dev\//{print $5}' | awk -F% '{print $1}' | sort -n | tail -1
##自定义key,通过运行命令直接获得
PidFile=/var/run/zabbix/zabbix_agentd.pid
##默认的pid文件路径
LogFile=/var/log/zabbix/zabbix_agentd.log
##默认的log文件路径
LogFileSize=0
##不限制log文件大小
EnableRemoteCommands=1
##开启远程执行zabbix server端的命令,适用于action中的自动恢复处理
Server=123.56.78.170
##zabbix server端的ip地址(agent模式)
ListenPort=10050
##zabbix agent监控的port
ListenIP=0.0.0.0
##监听本机所有ip
ServerActive=123.56.78.170
##zabbix server端的ip地址(active模式,active模式下必须要开启)
Hostname=10.68.32.59
##主机名,务必与在web界面中的hostname一致,并非一定为ip
RefreshActiveChecks=120
##agent在active模式获取server端取值类型的刷新时间,稳定后可设定为最大值
Timeout=30
##agent发送监控项的超时时间,有些自定义key可能需要运行很长时间才能获取值,超时时间过短会出现数据发送失败
Include=/etc/zabbix/zabbix_agentd.d/
UnsafeUserParameters=1
##开启自定义key功能

active模式在server端web界面中item的设定

1.单个建立active模式item

其相比于agent端中的item设定,需要将type变更为active选项

2.批量建立active模式的item

比如需要使用zabbix中常用的linux os templates,不太可能直接纯手动建立,我们可以通过复制的方式将item进行active模式的转化。

如上图,先新建一个templates,然后进入linux os template中的item,选择所有,然后选择copy selected to,然后在新的界面中选择templates,选中我们新建的templates即可。

新建的templates中即有了linux os templates中的所有item,然后同样操作,选择所有item,然后选择mass update,在下一步中,将所有type变更为active模式即可

此即将有所有item导入为active模式下的item

但是在此并不推荐此种做法,因为在linux os templates中,除了item之外,还会有其它的设置,比如Discovery,screeen等,单纯的copy并不能将原先中所有参数设定变更为active模式中的参数。

在此推荐另外一种手法:

进入点击linux os templates进入templates,然后在下面选择clone,通过clone将原来的templates中的参数完成复制到另外一个templates中,然后再使用mass update将其中的type由agent模式变更为active模式

自定义key

1.自定义key的格式

UserParameter=,

前面是键值,后面是命令。如下例:

UserParameter=nginx.active,curl -s http://localhost/status | awk '/^Active/{print $3}'

2.自定义key中的参数传递与转义

在自定义key中的,一般在格式规整的查询中,需要多个查询的时候,可以直接使用变量进行传递即可以

如下

[root@iZ25b31bdp0Z zabbix]# cat /proc/meminfo
MemTotal: 3620188 kB
MemFree: 588228 kB
MemAvailable: 1549608 kB
Buffers: 275780 kB
Cached: 509336 kB
SwapCached: 0 kB
Active: 2174808 kB
Inactive: 226312 kB
Active(anon): 1709644 kB
Inactive(anon): 159404 kB
Active(file): 465164 kB
Inactive(file): 66908 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 408 kB
Writeback: 0 kB
AnonPages: 1616100 kB
Mapped: 111140 kB
Shmem: 253044 kB
Slab: 552816 kB
SReclaimable: 513752 kB
SUnreclaim: 39064 kB
KernelStack: 4112 kB
PageTables: 30980 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1810092 kB
Committed_AS: 4482560 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7944 kB
VmallocChunk: 34359730291 kB
HardwareCorrupted: 0 kB
AnonHugePages: 483328 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 198656 kB
DirectMap2M: 3995648 kB

在/proc/meminfo中,需要查询多个值,但是又不想多次重复书写key值

可以使用如下

UserParameter=memory.useage[*],/usr/bin/awk '/^$1/{print $$2}' /proc/meminfo

然后在server端的web界面中,设置自定义key时,在key中将所需要查询的具体值,直接书写在userparameter中的[]中即可

如果要获取MemFree的值

在web中key的书写应该为 memory.useage[MemFree]

在上述举例中,useage后面的参数,被传递给后面的\(1位置 ,而后面的\)$2,是因为awk语法中需要print \(2所致,为了转义,使用\)$2,否则awk无法执行

自定义key中的参数传递最多支持$1~$9,所有参数均写定在UserParameter后面的[]中,使用,进行分隔

多个参数传递的简单举例,如下

统计一个文件中有多少行被匹配?
UserParameter=wc[*],grep -c "$2" $1
如下方法将会返回文件中出现指定字符的行数
wc[/etc/passwd,root]
wc[/etc/services,zabbix]

3.自定义key的测试

在自定义key设置完成之后,需要检测自定义key获取的值正确与否,可以使用zabbix_get命令进行获取

3.1 agent模式

使用方法:在server端直接获取

zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>

实例如下

[root@iZ25i0aaqmzZ ~]# zabbix_get -s 114.55.95.79  -k "mysql.status[Active]"
159

3.2 active模式

active模式因为server端无法直接get到agent端的信息,需要agent端自行将数据发送至server端,故zabbix_get是无法获取到值的

可以使用zabbix_agentd命令进行自我测试

 zabbix_agentd [-Vhp] [-R <runtime option>] [-c <config-file>] [-t <item key>]

实际举例:

[root@RHEL6-WEB03-BSSWEB ~]# zabbix_agentd -t tomcat.statuscode
tomcat.statuscode [t|1]

4.自定义key not supported

在自定义key设置ok后,经常会在web界面中显示自定义key not supported

总结大概可能有以下几种可能:

4.1 agent端发送数据超时

此处可以更改zabbix.conf中的Timeout时间,将其值修改大一些。

4.2 数据类型不一致

agent端发送的数据类型与server端web界面里面的数据类型不一致,如本来agent端发送的是text格式,但是定义的却是Numeric格式,此处也会出现not supported

4.3 zabbix用户没有权限执行自定义key中的命令或者脚本

如上述举例中有一个自定义key

UserParameter=tomcat.statuscode,sudo /etc/zabbix/monitorsmscode.sh

在此key中,因为执行该命令的用户为zabbix,而zabbix并没有sudo权限,故需要对/etc/sudoer中进行修改。相关修改如下:

Defaults    !requiretty
## 不需要使用tty终端即能执行sudo命令,action中使用自动恢复设定时必须开启
root ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD:ALL
## 开启zabbix sudo权限

在此类权限问题中,在active模式中对自定义key的值获取进行自行检测获取时,可以直接su至zabbix用户

[root@RHEL6-WEB03-BSSWEB ~]# su - zabbix -s /bin/bash -c "zabbix_agentd -t tomcat.statuscode"

因为zabbix的shell为nologin,故使用su入的时候使用bash,从而有了交互界面。

如果zabbix用户有权限问题,在此处即无法获取到值。

4.4 not supported的其它解决

如果以上几种方式都无法解决的话,可以通过将zabbix agent的debug日志打开。通过查看其中的日志,具体寻找问题所在。

如上述zabbix没有sudo用户权限的时候,在/var/log/zabbix/zabbix_agentd.log中可以查看到如此一样的记录

129440:20170727:145313.987 EXECUTE_STR() command:'sudo /etc/zabbix/monitorsmscode.sh' len:53 cmd_result:'sudo: no tty present'
129440:20170727:145313.987 for key [tomcat.statuscode] received value [sudo: no tty present and no askpass program specified]
129440:20170727:145313.987 In process_value() key:'10.68.32.59:tomcat.statuscode' value:'sudo: no tty present and no askpass program specified'

其中可以看到是因为zabbix没有sudo权限所致,无法获取到该自定义key的值。

打开zabbix debug日志收集,需要在/etc/zabbix/zabbix.conf中将DebugLevel的值设定为4

zabbix active模式以及自定义key not Supported的解决的更多相关文章

  1. Zabbix 自定义Key

    系统:Linux Centos 7.4 x64.Windos 2008 x64 服务:Zabbix 3.0.16 说明1:自定义Key 主要通过自定义 脚本 或者 命令 来实现自定义监控类型,需要在a ...

  2. zabbix主动模式,自定义Key监控 zabbix采集器

    主动模式不是只能用模板提供的标准检测器方式 zabbix-agent两种运行方式即主动模式和被动模式.默认被动模式. 两种模式是相对 客户端 角度来说的. 被动模式:等待server来取数据,可以使用 ...

  3. zabbix自定义key

    zabbix自定义key 1.修改客户端配置文件 #vi /opt/zabbix/etc/zabbix_agentd.conf Include=/opt/zabbix/etc/zabbix_agent ...

  4. Zabbix常用key和自定义key的讲解

    zabbix中常用到的几个key: 1.监控端口的:net.tcp.port[,3306],可以在服务器端对被监控端测试. /usr/local/zabbix/bin/ -s192.168.8.120 ...

  5. zabbix使用自定义key进行监控

    我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机 先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为p ...

  6. zabbix 通过自定义key完成网卡监控

    创建执行脚本: # cat /etc/zabbix/monitor_scripts/network.sh #!/bin/bash #set -x usage() { echo "Useage ...

  7. zabbix 自定义 key (转)

    转自:http://www.cnblogs.com/miclesvic/p/6164303.html 1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/ ...

  8. zabbix 自定义Key (六)

    1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/usr/local/zabbix_agent/etc/zabbix_agentd.conf) ### ...

  9. 菩提圣心诀---zabbix自定义key监控oracle连接状态(python脚本)

    目的:此次实验目的是为了zabbix服务端能够实时监控某服务器上oracle实例能否正常连接 环境:1.zabbix_server 2.zabbix_agent(含有oracle) 主要知识点: 1. ...

随机推荐

  1. 每天一个Linux常用命令 cp命令

    Linux cp命令主要用于复制文件或目录 -a:此选项通常在复制目录时使用,它保留链接.文件属性,并复制目录下的所有内容.其作用等于dpR参数组合. -d:复制时保留链接.这里所说的链接相当于Win ...

  2. Codeforces 1156C 尺取法 / 二分

    题意:给你一个数组,问里面最多能匹配出多少对,满足abs(a[i] - a[j]) >= k; 思路:首先肯定要排序. 思路1(尺取法):看了dreamoon的代码明白的.我们可以寻找一个最长的 ...

  3. Java 注解处理器

    在Android开发中常用到一些第三方注解框架来简化代码.加快开发,如ButterKnife,androidannotations. 虽然常会用到,但没研究过其生成代码的原理,趁年后不忙,又温习了注解 ...

  4. 发布后台接口报错:could not load file or assembly 'mysql.data,' version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d

    本地调试正常,但是服务器上面一直报错:could not load file or assembly 'mysql.data,' version=6.7.4.0, Culture=neutral, P ...

  5. vue 表单校验报错 "Error: please transfer a valid prop path to form item!"

    vue 表单校验报错 "Error: please transfer a valid prop path to form item!" 原因:prop的内容和rules中定义的名称 ...

  6. 在IntelliJ IDEA中新建Maven项目

    在IntelliJ IDEA中新建Maven项目,选择“File->New->Project”,创建一个简单项目,不选择模板,如下图所示: 2 选择“Maven”,不需要使用内置结构(模板 ...

  7. go变量和声明

    go变量和声明 这将是美好的开始和结束,通过写下x = 4,我们查看变量,可以说声明了一个变量并赋值,但是很不幸,go语言变量声明和赋值比这更复杂.通过学习一些简单的示例开始学习变量声明和赋值.然后在 ...

  8. Linux服务器的16个监控命令

    想不想知道你的服务器到底在干什么?那么你要知道本文介绍的这些基本命令.一旦你熟悉掌握了这些命令,就为成为专业的 Linux系统管理员打下了基础. 你可以通过图形化用户界面(GUI)程序来获取这些外壳命 ...

  9. 使用PaxScript为Delphi应用增加对脚本的支持

    通过使用PaxScript可以为Delphi应用增加对脚本的支持. PaxScript支持paxC,paxBasic,paxPascle,paxJavaScript(对ECMA-262做了扩展) 四种 ...

  10. linux python3 venv 虚拟环境报错 [-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 2.

    解决办法: 先创建没有pip的虚拟环境,然后启动虚拟环境后,再安装pip 办法一: 亲测失败了... python3 -m venv --without-pip py36env 办法二 sudo ap ...