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 的监控项
    • 注意获得的相应内容:
    1. {
    2. "name" : "YQ2VAY-",
    3. "cluster_name" : "elasticsearch",
    4. "cluster_uuid" : "kH4CYqh5QfqgeTsjh2F9zg",
    5. "version" : {
    6. "number" : "6.1.3",
    7. "build_hash" : "af51318",
    8. "build_date" : "2018-01-26T18:22:55.523Z",
    9. "build_snapshot" : false,
    10. "lucene_version" : "7.1.0",
    11. "minimum_index_compatibility_version" : "5.0.0"
    12. "tagline" : "You know, for search"
    13. }
    • 现在可以使用JSONPath 预处理步骤获取版本号信息: $.version.number
    示例 2

    发送一个简单POST请求,从其他服务抓取数据。以Elasticsearch为例:

    • 创建一个POST监控项使用此URL: http://localhost:9200/str/values/_search?scroll=10s
    • 配置以下的POST请求体获取处理器负载(1分钟平均值/核心)
    • 得到响应:
    1. {
    2. "_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
    3. "took": 18,
    4. "timed_out": false,
    5. "_shards": {
    6. "total": 5,
    7. "successful": 5,
    8. "skipped": 0,
    9. "failed": 0
    10. },
    11. "hits": {
    12. "total": 1,
    13. "max_score": 1.0,
    14. "hits": [{
    15. "_type": "values",
    16. "_id": "dqX9VWEBV6sEKSMyk6sw",
    17. "_source": {
    18. "itemid": 28275,
    19. "value": "0.138750",
    20. "clock": 1517566136,
    21. "ns": 25388713,
    22. "ttl": 604800
    23. }
    24. }]
    25. }
    26. }
    • 现在可以使用JSONPath 预处理步骤获取监控项的值: $.hits.hits[0]._source.value
    示例 3

    检查Zabbix API是否可用,可以用 这个接口

    • 监控项配置:

    16 HTTP 代理 - 图3

    注意使用POST方法传输JSON数据,设定请求头并仅要求检索头信息:

    • 配置监控项值的预处理功能,使用正则表达式方法获取HTTP响应代码:

    • 最新数据 中检查最新获取的数据:

    16 HTTP 代理 - 图5

    示例 4

    通过连接到 Openweathermap 检索天气信息公共服务。

    • 配置主要监控项将大量数据收集到一个简单JSON对象:

    注意在query的字段中使用宏。参考 来了解如何填写它们。

    一个简单JSON对象会被返回给HTTPS agent:

    • 配置一个简单的从属监控项获取湿度数据:

    16 HTTP 代理 - 图7

    其他天气指标,例如 “温度” 可以以相同方式添加。

    • 使用JSONPath来配置简单的从属监控项的值预处理步骤:

    • 最新数据 中检查天气数据的结果:

    16 HTTP 代理 - 图9

    示例 5

    链接Nginx状态页面,批量获取它的指标。

    • 根据 配置NGINX。

    • 配置一个主要监控项批量收集数据:

    简单的Nginx状态也输出如下:

    1. Active connections: 1 Active connections:
    2. server accepts handled requests
    3. 52 52 52
    4. Reading: 0 Writing: 1 Waiting: 0

    下一个任务是任务是配置从属监控项提取数据。

    • 配置简单从属监控项名以采集每秒请求数数据:

    16 HTTP 代理 - 图11

    • 对所有数据都配置好了从属监控项后,在 最新数据 中,可以查看到来自stub模块的完整结果