夜莺-Nightingale
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

http_response 插件监控 HTTP 地址的连通性和响应时间以及证书有效期

简介

http_response 类似 Prometheus 生态的 blackbox_exporter,是一个黑盒监控插件,用于监控 HTTP 地址的连通性和响应时间以及证书有效期。插件配置文件在 conf/input.http_response/http_response.toml

配置

下面是一个简单配置样例,配置了 4 个要监控的地址:

[mappings]
"http://localhost:5678" = { "app" = "foo" }
"http://localhost:5679" = { "app" = "bar" }

[[instances]]
targets = [
    "http://localhost:5678",
    "http://localhost:5679",
    "https://www.baidu.com",
    "https://flashcat.cloud",
]

核心就是配置这个 targets 字段,是个数组,可以配置多个被监控地址。categraf 会根据 scheme 来决定是 http 还是 https 请求,如果是 https 则会自动检查证书有效期。

像上例,我们看到 www.baidu.com 和 flashcat.cloud 这样的地址,是很容易知道这是哪个域名的,但是看到 localhost:5678 这样的地址,就不知道是哪个服务了,所以我们可以在 mappings 字段里配置一下,这样在监控数据里就会有一个 app 标签,方便区分。最后生成的数据如下:

http_response metrics 指标

从上图可以看到,前面两个地址都有 app 标签,后面两个地址没有。里边还有个 region="ulric" 的标签可以忽略,这是我在 categraf 全局配置文件 config.toml 中配置的全局标签,所有的监控数据都会附带上这个标签。

关键指标

http_response 插件会采集如下指标,在指标视图中可以看到:

http_response metrics 指标说明

cdn 相关的指标是商业版本中的拨测功能采集的,开源版本中不会采集。其中,用于告警的指标是 http_response_result_code 只要这个指标是 0 就是正常的,如果这个指标非 0,就是异常的,不同的值代表不同的含义:

Success          = 0
ConnectionFailed = 1
Timeout          = 2
DNSError         = 3
AddressError     = 4
BodyMismatch     = 5
CodeMismatch     = 6

http_response_cert_expire_timestamp 是证书过期的时间戳,http_response_cert_expire_timestamp - time() 表示证书还有多久过期,单位是秒。

仪表盘

在模板中心搜索 http_response 就可以找到相关的集成:

http_response集成

点击之后可以看到里边的仪表盘,可以直接查看,也可以把仪表盘导入自己业务组下,然后就可以随意调整了。仪表盘的效果如下:

http_response仪表盘

告警规则

还是在刚才的模板中心找到 http_response 集成,里边有现成的告警规则,导入自己的业务组下,然后修改成自己的告警接收组即可。

http_response告警规则

插件其他配置

http_response.toml 中除了 mappings 和 targets,还有其他的配置项,每个配置项都有详细的注释。关键的几个配置如下:

  • labels: 给所有 targets 附加的标签
  • interval_times: 采集频率的倍数。instance 最终的采集频率是 interval_times * global_interval
  • http_proxy: 代理配置
  • interface: HTTP 请求走哪块网卡
  • method: HTTP 请求方法,默认 GET
  • response_timeout: HTTP 请求超时时间
  • follow_redirects: 是否跟随重定向
  • username: HTTP Basic Auth 用户名
  • password: HTTP Basic Auth 密码
  • headers: HTTP 请求头,是个数组结构,必须是偶数,因为其内容是一个 Key,然后一个 Value,然后再一个 Key 再一个 Value,依次类推
  • body: HTTP 请求体,比如 POST 请求的 body
  • expect_response_substring: 期望的响应内容,如果响应内容不包含这个字符串,http_response_result_code 就会设置为 5
  • expect_response_status_codes: 期望的响应状态码,如果响应状态码不在这个列表里,http_response_result_code 就会设置为 6
  • use_tls: 是否使用 TLS,后面那些 TLS 相关配置只有在 use_tls 为 true 时才会生效
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat