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. LeetCode Array Easy 26.Remove Duplicates from Sorted Array 解答及疑惑

    Description Given a sorted array nums, remove the duplicates in-place such that each element appear ...

  2. MyEclipse中android 项目如何解决第三方jar无法关联源码的问题( The JAR of this class file belongs to container 'Android Private Libraries' which does not allow modifications to source attachments on its entries.)

    若我们要为第三方jar(android-support-v4.jar)关联源码通常的做法是 右键项目 单击菜单Properties 单击菜单 Java Build Path 单击 Libraries ...

  3. k8s容器-运维管理篇

    二. 运维和管理 维护参考网址 https://jimmysong.io/kubernetes-handbook/practice/install-kubernetes-on-centos.html ...

  4. 2018-2019 ACM-ICPC, Asia Seoul Regional Contest K TV Show Game 2-sat

    题目传送门 题意: 有n个人,k盏灯,灯有红蓝两种颜色,每个人都猜了三种灯的颜色,问如何安排灯的颜色,使得每个人猜的灯至少有两个是对的. 思路: 很容易想到2-sat,但是显然枚举每个人猜对的情况是不 ...

  5. mybatis group by查询返回map类型

    故事的发生是这样的. . . . . . . 一天 我发现我们的页面显示了这样的汇总统计数据,看起来体验还不错哦-- 然后,我发现代码是这样滴:分开每个状态分别去查询数量. 额e,可是为嘛不使用简单便 ...

  6. git安装和使用方法url

    1.如何在ubuntu下使用Github? https://blog.csdn.net/tina_ttl/article/details/51326684 https://segmentfault.c ...

  7. translation

    *过渡写到本体上(谁做动画写谁身上) transition transition-property  规定应用过渡的CSS属性的名称. transition-duration  定义过渡效果花费的时间 ...

  8. MySQL - 两种存储引擎 (MyISAM PK InnoDB) + MVCC

    总结 1.两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务.两者最大的区别就是InnoDB支持事务,和行锁. 2.InnoDB采用MVCC(Multi-Version Concur ...

  9. git——commit成功后,GitHub方格不变绿

    一通百度该设置的都设置了,还是不好使 发现有提示一栏 pull request的东西  在网上查貌似是因为两个分支内容不同 提示是否合并,还查到了不变绿可能的原因. Contributions未被Gi ...

  10. docker镜像下载加速(5)

    镜像下载加速 由于 Docker Hub 的服务器在国外,下载镜像会比较慢.幸好 DaoCloud 为我们提供了免费的国内镜像服务. 下面介绍如果使用镜像. 在 daocloud.io 免费注册一个用 ...