Prometheus监控http应用
Tags: httpPrometheus监控
简介
HTTP(Hypertext Transfer Protocol)是一种基于C/S模型的应用层协议,常用于 Web 数据通信。HTTP相关的应用在互联网世界有着最广泛的存在,不管是Web网站还是API,都离不开HTTP的支持。对于运维人员而言,在工作中不可避免需要维护HTTP的业务,而掌握监控能力则是解决问题的一项重要手段。
本文将介绍如何通过Prometheus结合Blackbox exporter,实现对于HTTP应用的监控。
Blackbox Exporter
Blackbox Exporter是一个用于监控网络服务的开源软件,它由Prometheus社区开发和维护。Blackbox Exporter通过发送请求到目标服务并检查其响应来监控网络服务的可用性和性能指标。
它可以监控多种类型的网络服务,包括HTTP/HTTPS、TCP、DNS、ICMP等,并提供了一系列的配置选项和参数,可以对探测的方式和结果进行更加精细的控制和管理。
Blackbox Exporter的使用方式与其他Exporter不太一样,在其配置文件需要定义好检查的模块,如HTTP检测模块。Prometheus将目标和模块名作为URL的参数传递给Blackbox Exporter,再由其负责生成对应的探测请求到目标端点,并根据返回的请求状态生成对应的时间序列指标,最终传递给Prometheus。
这种基于探针的检测方式非常有用,比如可以在多个地区发起检测,来了解公司对外提供服务的Web站点在各个区域的访问是否正常。目前也有不少商业机构在提供类似的专业服务,如听云、博睿、监控宝等。当然 ,你也可以通过Blackbox Exporter来搭建自己的检测平台。
安装配置
Blackbox Exporter支持不同平台的安装 ,包括Linux、Windows、Max OS等,本文我们使用Linux版本的安装文件来演示。
1. 安装exporter
下载二进制文件
1 2 | $ cd /opt/ $ wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.19.0/blackbox_exporter-0.19.0.linux-amd64.tar.g |
解压安装包,并拷贝执行命令到bin目录
1 2 | $ tar -xvf blackbox_exporter-0.19.0.linux-amd64.tar.gz $ sudo cp blackbox_exporter-0.19.0.linux-amd64/blackbox_exporter /usr/local/bin/ |
查看版本
1 2 3 4 5 6 | $ blackbox_exporter --version blackbox_exporter, version 0.19.0 (branch: HEAD, revision: 5d575b88eb12c65720862e8ad2c5890ba33d1ed0) build user: root@2b0258d5a55a build date: 20210510-12:56:44 go version: go1.16.4 platform: linux/amd64 |
2. 配置exporter
Blackbox Exporter需要在配置文件中定义模块,每个模块有特定的名称和探针,如用于检查HTTP服务的http探针、用于检查TCP连接的TCP探针等。
此处我们以HTTP模块为例,来演示配置的操作。(其他更多配置,可参见Prometheus的示例文件 :https://github.com/prometheus/blackbox_exporter/blob/master/example.yml。)
创建 blackbox.yml配置文件,包含以下内容:
1 2 3 4 5 6 7 8 | modules: http_2xx: prober: http timeout: 5s http: valid_status_codes: [200] valid_http_versions: ["HTTP/1.1", "HTTP/2"] method: GET |
注释:此处我们定义了一个模块名为http_2xx,使用http探针,探针检测超过5秒会被当成超时;valid_status_codes定义返回的响应码;valid_http_versions定义探针的http版本;method则定义了请求模式,可支持GET和POST。
3. 启动exporter
启动exporter,并加载指定配置文件。
1 | $ sudo blackbox_exporter --config.file=blackbox.yml & |
配置Prometheus
我们在Prometheus上面配置一个示例任务,以百度和163网站为例,演示对于网站的HTTP检测 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | - job_name: 'blackbox_http' metrics_path: /probe params: module: [http_2xx] static_configs: - targets: - http://www.badiu.com - http://www.163.com relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ #blackbox exporter 所在节点 replacement: 192.168.214.108:9115 |
注:这里我们定义了一个名为blackbox_http的job,并通过标签重写功能,将目标地址改为192.168.214.108:9115,也即是Blackbox Exporter的地址端口。(关于标签重写的介绍,可以查看前面的Prometheus教程)
配置完成后,等Prometheus加载新配置后,可看到相关的Targets已生成。
在任务生效后,可以看到与该任务相关的探测指标。
Grafana展示
- 选择"Create"-"Import"
- 填写Dashboard模板ID号,点击Load
- 选择对应的Prometheus 数据源,点击import
- 导入完成后,即可在新的Dashboard查看数据指标。
告警规则
Grafana的展示让我们可以了解网站的运行情况,而配置告警则可以及时发现故障,并作出响应。
在告警规则的配置上,需要使用Blackbox Exporter返回的指标数据。以下是一些部分常用的指标,它们可以帮助你及时发现HTTP应用的问题:
1 2 3 4 | probe_http_duration_seconds #HTTP请求持续时间,以秒为单位。 probe_http_redirects #请求过程中发生的重定向次数。 probe_http_ssl #该指标表示HTTPS的连接状态,如果连接是加密的,则该值为1,否则为0。 probe_http_status_code #请求的HTTP响应状态码。 |
下面是一条告警规则的示例:
1 2 3 4 5 6 7 8 9 | groups: - name: http alert rules: - alert: Http健康检查失败 for: 1m expr: probe_http_status_code > 399 annotations: description: 'Http健康检查失败,当前值 : {{ $value }}' limit: 返回状态码异常 |
注: 这里我们定义了一条关于返回码的告警规则,如果返回的状态码非2xx或3xx,例如404、503等,则会触发该规则。
更多的告警规则,大家可以根据业务需求自行定制,并通过Alertmanager进行警报管理。
结语
本文介绍了Prometheus与Blackbox Exporter结合获取HTTP应用信息,并与Grafana等结合实现展示和告警功能,使我们可以获得有关HTTP的实时性能数据,并及时发现和解决问题。