我正在监控一个显示几百项状态的网页。该页面如下所示: { “arrisId”: “a000098”, “状态”: “运行”, “开始时间”: “2018-05-10T08:02:19.563Z”},{ “arrisId”: “a000101”, “状态”:“跑“ ”开始时间“: ”2018-05-10T08:02:19.892Z“},{ ”arrisId“: ”a000107“, ”状态“: ”运行“, ”开始时间“:” 2018-05-10T08:02: 28.556Z“},...
我想要做的是当其中一件事“未运行”时触发,但我想只显示不工作的项目而不是整个页面。希望有道理。我可以使用web.page.regexp并发送一条消息,表明某些内容未运行,但是如果我使用web.page.get,是否有办法配置触发器以显示未运行和前面的25个左右的字符那? 我希望这个问题有道理。
答案 0 :(得分:0)
您最好的做法是使用Low Level Discovery。
您的LLD规则将运行一个脚本来提取您的主状态页面,然后解析它并使用这些字段根据"项目原型创建您的项目"你定义。
项目原型本身也需要一个脚本来获取各自的信息(除非您愿意在测试版中使用Zabbix)
我使用here中的模拟json完成了一个简单的设置:
LLD脚本:将解析模拟json并将其转换为符合Zabbix LLD的格式:
import requests
import json
jsonSource = "https://jsonplaceholder.typicode.com/users"
lld = {}
data = []
lld['data'] = data
session = requests.Session()
response = session.get(jsonSource)
for jsonObject in response.json():
data.append ( {
'{#NAME}': jsonObject['name'],
'{#ID}': jsonObject['id'],
'{#URL}': jsonSource + '/' + str(jsonObject['id'])
} )
print json.dumps(lld)
项目GET脚本:获取特定项目的特定字段(将使用Zabbix 4.0中的http代理项目过时):
import requests
import json
import sys, argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', required=True, metavar='User ID')
parser.add_argument('-f', required=True, metavar='\"Requested JSON Field\"')
args = parser.parse_args()
jsonSource = "https://jsonplaceholder.typicode.com/users/" + args.i
session = requests.Session()
response = session.get(jsonSource)
print (response.json()[args.f])
命令行用法示例:
$ jsonLLD.py
{"data": [{"{#ID}": 1, "{#URL}": "https://jsonplaceholder.typicode.com/users/1", "{#NAME}": "Leanne Graham"}, {"{#ID}": 2, "{#URL}": "https://jsonplaceholder.typicode.com/users/2", "{#NAME}": "Ervin Howell"},
[cut]
$ jsonGet.py -i 10 -f phone
024-648-3804
$ jsonGet.py -i 10 -f name
Clementina DuBuque
然后你必须将它设置为Zabbix:
system.run[/usr/bin/jsonLLD.py]
(请注意路径!){#NAME} telephone number
,项目键system.run[/usr/bin/jsonGet.py -i {#ID} -f phone]
)在您的情况下,我将Zabbix服务器本身用作主机,并在其/ usr / bin中安装脚本。 观看Zabbix Agent的日志以查看发现和项目收集过程:
1972:20180519:121849.052 Executing command '/usr/bin/jsonGet.py -i 1 -f phone'
1971:20180519:121850.054 Executing command '/usr/bin/jsonGet.py -i 2 -f phone'
1974:20180519:121851.055 Executing command '/usr/bin/jsonGet.py -i 3 -f phone'
1974:20180519:121852.073 Executing command '/usr/bin/jsonGet.py -i 4 -f phone'
1974:20180519:121853.076 Executing command '/usr/bin/jsonGet.py -i 5 -f phone'
1973:20180519:121854.077 Executing command '/usr/bin/jsonGet.py -i 6 -f phone'
1972:20180519:121855.079 Executing command '/usr/bin/jsonGet.py -i 7 -f phone'
[cut]