zabbix系列之七——安装后配置二Userparameters

Posted cslj2013

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix系列之七——安装后配置二Userparameters相关的知识,希望对你有一定的参考价值。

1User parameters(用户自定义参数)

1.1配置

描述

详细

备注

简介

1执行zabbix中未预定义的agent check时使用

 

配置

1)    zabbix agent的配置文件中增加UserParameter参数,并编写接收数据命令行格式如下:UserParameter=<key>,<command>

2)    配置好后重启agent

3)    配置监控项item,item中的key对应UserParameter中的key(用于引用要执行的命令command)

4)    Command命令在agent端执行,在item处理前可返回最大512KB数据,但保存到msyql中最大为64KB

1)说明:key用于区分item(唯一性)

/bin/sh 作为unix操作系统下的解释器

2)简单用户参数样例:

a)UserParameter=ping,echo 1

定义的ping(作为key)返回常量1

b)UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive

如果mysql服务器在线则返回1,否则返回0

c)灵活的用户参数

UserParameter=key[*],command

key[*]即key可以为[ ]中的参数,参数在配置item时给出。

zabbix分析item key中[]内的参数,并依次替代命令中$1,…$9部分。

$0替换为原始命令。位置引用将被解释(无论是”还是’引用)。

通过双$标记使用位置引用如’{print $$2}’,其中$$2将在执行命令时自动转为$2。

注意$位置引用仅在flexible user parameters情况下有效,简单用户参数中直接被忽略

灵活用户参数样例:
UserParameter=ping[*],echo $1

可定义任意满足*的key,item中的key可以如ping[0],ping[aaa],并返回常量0,aaa

UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive

可用于监控mysql性能, item中的key可以如:mysql.ping[zabbix,our_password]

UserParameter=wc[*],grep -c "$2" $1

可用于统计文件行数,item中的key可以如:wc[/etc/passwd,root]或

wc[/etc/services,zabbix]

命令结果

命令的返回值与标准错误一起按照标准输出。

在标准错误输出的情况下,文本(字符、日志或文本信息类型)监控项将被支持。

 

 

 

1.2扩展zabbix代理

监控mysql实现

步骤

详细

备注

1

编写脚本或命令行检索需要的参数,如

mysqladmin -uroot status | cut -f4 -d":" | cut -f1 -d"S"

查询sql查询总数

 

2

1)将命令添加到zabbix_agentd.conf

UserParameter=mysql.questions,mysqladmin -uroot status | cut -f4 -d":" | cut -f1 -d"S"

mysql.questions 是一个唯一的标识符。Item中的Key对应选择该标识

2)测试参数;

zabbix_agentd -t mysql.questions

即调用mysql.questions对应的脚本命令

本文实际:

UserParameter=mysql.questions,mysql -u zabbix -p zabbix2018 -h 14.215.130.184 status | cut -f4 -d":" | cut -f1 -d"S"

不输入密码报错,不输入h无法本地登录(可能未设置本地localhost登录)

3

1)重启zabbix agent,代理将重新加载配置文件

可用zabbix_get测试获取值:

zabbix_get -s 127.0.0.1 -p 10050 -k mysql.questions

如果zabbix_get未安装,执行命令安装:

yum install zabbix-get

https://www.zabbix.com/documentation/3.4/zh/manual/concepts/get

本文实际:

zabbix_get -s 14.215.130.184 -p 10050 -k mysql.questions

 

4

添加监控项item:

Name: mysql questions num

Key:mysql.questions

Type: zabbix agent(或动态agent)

注意,设置正确的返回值类型,否则zabbix将不接收

 

2Loadable modules可加载模块

仅针对Unix平台实现可加载模块的支持。

2.1概述

描述

详细

备注

功能

提供了一种关于Zabbix性能扩展的选项

相比其他扩展Zabbix功能方式,如下;
1)user parameters(代理模式下,即上面的用户自定义参数)

2)external checks(无代理模式下)

3) system.run[]  的zabbix agent监控项

3个方法都可以,但存在一个缺点即fork() (zabbix必须在每次处理用户指标时分配一个新进程,对性能不利)。

