在实现告警之前,我们需要先实现监控。下面通过黑盒监控实现对域名的监控:
1.创建一个空文件,然后通过该文件创建一个 Secret,那么这个 Secret 即可作为 Prometheus 的静态配置
[root@k8s-master01 ~]# touch prometheus-additional.yaml
[root@k8s-master01 ~]# kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml -n monitoring
查看 Secret是否创建完成
[root@k8s-master01 ~]# kubectl describe secret additional-configs -n monitoring
Name: additional-configs
Namespace: monitoring
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
prometheus-additional.yaml: 0 bytes
2.创建完 Secret 后,需要编辑下 Prometheus 配置
[root@k8s-master01 ~]# kubectl edit prometheus -n monitoring k8s
...
...
additionalScrapeConfigs:
key: prometheus-additional.yaml
name: additional-configs
optional: true
...
...

3.参考blackbox_exporter说明,打开prometheus-additional.yaml文件输入以下内容,添加job
[root@k8s-master01 ~]# vim prometheus-additional.yaml
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx] # Look for a HTTP 200 response.
static_configs:
- targets:
- https://www.baidu.com # Target to probe with https.
- https://www.aaa.com # Target to probe with https.
- http://gaoxin.kubeasy.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox-exporter:19115 # The blackbox exporter's real hostname:port
通过该文件更新该Secret
[root@k8s-master01 ~]# kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml --dry-run=client -oyaml | kubectl replace -f - -n monitoring
查看Secret是否更新完成
[root@k8s-master01 ~]# kubectl get secret -n monitoring additional-configs -oyaml
apiVersion: v1
data:
prometheus-additional.yaml: LSBqb2JfbmFtZTogJ2JsYWNrYm94JwogIG1ldHJpY3NfcGF0aDogL3Byb2JlCiAgcGFyYW1zOgogICAgbW9kdWxlOiBbaHR0cF8yeHhdICMgTG9vayBmb3IgYSBIVFRQIDIwMCByZXNwb25zZS4KICBzdGF0aWNfY29uZmlnczoKICAgIC0gdGFyZ2V0czoKICAgICAgLSBodHRwczovL3d3dy5iYWlkdS5jb20gIyBUYXJnZXQgdG8gcHJvYmUgd2l0aCBodHRwcy4KICAgICAgLSBodHRwczovL3d3dy5hYWEuY29tICMgVGFyZ2V0IHRvIHByb2JlIHdpdGggaHR0cHMuCiAgICAgIC0gaHR0cDovL2dhb3hpbi5rdWJlYXN5LmNvbQogIHJlbGFiZWxfY29uZmlnczoKICAgIC0gc291cmNlX2xhYmVsczogW19fYWRkcmVzc19fXQogICAgICB0YXJnZXRfbGFiZWw6IF9fcGFyYW1fdGFyZ2V0CiAgICAtIHNvdXJjZV9sYWJlbHM6IFtfX3BhcmFtX3RhcmdldF0KICAgICAgdGFyZ2V0X2xhYmVsOiBpbnN0YW5jZQogICAgLSB0YXJnZXRfbGFiZWw6IF9fYWRkcmVzc19fCiAgICAgIHJlcGxhY2VtZW50OiBibGFja2JveC1leHBvcnRlcjoxOTExNSAjIFRoZSBibGFja2JveCBleHBvcnRlcidzIHJlYWwgaG9zdG5hbWU6cG9ydAo=
kind: Secret
metadata:
creationTimestamp: "2023-07-23T10:46:23Z"
name: additional-configs
namespace: monitoring
resourceVersion: "4775796"
uid: 52eb0212-3df0-4c6b-9cb6-f09e69ed2d05
type: Opaque
对其进行解密验证
[root@k8s-master01 ~]# echo """
> LSBqb2JfbmFtZTogJ2JsYWNrYm94JwogIG1ldHJpY3NfcGF0aDogL3Byb2JlCiAgcGFyYW1zOgogICAgbW9kdWxlOiBbaHR0cF8yeHhdICMgTG9vayBmb3IgYSBIVFRQIDIwMCByZXNwb25zZS4KICBzdGF0aWNfY29uZmlnczoKICAgIC0gdGFyZ2V0czoKICAgICAgLSBodHRwczovL3d3dy5iYWlkdS5jb20gIyBUYXJnZXQgdG8gcHJvYmUgd2l0aCBodHRwcy4KICAgICAgLSBodHRwczovL3d3dy5hYWEuY29tICMgVGFyZ2V0IHRvIHByb2JlIHdpdGggaHR0cHMuCiAgICAgIC0gaHR0cDovL2dhb3hpbi5rdWJlYXN5LmNvbQogIHJlbGFiZWxfY29uZmlnczoKICAgIC0gc291cmNlX2xhYmVsczogW19fYWRkcmVzc19fXQogICAgICB0YXJnZXRfbGFiZWw6IF9fcGFyYW1fdGFyZ2V0CiAgICAtIHNvdXJjZV9sYWJlbHM6IFtfX3BhcmFtX3RhcmdldF0KICAgICAgdGFyZ2V0X2xhYmVsOiBpbnN0YW5jZQogICAgLSB0YXJnZXRfbGFiZWw6IF9fYWRkcmVzc19fCiAgICAgIHJlcGxhY2VtZW50OiBibGFja2JveC1leHBvcnRlcjoxOTExNSAjIFRoZSBibGFja2JveCBleHBvcnRlcidzIHJlYWwgaG9zdG5hbWU6cG9ydAo="""|base64 -d
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx] # Look for a HTTP 200 response.
static_configs:
- targets:
- https://www.baidu.com # Target to probe with https.
- https://www.aaa.com # Target to probe with https.
- http://gaoxin.kubeasy.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox-exporter:19115 # The blackbox exporter's real hostname:port
4.登录Prometheus页面验证
获取Prometheus服务NodePort端口
[root@k8s-master01 ~]# kubectl get svc -n monitoring | grep prometheus-k8s
prometheus-k8s NodePort 10.0.110.215 <none> 9090:30186/TCP,8080:31400/TCP 2d2h
打开浏览器输入节点IP:30186后,依次点击【Status】-【Targets】后,观察到blackbox已被监控,且Endpoint状态都为UP

5.登录Grafana页面验证
获取Grafana服务NodePort端口
[root@k8s-master01 ~]# kubectl get svc -n monitoring | grep grafana
grafana NodePort 10.0.14.56 <none> 3000:30428/TCP 2d3h
打开浏览器输入节点IP:30428后,依次点击【+】-【import dashboard】

你可以登录grafana官网下载自己心仪的模板,选择好后复制【Dashboard ID】

回到grafana界面,填写刚刚复制的【Dashboard ID】13659后,点击【Load】

填写【Name】并选择监控来源(prometheus)后,点击【Import】

说明:我这里已经导入过了,所以才会显示上面提示信息
这样就可以观察到域名监控情况了

6.如果你想添加新的域名,需要修改prometheus-additional.yaml文件
[root@k8s-master01 ~]# vim prometheus-additional.yaml
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx] # Look for a HTTP 200 response.
static_configs:
- targets:
- https://www.baidu.com # Target to probe with https.
- https://www.aaa.com # Target to probe with https.
- http://gaoxin.kubeasy.com
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox-exporter:19115 # The blackbox exporter's real hostname:port
修改完成进行更新,更新完成后就可以去登录Grafana页面验证查看了
[root@k8s-master01 ~]# kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml --dry-run=client -oyaml | kubectl replace -f - -n monitoring