有没有一种方法可以使用prometheus监控kubernetes中的tls证书



我想使用Prometheus在Kubernetes中监控我的tls证书,并在grafana中获得一个仪表板。我想监控它们的过期情况,并希望在30天后证书将过期时收到警报。我做了很多研究,终于发现https://github.com/enix/x509-exporter.我该如何使用它?是否有其他有效的方法来监控证书的到期?

免责声明:我还没有尝试过这个x509出口商。只是根据我的理解提出建议

README文件似乎有点不对劲。你需要做的第一件事就是创建一个github问题,不用担心,我在这里提出了一个问题。

根据我的理解,我列出了一些步骤,并参考了用法部分。

  • 使用他们的官方docker映像并将其部署为k8s上的部署
  • 检查示例k8s-yaml文件以创建部署。还要注意的是,部署yaml应该装载一个存储所有k8s证书的主机目录
  • 根据文件,证书通常位于/etc/kubernetes/pki
  • 部署yaml应该包含一个命令,在该命令中,您可以将导出器指向证书所在的目录以及其他必要的选项。像这样
command: ["x509-exporter"]
args: ["-d", "/etc/kubernetes/pki", "-p", "8091", "--debug"]

注意:这里我在8091端口上以调试模式运行导出程序,记得暴露这个端口。

  • 在prometheus配置中,添加x509导出器端点作为目标,以获取度量,并通过在Grafana面板中创建图形来绘制这些度量

另一种方法是使用helm chart安装x509导出器:https://hub.helm.sh/charts/enix/x509-exporter

请参阅此处的文档https://github.com/enix/helm-charts/tree/master/charts/x509-exporter.

您可能还发现以下prometheus警报规则很有用(基于x509导出器指标(:

check-kubernetes-certificate.rules.yml:

groups:
- name: check-kubernetes-certificate-expiration.rules
rules:
- alert: KubernetesCertificateExpiration
expr: floor((x509_cert_not_after - time()) / 86400) < 90
for: 5m
labels:
severity: warning
annotations:
summary: 'Certificate expiration on `{{ $labels.nb_cluster }}`'
description: 'Certificate `{{ $labels.subject_CN }}` will expire in {{ $value }} days on `{{ $labels.nb_cluster }}`'
- alert: KubernetesCertificateExpirationCritical
expr: floor((x509_cert_not_after - time()) / 86400) < 10
for: 5m
labels:
severity: critical
annotations:
summary: 'Certificate expiration on `{{ $labels.nb_cluster }}`'
description: 'Certificate `{{ $labels.subject_CN }}` will expire in {{ $value }} days on `{{ $labels.nb_cluster }}`'
- alert: KubeletCertificateEmbedded
expr: x509_cert_not_after{filename="kubelet.conf", embedded_kind="user"}
for: 5m
labels:
severity: warning
annotations:
summary: '{{ $labels.instance }}: Embedded certificate in {{ $labels.filename }}'
description: '{{ $labels.nb_cluster }} has kubelet {{ $labels.subject_CN }} running with an embedded certificate in {{ $labels.filepath }}'

官方prometheus/blackbox_exporter已经有ssl证书到期信息。

Name: "probe_ssl_earliest_cert_expiry",
Help: "Returns earliest SSL cert expiry date",

所以你只需要:

  1. 将blackbox_exporter和Probe规则设置到要监视的域
    您可以查看我的项目kehao95/helm prometheus exporter,通过helm chart安装blackbox_exporter
  2. 用于监视证书过期的配置规则

您可以这样配置prometheusRule:(假设您使用的是prometheus运算符(

rules: 
- alert: TLS certificate expiring
expr: (probe_ssl_earliest_cert_expiry - time())/86400 < 45
labels:
severity: warning
- alert: TLS certificate expiring
expr: (probe_ssl_earliest_cert_expiry - time())/86400 < 30
labels:
severity: critical

最新更新