控:ssl_exporter的Secret與kubeconfig探測器使用指南)
深入Kubernetes證書監(jiān)控ssl_exporter的Secret與kubeconfig探測器使用指南【免費下載鏈接】ssl_exporterExports Prometheus metrics for TLS certificates項目地址: https://gitcode.com/gh_mirrors/ss/ssl_exporterssl_exporter 是一款專為 Prometheus 生態(tài)打造的TLS 證書監(jiān)控導出器Exporter它能將證書的有效期、頒發(fā)者、序列號等信息轉換為標準的 Prometheus 指標。在 Kubernetes 場景中它內置了兩個針對性極強的探測器kubernetes探測器讀取集群中kubernetes.io/tls類型的 Secret和kubeconfig探測器解析 kubeconfig 文件內嵌的 CA 與客戶端證書幫助你提前發(fā)現證書過期風險避免服務因證書失效而中斷。為什么 Kubernetes 需要專門的證書監(jiān)控Kubernetes 集群里藏著大量證書Ingress / Gateway 證書通常以kubernetes.io/tls類型的 Secret 存儲過期后直接導致域名無法訪問節(jié)點與組件證書admin.conf、kubelet 證書等嵌在 kubeconfig 或節(jié)點文件中過期后會導致節(jié)點失聯、控制面組件掉線ServiceAccount Token、內部 CA等同樣有生命周期。手工檢查不現實而 ssl_exporter 把證書還剩多少天過期變成了可查詢、可告警的指標配合 Prometheus 與 Grafana 就能實現自動化監(jiān)控。快速安裝與運行從倉庫獲取源碼并構建構建入口見 Makefilegit clone https://gitcode.com/gh_mirrors/ss/ssl_exporter cd ssl_exporter make ./ssl_exporter --config.fileexamples/ssl_exporter.yaml也可以使用 Docker 鏡像快速啟動docker run -p 9219:9219 ribbybibby/ssl-exporter:latest flags啟動后訪問http://localhost:9219/probe?target...即可觸發(fā)探測/metrics路徑暴露指標。默認監(jiān)聽地址與路徑由--web.listen-address、--web.metrics-path、--web.probe-path三個參數控制完整參數列表可在 README.md 中查看。提示模塊行為通過--config.file指定的 YAML 配置文件調整示例文件 examples/ssl_exporter.yaml 已經包含了kubernetes與kubeconfig模塊的寫法可直接參考。用 kubernetes 探測器監(jiān)控集群中的 TLS Secretkubernetes探測器會自動列出集群中所有kubernetes.io/tls類型的 Secret并導出其中每個證書的有效期指標。核心指標指標含義ssl_kubernetes_cert_not_after證書失效時間Unix 時間戳ssl_kubernetes_cert_not_before證書生效時間Unix 時間戳指標自帶豐富的標簽namespace、secret、key、cn、issuer_cn、serial_no、dnsnames等定義見 prober/metrics.go可以按命名空間、Secret 名稱靈活過濾和告警。目標格式與通配符目標格式為namespace/name兩部分均支持通配符匹配實現見 prober/kubernetes.gocurl localhost:9219/probe?modulekubernetestargetkube-system/my-tls-secret # 精確匹配 curl localhost:9219/probe?modulekubernetestarget*/* # 全集群所有 TLS Secret一條*/*就能把整個集群的 TLS 證書納入監(jiān)控非常省事。憑證從哪里來探測器按以下優(yōu)先級獲取集群訪問憑證newKubeClient邏輯見 prober/kubernetes.go模塊配置中顯式指定的kubeconfig路徑環(huán)境變量$KUBECONFIG默認配置文件$HOME/.kube/config在集群內運行時自動使用 Pod 的 ServiceAccountin-cluster 憑證。也就是說把它部署成 Deployment 后只需給 ServiceAccount 授予只讀列出 Secrets的權限即可無需掛載任何文件。Prometheus 抓取配置參考 examples/example.prometheus.yml 中的ssl-kubernetes-secrets任務- job_name: ssl-kubernetes-secrets metrics_path: /probe params: module: [kubernetes] target: [*/*] static_configs: - targets: [127.0.0.1:9219]用 kubeconfig 探測器監(jiān)控節(jié)點 kubeconfig 證書kubeconfig探測器實現見 prober/kubeconfig.go會解析指定的 kubeconfig 文件提取其中的certificate-authority(-data)與client-certificate(-data)并導出ssl_kubeconfig_cert_not_after/ssl_kubeconfig_cert_not_before標簽包括kubeconfig文件路徑、name、type區(qū)分cluster還是user中的證書直接對本地文件發(fā)起探測即可curl localhost:9219/probe?modulekubeconfigtarget/etc/kubernetes/admin.conf經典玩法DaemonSet 監(jiān)控所有節(jié)點README 推薦的最佳實踐是把 ssl_exporter 以DaemonSet形式部署每個節(jié)點一個實例然后讓 Prometheus 按節(jié)點抓取各自本機的 kubeconfig 證書scrape_configs: - job_name: ssl-kubernetes-kubeconfig metrics_path: /probe params: module: [kubeconfig] target: [/etc/kubernetes/admin.conf] kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: ^(.*):(.*)$ target_label: __address__ replacement: ${1}:9219這樣每個節(jié)點的 kubelet / admin 證書過期時間都會按instance標簽分別上報節(jié)點證書臨期時可精準告警到對應節(jié)點。實用告警查詢語句拿到指標后配合 PromQL 就能實現證書臨期告警。以下語句整理自 README.md 的示例查詢# 集群 Secret 中 7 天內過期的證書 ssl_kubernetes_cert_not_after - time() 86400 * 7 # 任意來源 7 天內過期的證書含通配符證書 ssl_cert_not_after{cn~\*.*} - time() 86400 * 7 # 探測失敗的目標排查權限、網絡、Secret 不存在等問題 ssl_probe_success 0建議把ssl_probe_success 0也加入告警——它意味著監(jiān)控本身出問題了與證書臨期同樣重要??偨Y探測器適用場景核心指標典型部署方式kubernetes集群內 Ingress 等 TLS Secretssl_kubernetes_cert_not_afterDeployment ServiceAccountkubeconfig節(jié)點 kubeconfig / admin.conf 證書ssl_kubeconfig_cert_not_afterDaemonSetssl_exporter 讓 Kubernetes 證書監(jiān)控變得極其簡單kubernetes 探測器一條*/*覆蓋全集群 TLS Secretkubeconfig 探測器配合 DaemonSet 覆蓋每個節(jié)點再疊加 7 天臨期告警就能把證書悄悄過期這類隱性故障消滅在發(fā)生之前。更多指標標簽說明與 Grafana 面板可參考 README.md 與 contrib/grafana/dashboard.json?!久赓M下載鏈接】ssl_exporterExports Prometheus metrics for TLS certificates項目地址: https://gitcode.com/gh_mirrors/ss/ssl_exporter創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考