使用Prometheus和Grafana監控SSL / TLS證書到期

在本教程中,您將學習如何使用Prometheus和Grafana監視SSL / TLS證書的有效期。好吧,假設您已經了解了 SSL / TLS證書過期的含義,我們將討論如何監控SSL / TLS證書以避免遇到此類問題。

使用Prometheus和Grafana監控SSL / TLS證書到期

請注意,在此設置中,我們使用單個節點託管Telegraf(以輪詢證書統計信息),Prometheus和Grafana。

安裝和設置Grafana

您可以使用下面的任何指南或任何其他指南來安裝和設置Grafana。

在Debian 10上安裝最新的Grafana

在CentOS 8上安裝最新的Grafana

安裝和設置Prometheus服務器

同樣,您可以使用下面的任何指南或任何其他指南來安裝和設置Prometheus

在Ubuntu 20.04上安裝和設置Prometheus

在CentOS 8上安裝和配置Prometheus

在Debian 10上安裝Prometheus

安裝和設置Telegraf

Telegraf 是一個插件驅動的服務器代理,用於從數據庫,系統和IoT傳感器收集和發送指標和事件。

Telegraf通過其x509_cert插件提供了有關X509證書的統計信息,可通過本地文件或網絡連接進行訪問。這樣的統計數據可以發送到Prometheus,然後可以使用Grafana可視化。

在安裝Telegraf之前,請確保已正確設置時間。 Telegraf使用UTC中主機的本地時間為數據分配時間戳。使用網絡時間協議(NTP)同步主機之間的時間; 如果主機的時鐘未與NTP同步,則數據上的時間戳可能不準確。

在我們的設置中,我們使用的是Debian系統,因此您可以按照以下方式安裝Telegraf;

wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
apt update
apt install telegraf

配置Telegraf

Telegraf安裝並運行後,對其進行配置,以使Prometheus能夠從中抓取指標。

vim
# # Configuration for the Prometheus client to spawn
 [[outputs.prometheus_client]]
#   ## Address to listen on
   listen = "192.168.59.12:9273"
   metric_version = 2

接下來,將Telegraf配置為輪詢SSL證書度量標準,可以是本地文件,也可以是通過網絡連接。

# # Reads metrics from a SSL certificate
 [[inputs.x509_cert]]
#   ## List certificate sources
#   sources = ["/etc/ssl/certs/ssl-cert-snakeoil.pem", "tcp://example.org:443"]
   sources = ["https://kifarunix-demo.com:443"]
   insecure_skip_verify = true

您可以通過注釋禁用默認輸入插件:cpu,disk,diskio,內核,mem,進程,交換和系統。

保存並退出配置文件。

x509證書輸入插件指標包括;

  • x509_cert
    • 標籤:
      • 來源–證書來源
      • 組織
      • 組織單元
      • 國家
      • 地方性
      • 確認
      • 序列號
      • signature_algorithm
      • public_key_algorithm
      • issuer_common_name
      • issuer_serial_number
      • SAN
    • 領域:
      • 驗證碼(int)
      • 驗證錯誤(字符串)
      • 到期時間(整數,秒)
      • 年齡(整數,秒)
      • 開始日期(整數,秒)
      • 結束日期(整數,秒)

重新啟動Telegraf;

systemctl restart telegraf

將Telegraf Target添加到Prometheus

為了使Prometheus能夠抓取Telegraf收集的SSL證書指標,請打開 prometheus.yml 配置並添加目標像;

  - job_name: 'SSL/TLS Certs'
    static_configs:
    - targets: ['192.168.59.12:9273']

請參閱下面的我的配置文件。

vim /etc/prometheus/prometheus.yml
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'SSL/TLS Certs'
    static_configs:
    - targets: ['192.168.59.12:9273']

保存並退出文件;

重新啟動Prometheus;

systemctl restart prometheus

驗證Prometheus Target的狀態

您可以檢查Prometheus telegraf目標的狀態。

另外,請檢查Prometheus查詢中的 x509* 指標。

使用Prometheus和Grafana監控SSL / TLS證書到期

運行 x509_cert_expiry 查詢並過濾掉一些指標。這是我們使用的到期查詢, x509_cert_expiry{san!=""},它會過濾掉任何不包含的指標 san 價值。

使用Prometheus和Grafana監控SSL / TLS證書到期

將Prometheus與Grafana集成以進行監控

現在,您可以通過將Prometheus數據源添加到Grafana中來將Prometheus與Grafana集成。檢查下面的鏈接;

將Prometheus與Grafana集成以進行監控

數據源,一旦添加了Prometheus數據源。

使用Prometheus和Grafana監控SSL / TLS證書到期

使用Prometheus和Grafana監控SSL / TLS證書到期

將Prometheus與Grafana集成後,您現在可以繼續配置Prometheus,以輪詢服務器證書指標並將其發送給Grafana進行可視化。

創建SSL證書過期儀錶板。

在左側菜單面板上,點擊 +(加號)>儀錶板>添加空白面板

樣本模擬儀錶板;

使用Prometheus和Grafana監控SSL / TLS證書到期

完成設置後,保存儀錶盤。

使用Prometheus和Grafana監控SSL / TLS證書到期

這是上面我的儀錶板的示例JSON文件;

{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --",
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "gnetId": null,
  "graphTooltip": 0,
  "id": 2,
  "links": [],
  "panels": [
    {
      "datasource": null,
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "custom": {
            "align": "left",
            "filterable": false
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          }
        },
        "overrides": [
          {
            "matcher": {
              "id": "byName",
              "options": "Value #A"
            },
            "properties": [
              {
                "id": "unit",
                "value": "dtdurations"
              },
              {
                "id": "decimals",
                "value": 2
              },
              {
                "id": "custom.displayMode",
                "value": "color-background"
              },
              {
                "id": "displayName",
                "value": "Expiry Date"
              },
              {
                "id": "thresholds",
                "value": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "red",
                      "value": null
                    },
                    {
                      "color": "semi-dark-orange",
                      "value": 864000
                    },
                    {
                      "color": "green",
                      "value": 2592000
                    }
                  ]
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 5,
        "w": 11,
        "x": 0,
        "y": 0
      },
      "id": 2,
      "options": {
        "frameIndex": 1,
        "showHeader": true
      },
      "pluginVersion": "7.5.2",
      "targets": [
        {
          "exemplar": true,
          "expr": "x509_cert_expiry{san!=""}",
          "format": "table",
          "instant": true,
          "interval": "",
          "legendFormat": "",
          "refId": "A"
        }
      ],
      "title": "SSL/TLS Certificate Expiry Status",
      "transformations": [
        {
          "id": "merge",
          "options": {}
        },
        {
          "id": "organize",
          "options": {
            "excludeByName": {
              "__name__": true,
              "common_name": false,
              "host": true,
              "instance": true,
              "issuer_common_name": true,
              "job": true,
              "public_key_algorithm": true,
              "san": true,
              "serial_number": true,
              "signature_algorithm": true,
              "verification": true,
              "verification_error": true
            },
            "indexByName": {},
            "renameByName": {}
          }
        }
      ],
      "type": "table"
    }
  ],
  "schemaVersion": 27,
  "style": "dark",
  "tags": [],
  "templating": {
    "list": []
  },
  "time": {
    "from": "now-6h",
    "to": "now"
  },
  "timepicker": {},
  "timezone": "",
  "title": "SSL/TLS Certificate Expiry Status",
  "uid": "nRouqJ_Gk",
  "version": 1
}

這就是您可以使用Prometheus和Grafana輕鬆監視SSL / TLS證書到期的方法。

對於任何改進,請在評論部分中放置。

Sidebar