原文为Suramya Shah在InfraCloud的博客上发表的客座文章
监控端点是系统可观察性的一个重要方面,用于诊断性能和可用性问题。在这篇文章中,我们将详细介绍如何使用Blackbox Exporter和Prometheus在Kubernetes中实现端点监控。
什么是Prometheus导出器?
Prometheus Exporter是一个翻译器,可以从非Prometheus系统中获取统计数据,并可以将统计数据转换为Prometheus可理解的指标,即Prometheus阐述格式。有许多Prometheus导出器用于从第三方系统导出现有的指标到Prometheus指标,其中一些是。
导出器名称 | 功能 |
---|---|
黑盒导出器 | 通过HTTP/S、DNS、TCP和ICMP探查端点 |
Redis出口器 | 连接到Redis实例,以Prometheus可读格式提供Redis指标。 |
节点输出器 | 为*NIX内核提供硬件和操作系统指标 |
Elasticsearch导出器 | 连接到Elasticsearch实例,以Prometheus可读格式提供各种Elasticsearch指标。 |
Kube-state指标导出器 | 附加代理,提供各种Kubernetes对象的指标,如pods、节点和部署。 |
其他导出器可以在导出器和集成文档页面找到。
什么是端点监控,为什么需要它?
在当前情况下,端点监控是指监控内部和外部端点(HTTP/S、DNS、TCP和ICMP)的各种参数,包括HTTP延迟、DNS查询延迟、SSL证书到期信息、TLS版本。
在Kubernetes系统中,不仅仅是外部端点需要被监控,内部端点也需要被监控延迟和其他参数。这些指标是基础设施的一个重要部分,以确保服务的连续性和符合一些安全认证。
白盒与黑盒监控
白盒监控是指对系统内部的监控,包括应用日志、处理程序的指标。另一方面,黑匣子监控包括从外部监控影响用户的行为,如服务器停机、页面不工作或网站性能下降。
什么是黑匣子导出器?
Blackbox Exporter用于探测HTTPS、HTTP、TCP、DNS和ICMP等端点。在你定义端点后,Blackbox Exporter会生成指标,可以使用Grafana等工具进行可视化。Blackbox Exporter最重要的功能之一是测量端点的响应时间。
下图显示了Blackbox Exporter监控一个端点的流程。
![Diagram shows Blackbox exporter flow](https://gitcode.net/csdn/skill_tree_img/-/raw/master/img/7bc49cb1d31e46248099a20c67e0352f.jpg)
这里是Blackbox Exporter配置中定义的一个默认模块。
模块。
http_2xx。
http:
fail_if_not_ssl: true
ip_protocol_fallback: false
方法。GET
no_follow_redirects: false
preferred_ip_protocol: ip4
valid_http_versions:
- HTTP/1.1
- HTTP/2.0
valid_status_codes:
- 200
- 204
prober: http
timeout:15s
上面的模块是http_2xx。它在Blackbox Exporter提供的HTTP Probe上工作。这里我们还添加了valid_status_codes,让探针对返回各种状态代码的端点返回成功。你可以相应地配置你的blackbox.yml,使探头根据你的配置返回成功/失败。其他配置参数可在下面找到。
参数 | 功能 |
---|---|
valid_status_codes: | 探针的状态代码列表,以便为你的应用程序返回成功。 |
方法。GET | 使用HTTP GET来访问端点 |
no_follow_redirects: false | 不跟随HTTP重定向 |
preferred_ip_protocol: ip4 | 使用IPv4协议 |
valid_http_versions | HTTP/1.1和HTTP/2.0都是有效的。 |
timeout:15s | 如果没有收到响应,15秒后超时 |
fail_if_not_ssl: true | 如果端点没有SSL安全,探测将失败。 |
你可以看一下这个example.yml中的详细例子,了解更多的情况。在Prometheus这边做了一些配置上的改变后,Blackbox Exporter就会发送与应用的配置