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

exdqitrt  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(3)|浏览(122)

我想使用Prometheus在Kubernetes中监控我的tls证书,并在grafana中获取 Jmeter 板。我想监控它们的到期情况,并希望在证书将在30天内到期时收到警报。我做了很多研究,终于找到了https://github.com/enix/x509-exporter。我该如何使用它?有没有其他有效的方法来监察证书的有效期?

r1zk6ea1

r1zk6ea11#

  • 免责声明:*我没有尝试过这个x509-exporter。只是根据我的理解提出建议。

README文件似乎有点不对劲。你需要做的第一件事是创建一个github问题,不用担心我提出了一个here
我根据我的理解列出了下面的步骤,并参考了用法部分。

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

字符串

  • 注意:*这里我在8091端口上以调试模式运行exporter,记得要公开这个端口。
  • 在prometheus配置中,添加x509-exporter端点作为目标,以抓取指标并通过在Grafana Jmeter 板中创建图表来绘制指标。
djp7away

djp7away2#

另一种方法是使用helm chart安装x509-exporter:https://hub.helm.sh/charts/enix/x509-exporter
请参阅此处的文档https://github.com/enix/helm-charts/tree/master/charts/x509-exporter
您可能还会发现以下prometheus警报规则很有用(基于x509-exporter指标):
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 }}'

字符串

fivyi3re

fivyi3re3#

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

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

字符串
所以你只需要:
1.将blackbox_exporter和探测规则设置到要监视的域。
你可以检查我的项目kehao95/helm-prometheus-exporter安装blackbox_exporter通过helm chart。
1.用于监视证书过期的配置规则。
你可以这样配置prometheusRule:(假设你使用的是prometheus-operator)

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

相关问题