使用Sysdig(强制)使用Blackbox Exporter进行监控
目标。
Sysdig是一种基于SaaS的监控服务。在IBM Cloud上,可以使用IBM Cloud Monitoring with Sysdig服务。
一方面,Blackbox Exporter是为Prometheus而设计的一种导出器。它可以通过指定的URL或主机,在HTTP级别或套接字级别上进行生死状态监控。
Sysdig使用专用代理收集指标数据,同时还支持Prometheus格式的指标。在这次尝试中,我们将通过Blackbox Exporter对外部服务的状态进行监控,并(勉强地)在Sysdig中显示。
过程
Sysdig的安装配置
我们将假设Sysdig已经下单完毕。
https://docs.sysdig.com/en/setting-up-the-environment.html的中文翻译如下:
在中文中设置环境的方法请参考:https://docs.sysdig.com/zh-cn/setting-up-the-environment.html
在部署代理时,将以下环境变量添加到env中。
- name: ADDITIONAL_CONF
value: "prometheus:\n enabled: true"
执行Blackbox Exporter
在下面这个清单中部署Pod。关键是两点。
-
- Blackbox ExporterはデフォルトでIPv6での通信をしてしまうのでIPv4に変更
-
- Sysdigがスクレイプしてくれるようアノテーションを追加
prometheus.io/pathでtarget=監視対象&モジュール名を指定
apiVersion: v1
kind: ConfigMap
metadata:
name: blackbox-config
data:
config.yml: |
modules:
http_2xx:
prober: http
http:
preferred_ip_protocol: ipv4 # 追加
http_post_2xx:
prober: http
http:
method: POST
tcp_connect:
prober: tcp
pop3s_banner:
prober: tcp
tcp:
query_response:
- expect: "^+OK"
tls: true
tls_config:
insecure_skip_verify: false
ssh_banner:
prober: tcp
tcp:
query_response:
- expect: "^SSH-2.0-"
irc_banner:
prober: tcp
tcp:
query_response:
- send: "NICK prober"
- send: "USER prober prober prober :prober"
- expect: "PING :([^ ]+)"
send: "PONG ${1}"
- expect: "^:[^ ]+ 001"
icmp:
prober: icmp
---
apiVersion: v1
kind: Pod
metadata:
annotations:
prometheus.io/path: /probe?target=https://www.google.com/&module=http_2xx # 監視対象
prometheus.io/port: "9115"
prometheus.io/scrape: "true"
name: blackbox-exporter
spec:
containers:
- name: blackbox-exporter
image: prom/blackbox-exporter
volumeMounts:
- name: blackbox-config
mountPath: /etc/blackbox_exporter/
readOnly: true
volumes:
- name: blackbox-config
configMap:
name: blackbox-config
通过Sysdig仪表板进行确认
我会等几分钟直到被爬取,然后在仪表板上添加一个面板,以便可以选择Blackbox Export的度量probe_success。0表示失败,1表示成功。

请考虑一下
如果你对Prometheus很了解的话,你可能已经注意到,在这种方式下,每个被监视的对象都需要启动一个Blackbox Exporter的Pod。而对于Prometheus来说,只需要一个Blackbox Exporter即可监视任意数量的对象。所以,请理解这是Sysdig在想要监视外部服务的存续性时的权宜之计(如果有更好的方法,请告诉我)。