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情况下有效,简单用户参数中直接被忽略 灵活用户参数样例: 可定义任意满足*的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功能方式,如下; 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 |