目前生产环境使用Zabbix自带的web监控模块对所有子优鸟页面进行监控,由于目前Zabbix服务器为单节点,经常出现取不到web监控数据的情况。现将web监控迁移到Prometheus上。
但是线上prometheus的部署是使用prometheus operator实现的,部署了很多的ServiceMonitor 和 PrometheusRule。Prometheus Operator在K8S中建立了4个CRD,避免用户编写复杂的Prometheus Rule,也可以很快速的构建prometheus集群。 CRD详情链接: https://github.com/coreos/prometheus-operator/blob/master/Documentation/design.md
所有blackbox_exporter需要和CRD一起配合工作,详细的配置在后续的步骤中。所有使用的yaml文件我都会放到github上面,地址为:
https://github.com/kevinniu666/prometheusoperator-blackbox_exporter.git
1. K8S集群
2. Prometheus Operator方式部署的Prometheus集群
3. Prometheus的数据持久化使用NFS(我这里使用的是阿里云的NAS服务)
1.部署blackbox
#kubectl apply -f blackbox.yaml
#kubectl apply -f blackbox-config-map.yaml
#kubectl apply -f blackbox-service.yaml
2.添加Prometheus(这里是CRD),监控blackbox 需要的secret
#kubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml --dry-run -oyaml -n monitoring > additional-scrape-configs.yaml
PS: 这里是将prometheus-additional.yaml文件保存为K8S 的Secret,用于Prometheus这个CRD可以进行自定义监控。运行的时候prometheus-additional.yaml必须在当前目录。
#kubectl apply -f additional-scrape-configs.yaml
3.更新Prometheus的部署
#kubectl apply -f prometheus-prometheus.yaml
PS: 这个yaml文件是prometheus-operator里面就有的,如果你是通过helm部署的prometheus-operator,可以通过将现在的prometheus Deployment导出来,然后加上additionalScrapeConfigs这一段:
.....省略....
replicas: 1
additionalScrapeConfigs:
name: additional-scrape-configs
key: prometheus-additional.yaml
resources:
requests:
memory: 2Gi
limits:
memory: 4Gi
.....省略.....
还有一个就是prometheus的数据目录/prometheus 我是挂载到NFS上,同时prometheus-additional.yaml 文件中的路径: /prometheus/blackbox_exporter/*.yaml 也放在NFS上,prometheus的持久化是通过volumeClaimTemplate来做的,找了很久也没找到单独再挂一个目录给这个pod,索性就直接在数据目录建了一个目录用来存放需要监控的url地址
4.在监控url文件中添加需要监控的url,
#把NFS直接挂载到其它的主机,直接添加需要监控的URL地址就可以了
#vi /nfs_prometheus_data/prometheus/prometheus-db/blackbox_exporter/monitor_urls.yaml #文件格式需要满足yaml文件格式
5.查看prometheus中的监控项
6. Prometheus中查看数据,
7.配置告警
#kubectl apply -f Web-Monitoring-Alerts.yaml
8.验证告警