skill——zbbix(低级别发现 与 zabbix 自定义监控项)

低级别发现Low-level discovery(LLD)前端

在对主机的监控中,可能出现这样的状况,例如对某主机网卡 eth0 进行监控,能够指定须要监控的网卡是 eth0,而将网卡做为一个通用监控项时,根据主机操做系统的不一样,网卡的名称也不彻底相同,有些操做系统的网卡名称是 eth 开头的,而有些网卡名称是 em、enps0、ens 开头的,遇到这种状况,若是分别针对不一样的网卡名设置不一样的监控项,那就太繁琐了,此时使用 zabbix 的低级发现功能就能够解决这个问题mysql

在 Zabbix 中,支持几种现成的类型的数据项发现,分别是:web

1.文件系统发现
sql

2.网络接口发现服务器

3.SNMP OID 发现网络

4.CPU 核和状态ide

下面是 zabbix 自带的 LLD keyoop

1.vfs.fs.discovery              #适用于zabbix agent监控方式spa

2.snmp.discovery             #SNMP agent监控方式操作系统

3.net.if.discovery              #适用于zabbix agent监控方式

4.system.cpu.discovery    #适用于zabbix agent监控方式

能够用 zabbix-get 来查看 key 获取的数据,对于 snmp 不能经过 zabbix-get 来验证,只能在 web 页面中进行配置使用

下面是一个 zabbix-get 的例子:

blob.png

其中,{#IFNAME} 就是一个宏变量,会返回系统中全部网卡的名字。宏变量能够定义在主机、模板以及全局,宏变量都是大写的。使用宏变量,可使 zabbix 功能更增强大

在自动发现中使用zabbix自带的宏,固定的语法格式为:{#MACRO}

zabbix还支持用户自定义的宏,这些自定义的宏也有特定的语法:{$MACRO}

在 LLD 中,经常使用的内置宏有 {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE} 等

{#FSNAME}:表示文件系统名称

{#FSTYPE}:表示文件系统类型

{#IFNAME}:表示网卡名称

{#SNMPINDEX}:会获取 OID 中最后一个值

{#SNMPVALUE}:从返回的值中过滤掉 loopback 接口

宏的级别有多种:其优先级由高到低顺序以下:

1.主机级别的宏优先级最高

2.第一级模式中的宏

3.第二季模式中的宏

4.全局级别的宏

所以,zabbix 查找宏的顺序为:首选查找主机级别的宏,若是在主机级别不存在宏设置,那么 zabbix 就会去模板中看是否设置有宏;若是模板中也没有,将会查找使用全局的宏;如果在各级别都没找到宏,那么将不使用宏

zabbix 自定义监控项

有时候当咱们监控的项目在 zabbix 预约义的key中没有定义时,这时候咱们能够经过编写 zabbix 的用户参数的方法来监控咱们要求的项目 item。形象一点说 zabbix 代理端配置文件中的 User parameters 就至关于经过脚本获取要监控的值,而后把相关的脚本或者命令写入到配置文件中的 User parameter 中,而后 zabbix server 读取配置文件中的返回值经过处理前端的方式返回给用户

一、zabbix agent 端开启 Userparameter 指令

UnsafeUserParameters=1

启用 agent 端自定义 item 功能,设置此参数为1后,就可使用 UserParameter 指令了

UserParameter用于自定义itme。语法格式为:

UserParameter=<key>,<command>

其中:

UserParameter为关键字

key为用户自定义key名字能够随便起

<command>为咱们要运行的命令或者脚本。

一个简单的例子:

UserParameter=ping,echo 1

代理程序程序将会永远的返回 1 当咱们在服务器端添加 item 的 key 为 ping 的时候

稍微复杂的例子:

UserParameter=mysql.ping, /usr/local/mysql/bin/mysqladmin ping|grep -c alive

当咱们执行 mysqladmin -uroot ping 命令的时候若是 mysq 存活要返回 mysqld is alive,咱们经过 grep–c 来计算 mysqld is alive 的个数,若是 mysql 存活着,则个数为 1,若是不存活很,明显 mysqld is alive 的个数为 0,经过这种方法咱们能够来判断 mysql 的存活状态。

当咱们在服务器端添加 item 的 key 为 mysql.ping 时候,对于 zabbix 代理程序,若是 mysql 存活,则状态将返回 1,不然,状态将返回 0

二、让 key 接受参数

让 key 也接受参数的方法使 item 添加时更具有了灵活性

例如,系统预约义 key :

vm.memory.size[<mode>]

其中的 mode 模式就是用户要接受的参数,当咱们填写为 free 时则返回的为内存的剩余大小,若是咱们填入的为 userd 时返回的是内存已经使用的大小

相关语法以下:

UserParameter=key[*],command

其中,Key 的值在主机系统中必须是惟一的,其中 * 表明命令中接受的参数,command 表示命令,也就是客户端系统中可执行的命令

例如:

UserParameter=ping[*].echo $1

若是执行ping[0],那么将一直返回 '0',若是执行ping[aaa],将一直返回 'aaa'

相关文章
相关标签/搜索