K8S - 使用 Prometheus 检查证书验证
K8S - Check certificate validation with Prometheus
我需要找到 K8S 集群的证书验证,例如使用警报管理器通知
证书即将过期并发送适当的通知。
我找到了这个 repo 但不是我不确定如何配置它,目标是什么以及如何实现它?
https://github.com/ribbybibby/ssl_exporter
基于黑盒导出器
https://github.com/prometheus/blackbox_exporter
- job_name: "ssl"
metrics_path: /probe
static_configs:
- targets:
- 127.0.0.1
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9219 # SSL exporter.
我想查看当前的K8S集群(部署了Prometheus),看证书是否有效。
我应该在 insidetarget 中放置什么才能使其工作?
我需要在集群中公开一些东西吗?
更新
这是证书在系统中的位置
tls:
mode: SIMPLE
privateKey: /etc/istio/bide-tls/tls.key
serverCertificate: /etc/istio/bide-tls/tls.crt
我的场景是:
Prometheus 和 ssl_exporter 在同一个集群中,他们需要检查的证书也在同一个集群中。 (见上面的配置)
What should I put there inside the target to make it work?
我认为 "Targets" section of the readme 很清楚:它包含您希望监视器报告的端点:
static_configs:
- targets:
- kubernetes.default.svc.cluster.local:443
- gitlab.com:443
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
# rewrite to contact the SSL exporter
replacement: 127.0.0.1:9219
Do I need to expose something in cluster ?
取决于您是否要报告 内部 证书,或者 ssl_exporter
是否可以到达您想要的端点。例如,在上面的代码片段中,我使用了 KubeDNS 名称 kubernetes.default.svc.cluster.local
并假设 ssl_exporter
是 运行 作为集群中的一个 Pod。如果这不适用于您,您可能希望将该端点更改为 k8s.my-cluster-dns.example.com:6443
或您的 kubernetes API 正在侦听的任何您的 kubectl
可以到达的端点。
然后,以同样的方式,如果 prometheus 和您的 ssl_exporter 都在集群内 运行,那么您可以将 replacement:
更改为 Service
IP由您的 ssl_exporter Pods 支持的地址。如果 prometheus 在集群外而 ssl_monitor 在集群内,那么你需要创建一个 Service
of type: NodePort
这样你就可以将你的 prometheus 指向一个(或全部?)节点 IP 地址和 ssl_exporter 正在侦听的 NodePort
唯一会使用文字 127.0.0.1:9219
的情况是 prometheus 和 ssl_exporter 在同一台机器或同一 Pod 中 运行,因为这是唯一的方式127.0.0.1 从普罗米修斯的角度来看是有意义的
我需要找到 K8S 集群的证书验证,例如使用警报管理器通知 证书即将过期并发送适当的通知。
我找到了这个 repo 但不是我不确定如何配置它,目标是什么以及如何实现它?
https://github.com/ribbybibby/ssl_exporter
基于黑盒导出器
https://github.com/prometheus/blackbox_exporter
- job_name: "ssl"
metrics_path: /probe
static_configs:
- targets:
- 127.0.0.1
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9219 # SSL exporter.
我想查看当前的K8S集群(部署了Prometheus),看证书是否有效。 我应该在 insidetarget 中放置什么才能使其工作?
我需要在集群中公开一些东西吗?
更新 这是证书在系统中的位置
tls:
mode: SIMPLE
privateKey: /etc/istio/bide-tls/tls.key
serverCertificate: /etc/istio/bide-tls/tls.crt
我的场景是:
Prometheus 和 ssl_exporter 在同一个集群中,他们需要检查的证书也在同一个集群中。 (见上面的配置)
What should I put there inside the target to make it work?
我认为 "Targets" section of the readme 很清楚:它包含您希望监视器报告的端点:
static_configs:
- targets:
- kubernetes.default.svc.cluster.local:443
- gitlab.com:443
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
# rewrite to contact the SSL exporter
replacement: 127.0.0.1:9219
Do I need to expose something in cluster ?
取决于您是否要报告 内部 证书,或者 ssl_exporter
是否可以到达您想要的端点。例如,在上面的代码片段中,我使用了 KubeDNS 名称 kubernetes.default.svc.cluster.local
并假设 ssl_exporter
是 运行 作为集群中的一个 Pod。如果这不适用于您,您可能希望将该端点更改为 k8s.my-cluster-dns.example.com:6443
或您的 kubernetes API 正在侦听的任何您的 kubectl
可以到达的端点。
然后,以同样的方式,如果 prometheus 和您的 ssl_exporter 都在集群内 运行,那么您可以将 replacement:
更改为 Service
IP由您的 ssl_exporter Pods 支持的地址。如果 prometheus 在集群外而 ssl_monitor 在集群内,那么你需要创建一个 Service
of type: NodePort
这样你就可以将你的 prometheus 指向一个(或全部?)节点 IP 地址和 ssl_exporter 正在侦听的 NodePort
唯一会使用文字 127.0.0.1:9219
的情况是 prometheus 和 ssl_exporter 在同一台机器或同一 Pod 中 运行,因为这是唯一的方式127.0.0.1 从普罗米修斯的角度来看是有意义的