探针返回零

时间:2019-02-19 19:50:01

标签: prometheus prometheus-blackbox-exporter

我一直在努力理解为什么某些HTTP端点为“ probe_success”和“ probe_http_status_code”返回“ 0”,同时完全能够通过curl获得“有效”响应。

示例:curl -s "localhost:9115/probe?target=http://linux.org&module=http_2xx" | grep -v '^#'

输出:

probe_dns_lookup_time_seconds 0.003712821
probe_duration_seconds 0.212811871
probe_failed_due_to_regex 0
probe_http_content_length 0
probe_http_duration_seconds{phase="connect"} 0.002263513
probe_http_duration_seconds{phase="processing"} 0.196389853
probe_http_duration_seconds{phase="resolve"} 0.006723945
probe_http_duration_seconds{phase="tls"} 0
probe_http_duration_seconds{phase="transfer"} 2.6001e-05
probe_http_redirects 1
probe_http_ssl 0
probe_http_status_code 0
probe_http_version 0
probe_ip_protocol 4
probe_success 0

这是职位定义:

  - job_name: 'blackbox'
    scrape_interval: 30s
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets:
        - http://linux.org
    relabel_configs:
      - source_labels: [__address__]
        regex: '(.*)(:80)?'
        target_label: __param_target
      - source_labels: [__param_target]
        regex: '(.*)'
        target_label: instance
        replacement: '${1}'
      - source_labels: []
        regex: '.*'
        target_label: __address__
        replacement: 'blackbox:9115'

和模块定义:

modules:
  http_2xx:
    prober: http
    timeout: 15s
    http:
      valid_status_codes: []
      method: GET

3 个答案:

答案 0 :(得分:1)

就我而言,我要在valid_http_versions部分中添加HTTP/1.0条目。我的终点是Odoo13。@ Rafa建议的&debug=true为我提供了实现这一点的信息。

答案 1 :(得分:0)

如果您附加&debug=true,则会得到有关该错误的一些详细信息。

我的猜测是blackbox_exporter无法连接,因为它默认为ipv6连接,并且无法正常工作。

在我的情况(同样的问题)中,调试输出显示

level=error msg="Resolving target address" ip_protocol=ip6
level=error msg="Resolution with IP protocol failed (fallback_ip_protocol is false): err"
level=error msg="Error resolving address" err="address apple.com: no suitable address found"
level=error msg="Probe failed" duration_seconds=0.003648031

来自blackbox documentation

  # The IP protocol of the HTTP probe (ip4, ip6).
  [ preferred_ip_protocol: <string> | default = "ip6" ]
  [ ip_protocol_fallback: <boolean> | default = true ]

因此,如果您修改模块配置,它应该可以工作:

modules:
  http_2xx:
    prober: http
    timeout: 15s
    http:
      valid_status_codes: []
      method: GET
      preferred_ip_protocol: "ip4" # <---- !

答案 2 :(得分:0)

在我的情况下,有:“ x509:由未知授权机构签名的证书”

由http部分下的固定

 tls_config:
    insecure_skip_verify: false