个人网站我一般使用 [Let's Encrypt](https://letsencrypt.org/) 的免费 CA 证书,当网站一多管理这些证书就显得比较麻烦,所以我非常希望有一个工具,能够将这些域名服务状态都列出来,包括证书过期时间、访问延迟、以及请求状态码等。
恰好上周看到 Grafana Labs 的一篇博客 [How we eliminated service outages from ‘certificate expired’ by setting up alerts with Grafana and Prometheus](https://grafana.com/blog/2020/11/25/how-we-eliminated-service-outages-from-certificate-expired-by-setting-up-alerts-with-grafana-and-prometheus/) 中讲到了使用 Grafana 的 表格视图来展示域名证书监控信息,觉得非常受用,惊呼这不就是我长期想要的东西吗?
Grafana 监控面板效果图
迫不及待,我立马在本地搭建了一套测试环境体验了一下,下面是整个测试过程。
本地测试环境搭建
我是在 Mac 上使用 Docker 搭建的测试环境,网络拓扑如下:
因为服务之间要相互访问,为了防止重启 container 导致IP地址变化,故创建了一个叫做 `mynetwork` 网段为 `172.18.0.0/16` 的自定义网络。创建容器的时候可以通过 `--ip` 手动分配静态 IP,各容器分配的 IP 地址如上图。
启动 nginx 容器
启动 nginx 之前我们需要创建测试域名的证书和配置文件,本次测试涉及三个域名(www.test01~3.com)。
创建域名证书
使用 `genrsa.sh` 脚本批量创建自签名证书,脚本内容如下:
#!/bin/bash#1、该脚本支持自动生成私有证书# ,用$1,$2....表示,第1,2...个参数,分表表示域名和过