可加载模块既能提供扩展zabbix agent/server/proxy的方法,同时不牺牲性能

更最重要的优势是使用和共享Zabbix模块的开发能力。

 

 

 

 

 

 

2.2模块API

Zabbix模块API目前有六个功能,一个为强制,其他5个可选。

描述

详细

备注

强制接口

zbx_module_api_version()

模块API的版本,返回一个常数

 

可选接口

1) int zbx_module_init(void)//模块初始化

成功返回ZBX_MODULE_OK,否则返回ZBX_MODULE_FAIL,且zabbix不会启动

2) ZBX_METRIC int zbx_module_item_list(void)//模块支持的监控项列表, 每个监控项都是在ZBX_METRIC结构中定义,列表由ZBX_METRIC终止,”key”字段为NULL

3) int zbx_module_item_timeout(int timeout)//超时时间

4) ZBX_HISTORY_WRITE_CBS zbx_module_history_write_cbs(void)

//历史数据导出函数,回调函数作为ZBX_HISTORY_WRITE_CBS结构的字段提供,如果不感兴趣可字段可为NULL

5) int zbx_module_uninit(void) //反初始化释放资源,卸载时使用

 

 

2.2.1定义监控项

描述

详细

备注

每个监控项都在ZBX_METRIC结构中定义

typedef struct

{

         char          *key;

         unsigned flags;

         int             (*function)();

         char          *test_param;

}

ZBX_METRIC;

key为监控项key(如” dummy.random”), 标志是CF_HAVEPARAMS或0(取决于监控项是否接受参数),function是实现该项目的C函数(例如,“zbx_module_dummy_random” ),test_param是使用“-p”标志启动Zabbix代理时使用的参数列表(例如,“1,1000”,可以为NULL)。

实例

1)示例定义如下所示:

static ZBX_METRIC keys[] =

{

         { "dummy.random", CF_HAVEPARAMS, zbx_module_dummy_random, "1,1000" },

         { NULL }

}

2)实现一个监控项的每个函数应该接受两个指针参数,第一个是AGENT_REQUEST类型,第二个是AGENT_RESULT类型的参数:

intzbx_module_dummy_random(AGENT_REQUEST *request, AGENT_RESULT *result)

{

         ...

         SET_UI64_RESULT(result, from + rand() % (to - from + 1));

         return SYSINFO_RET_OK;

}

 

如果监控项的值成功获取,这些函数应返回SYSINFO_RET_OK。否则,它们应该返回SYSINFO_RET_FAIL。有关如何从AGENT_REQUEST获取信息以及如何在AGENT_RESULT中设置信息的详细信息,请参阅下面的示例“dummy”模块。

 

 

 

2.2.2提供历史记录导出回调(暂未使用)

描述

详细

备注

可以指定按类型导出历史数据的函数:Numeric(float),Numeric(unsigned),Character,Text和Log:

typedef struct

{

void (*history_float_cb)(const ZBX_HISTORY_FLOAT *history, int history_num);

         void (*history_integer_cb)(const ZBX_HISTORY_INTEGER *history, int history_num);

         void (*history_string_cb)(const ZBX_HISTORY_STRING *history, int history_num);

         void (*history_text_cb)(const ZBX_HISTORY_TEXT *history, int history_num);

         void (*history_log_cb)(const ZBX_HISTORY_LOG *history, int history_num);

}

ZBX_HISTORY_WRITE_CBS;

https://www.zabbix.com/documentation/3.4/zh/manual/config/items/loadablemodules

 

实例

1)示例定义如下所示:

static ZBX_METRIC keys[] =

{

         { "dummy.random", CF_HAVEPARAMS, zbx_module_dummy_random, "1,1000" },

         { NULL }

}

2)实现一个监控项的每个函数应该接受两个指针参数,第一个是AGENT_REQUEST类型,第二个是AGENT_RESULT类型的参数:

intzbx_module_dummy_random(AGENT_REQUEST *request, AGENT_RESULT *result)

{

         ...

         SET_UI64_RESULT(result, from + rand() % (to - from + 1));

         return SYSINFO_RET_OK;

}

 

