16 HTTP 代理
概述
HTTP监控项检查由Zabbix服务器执行。但是,当主机由Zabbix proxy监控时,HTTP项检查由proxy执行。
HTTP 监控项检查不需要任何 agent 运行在被监控的主机上。
HTTP agent同时支持HTTP和HTTPS。Zabbix可以选择跟随重定向(参考下文 Follow redirects 的选项)。最大重定向数硬编码为10(用cURL的参数 CURLOPT_MAXREDIRS)
了解何时使用HTTPS协议,另请参阅
Zabbix server/proxy必须首先配置cURL(libcurl)支持。
配置
配置HTTP监控项:
- 进入: 配置 → 主机
- 在主机的那行点击 监控项
- 点击 创建监控项
- 在表格中输入监控项的参数
所有标有红色星号的为必填字段。
需要的HTTP监控项特定信息的字段是:
如果 HTTP代理 字段留空,环境变量中设定的其他HTTP代理相关设置将被应用
对于HTTP访问 - 为Zabbix server 进程用户设定 http_proxy
环境变量。如:http_proxy=http://proxy_ip:proxy_port
。
对与 HTTPS访问 - 设定环境变量 HTTPS_PROXY
。如:HTTPS_PROXY=http://proxy_ip:proxy_port
。 更多参考信息请运行shell 命令: # man curl 。
示例
示例 1
发送一个简单GET请求,以从其他服务获取数据。案例为Elasticsearch:
- 创建一个从URL
localhost:9200/?pretty
GET 的监控项 - 注意获得的相应内容:
{
"name" : "YQ2VAY-",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "kH4CYqh5QfqgeTsjh2F9zg",
"version" : {
"number" : "6.1.3",
"build_hash" : "af51318",
"build_date" : "2018-01-26T18:22:55.523Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_index_compatibility_version" : "5.0.0"
"tagline" : "You know, for search"
}
- 现在可以使用JSONPath 预处理步骤获取版本号信息:
$.version.number
示例 2
发送一个简单POST请求,从其他服务抓取数据。以Elasticsearch为例:
- 创建一个POST监控项使用此URL:
http://localhost:9200/str/values/_search?scroll=10s
- 配置以下的POST请求体获取处理器负载(1分钟平均值/核心)
- 得到响应:
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
"took": 18,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0,
"hits": [{
"_type": "values",
"_id": "dqX9VWEBV6sEKSMyk6sw",
"_source": {
"itemid": 28275,
"value": "0.138750",
"clock": 1517566136,
"ns": 25388713,
"ttl": 604800
}
}]
}
}
- 现在可以使用JSONPath 预处理步骤获取监控项的值:
$.hits.hits[0]._source.value
示例 3
检查Zabbix API是否可用,可以用 这个接口
- 监控项配置:
注意使用POST方法传输JSON数据,设定请求头并仅要求检索头信息:
- 配置监控项值的预处理功能,使用正则表达式方法获取HTTP响应代码:
- 在 最新数据 中检查最新获取的数据:
示例 4
通过连接到 Openweathermap 检索天气信息公共服务。
- 配置主要监控项将大量数据收集到一个简单JSON对象:
注意在query的字段中使用宏。参考 来了解如何填写它们。
一个简单JSON对象会被返回给HTTPS agent:
- 配置一个简单的从属监控项获取湿度数据:
其他天气指标,例如 “温度” 可以以相同方式添加。
- 使用JSONPath来配置简单的从属监控项的值预处理步骤:
- 在 最新数据 中检查天气数据的结果:
示例 5
链接Nginx状态页面,批量获取它的指标。
根据 配置NGINX。
配置一个主要监控项批量收集数据:
简单的Nginx状态也输出如下:
Active connections: 1 Active connections:
server accepts handled requests
52 52 52
Reading: 0 Writing: 1 Waiting: 0
下一个任务是任务是配置从属监控项提取数据。
- 配置简单从属监控项名以采集每秒请求数数据:
- 对所有数据都配置好了从属监控项后,在 最新数据 中,可以查看到来自stub模块的完整结果