zabbix
1为单个用户关联机器
1.1用户、用户组、host、hostgroup对应关系
名字 | 关系 | 命名规则 |
用户(User) | 用户属于用户组 | xuan.dong |
用户组(UserGroup) | 用户组和机器组关联 | User xuan.dong |
机器(Host) | 机器属于机器组 | xx.xx.xx |
机器组(Hostgroup) | 机器组可以被摸个用户组关联 | User_xuan.dong |
1.2创建步骤
1.2.1创建用户组
1.2.2创建用户
1.2.3创建主机组
1.2.4为用户组添加主机组的权限
2.LLD
2.1什么是zabbix_LLD
2.1.1:破冰
zabbix_LLD (低等级自动发现):名字虽然听着很低级,但是用处却很大
例如:我们要检测电脑的每个硬盘的使用情况,我没呢应该怎么做呢,创建1个UserParameter吗?可以的,但是我们要是有20个硬盘呢?我们还要检测磁盘io呢?这要创建少?我们10台机器呢?要创建的UserParameter也太多了吧,这是时候,就体现出来了zabbix_LLD的作用.
2.1.2.官网介绍:https://www.zabbix.com/documentation/4.0/zh/manual/discovery/low_level_discovery
自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项。此外,可以配置Zabbix根据定期执行发现后的得到实际结果,来移除不需要的监控。
用户可以自己定义发现类型,只要它们遵循特定的JSON协议。(没错,要用json,如果你不懂json,那么请跟着我一起用python生成json)
2.2:监控redis的 Memory
2.2.1:可以先将机器添加到 Configuration à hosts,既然连了解LLD了,这个肯定都会了,看好偶,我什么模板都没有加的(那俩个item不用管,我忘了删而已),当然你也可以加需要的模板,我这里是方便查看~~~
2.2.2:创建discover
先点进来
然后创建
点完Add你就可以看到这个界面了,Item prototypes我们暂时先不设置,我们先去客户端让redis.memory这个key可以返回我们需要的json值
2.3 客户端返回json数据
2.3.1 UserParameter的设置 (设置的时候要保证zabbix_agent的主配置文件已经Include了这个文件)
root@client-1:~# cat /etc/zabbix/zabbix_agentd.conf.d/userparameter-redis_memory.conf
UserParameter=redis.memory,/usr/bin/python /tmp/redis_parameter.py # 使用python执行脚本
2.3.2 接下来就是python的设置啦,没事,如果不会python可以直接复制我的,如果你会,请不要喷我,毕竟我的Python很菜鸡
root@client-1:~# cat /tmp/redis_parameter.py
#!/usr/bin/python
import os
import json
str1=os.popen("redis-cli info | grep -A 10 '# Memory' | sed -n '2,$p' | awk -F ':' '{print $1}'").read()
spl1=str1.split('\n')
ret={"data":[]}
for n in spl1:
NAME={"{#NAME}":n}
#ret["data"]["{#NAME}"] = n
ret["data"].append(NAME)
ret["data"].pop()
ret = json.dumps(ret)
print(ret)
2.3.3 zabbix_server端使用zabbix_get 看看能不能获取到想要的json字符串
[root@www ~]#zabbix_get -s 172.17.0.2 -k redis.memory
{"data": [{"{#NAME}": "used_memory"}, {"{#NAME}": "used_memory_human"}, {"{#NAME}": "used_memory_rss"}, {"{#NAME}": "used_memory_rss_human"}, {"{#NAME}": "used_memory_peak"}, {"{#NAME}": "used_memory_peak_human"}, {"{#NAME}": "used_memory_peak_perc"}, {"{#NAME}": "used_memory_overhead"}, {"{#NAME}": "used_memory_startup"}, {"{#NAME}": "used_memory_dataset"}]}
看来我的脚本写的还行,已经可以获取到了,但是你们可能会获取不到
- zabbix客户端设置后没有重启
- zabbix客户端主配置文件的server字段没有指向zabbix server服务器的ip地址
- 我们继续设置web界面的zabbix
2.4.1 添加Item prototypes
点进去Item prototypes
创建Item prototypes
点完Add你就可以看到这个界面了,我们接下来就去设置
2.4.2 客户端再添加返回值(最后一步啦)
还是这个文件,我新增了一行
root@client-1:~# cat /etc/zabbix/zabbix_agentd.conf.d/userparameter-redis_memory.conf
UserParameter=redis.memory,/usr/bin/python /tmp/redis_parameter.py
UserParameter=redis.info[*],redis-cli info | grep -A 10 '# Memory' | sed -n '2,$p' | awk -F ":" '($$1=="$1"){print $$2}'
2.5查看
所以,这就解决刚开始说的问题,不管多少台机器,我们可以创建一个模板的discovery,这样就可以把这些主机全部加进去,就不用一个一个的创建了~~~~~~~