如果监控项的值成功获取,这些函数应返回SYSINFO_RET_OK。否则,它们应该返回SYSINFO_RET_FAIL。有关如何从AGENT_REQUEST获取信息以及如何在AGENT_RESULT中设置信息的详细信息,请参阅下面的示例“dummy”模块。

 

 

 

 

3Mass update

批量更新

步骤

详细

步骤

1

在item列表中,勾选第一行的勾选框(为全选)。

或勾选要修改的item项

https://www.zabbix.com/documentation/3.4/zh/manual/config/items/itemupdate

 

2

点击列表下面的Mass update

 

3

勾选要更新的属性的复选框:

 

 

4

输入新的属性值,点击update

注意:

1)      Replace applications 将从任何现有应用程序中删除该监控项,并将其替换为该字段中指定的监控项(勾选选择)。

2)      Add new or existing applications 允许从现有的应用程序中指定其它应用程序,或者为监控项输入全新的应用程序。

4Value mapping(值映射)

描述

详细

备注·

值映射

以人更容易理解的方式去显示结果。

如一个监控项的返回结果为0(表示不可用)或1(表示可用)

对应的映射如下:

‘0’à’not available’

‘1’à’available’

即当结果返回0时,实际展示的结果为not available

值映射可用于numeric和charater类型的监控项信息

配置

Administrationàgeneralàselect”value mapping” (即右边的下拉选项)àcreate value map(新建)à输入名称(唯一)和mappingà点击Add

 

使用

1) 配置监控项item时,列表中有show value下拉选项,可选择适合的值映射项

2) 选择后,可在monitoringàlatest data查看显示结果

如zabbix agent的 agent ping监控项,无值映射显示为1,有值映射显示为up(1)即上线

 

 

 

 

 

5application(应用)

实际没太大作用,只是将监控项展示在一个组下

描述

详细

备注·

应用术语

1)用于逻辑群组的监控项分组

如mysql 服务器可拥有关于mysql 服务器的所有监控项(mysql可用性,硬盘空间,处理负载等)

2) 用于分组web场景

如将监控项Total memory配置为mysql应用,则其监控项在latest data中显示在mysql名称列表下

配置

1) 创建新的应用,

Configurationàhostsà靠近主机旁的applicationà点击create applicationà输入名称nameàadd

2)配置item监控项时,可勾选该Item配置列表中的applications选项,或直接在配置列表项中的new application直接输入名称,提交后会自动创建新的application

 

 

6Queue(队列)

描述

详细

备注·

术语

 队列显示等待更新的监控项(,只是数据的逻辑显示,实际上zabbix中并没有队列机制。

只有刷新次数的监控才会显示在队列中

 

配置

无需配置,zabbix运行后直接在web页面可见

Administratoràqueueà右边下拉选择项选择”overview”

 

列表说明

 

1)      绿色代表正常

2)      如果发现有不正常情况(非0),可切换右侧下拉选项à选择detailsà列表显示有问题的监控项

3)      如果有大量延迟,可能agent挂掉

 

队列监控项

特殊的内部监控项zabbix[queue,<from>,<to>]可监控队列状况,返回延迟的items数目

更多信息参考:https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/internal

 

7value cache(值缓存)

描述

详细

备注·

术语

1) 为使触发器表达式、计算/统计监控项、宏定义的计算更快速,引入了值缓存

2) 这种内存缓存可用于访问历史数据而不是通过sql访问数据库获取。仅当历史数据不存在时才从数据库查询并更新缓存。

3) 通过在zabbix_server.conf文件中配置ValueCacheSize参数开启值缓存

监控项zabbix[vcache,buffer,<mode>] 和 zabbix[vcache,cache,<parameter>]

可以监控值缓存,更多信息参考

https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/internal

 

 

 



以上是关于zabbix系列之七——安装后配置二Userparameters的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix系列二:Zabbix的web页面配置

Zabbix系列二:Zabbix的web页面配置

zabbix系列之八——安装agent监控windows

zabbix系列之五——安装后配置一

Zabbix之七---Zabbix实现Nginx故障自治愈

zabbix系列之九——安装后配置四web监控