介紹乙個小工具 SSL exporter

2021-10-25 16:16:35 字數 2276 閱讀 9490

kubeadm 安裝時的證書有效期設定為 1 年,雖說有 sealos 這樣的不知名安裝器以及各種方案來更新證書,但是對於像我一樣經常跟不知**的 kubernetes 集群打交道的人來說,這個有效期就是達摩什麼的利劍,不一定什麼時候會砍到脖子上。如果能用 prometheus 對證書有效期進行監控或者告警,就能更好地保護好自己的脖子了,ssl-exporter 就是這麼個有趣的專案。

ssl-exporter 是個 prometheus exporter,能提供多種針對 ssl 的檢測手段,包括:https 證書生效/失效時間、檔案證書生效/失效時間,ocsp 等相關指標。下面用 api server 證書檢測來驗證這一功能:

首先進行部署:

apiversion: v1

kind: service

metadata:

labels:

name: ssl-exporter

name: ssl-exporter

spec:

ports:

- name: ssl-exporter

protocol: tcp

port: 9219

targetport: 9219

selector:

---kind: deployment

metadata:

name: ssl-exporter

spec:

replicas: 1

selector:

matchlabels:

template:

metadata:

name: ssl-exporter

labels:

spec:

initcontainers:

# install kube ca cert as a root ca

- name: ca

image: alpine

command:

- sh

- -c

- |set -e

apk add --update ca-certificates

cp /var/run/secrets/kubernetes.io/serviceaccount/ca.crt /usr/local/share/ca-certificates/kube-ca.crt

update-ca-certificates

cp /etc/ssl/certs/* /ssl-certs

volumemounts:

- name: ssl-certs

mountpath: /ssl-certs

containers:

- name: ssl-exporter

image: ribbybibby/ssl-exporter:v0.6.0

ports:

- name: tcp

containerport: 9219

volumemounts:

- name: ssl-certs

mountpath: /etc/ssl/certs

volumes:

- name: ssl-certs

emptydir: {}

上面的 yaml 部署了乙個 deployment 和 service,在 9219 埠上提供 exporter 服務。

接下來在 prometheus 中配置一下抓取 kubernetes 服務的內容:

- job_name: ssl-exporter

metrics_path: /probe

static_configs:

- targets:

- kubernetes.default.svc:443

relabel_configs:

- source_labels: [__address__]

target_label: __param_target

- source_labels: [__param_target]

target_label: instance

- target_label: __address__

replacement: ssl-exporter:9219

接下來就可以進行查詢了,查詢語句:(ssl_cert_not_after-time())/3600/24,這個表示式查詢各個目標的過期時間和當前時間的差。執行查詢獲取到過期天數,查詢結果是 349 天。同樣的表示式,複製到 alertmanager 中,就可以及時的獲取到證書的過期時間了。

介紹乙個小工具 Linqer

這些天寫linq挺煩人的,就上網搜搜可有什麼好的sql轉linq的工具,咦,馬上就看上了linqer。哈哈,介紹一下使用方法吧 第一步 執行這個神馬檔案。第二步 指定乙個路徑給它。他會生成乙個linqer.exe可執行的檔案。第三步 執行這個exe檔案,點選add按鈕,第四步 在彈出的add介面中,...

diy乙個小工具

仔細分析任務,其實關鍵點就是環境變數,建立乙個新程序,然後把環境變數塊傳遞進去,變可完成任務,環境塊是乙個string,name value 而且對於unicode 和ansi 的對待方式不同,如果是unicode,createprocess時要傳遞 dword dwcreationflags這個引...

乙個讀取properties的小工具

乙個讀取properties的小工具 resourcebundle.getbundle weixin 通過resourcebundle,我們需要訪問位於 web inf classes目錄下的乙個字尾名為properties的文字型別檔案,從裡面讀取我們需要的值。springboot我們可以直接放預...