普罗米修斯的建议- 用 blackbox_exporter 进行生死监控
黑盒出口器是什么?
以前的导出器在受监控服务器上安装并从Prometheus服务器进行拉取以获取度量值。在这种情况下,无论怎样努力都无法实现对ICMP(ping)监控或URL监控。解决此问题的工具是”blackbox exporter”。
因为它是支持外形监控的expoter,所以我们会将其安装并在Prometheus服务器上运行。(也可以在其他服务器上运行)
公式 – 下载
GitHub – prometheus/blackbox_exporter
使用(ansible)引入
由于使用ansible安装了node_exporter并进行了服务注册,因此我们将以此为基础创建yml文件。
---
- hosts: samplehost
user: sampleuser
sudo: yes
tasks:
- name: check exist file
stat:
path: /usr/bin/blackbox_exporter
register: file
- name: wget blackbox_exporter
get_url:
url: https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbox_exporter-0.12.0.linux-amd64.tar.gz
dest: /tmp/blackbox_exporter-0.12.0.linux-amd64.tar.gz
- name: unarchive blackbox-exporter
unarchive:
src: /tmp/blackbox_exporter-0.12.0.linux-amd64.tar.gz
remote_src: yes
dest: /tmp/
- name: copy exporter binary
shell: cp /tmp/blackbox_exporter-0.12.0.linux-amd64/blackbox_exporter /usr/bin/blackbox_exporter
when: not file.stat.exists
- name: add system account prometheus
user:
system: yes
name: prometheus
state: present
home: /var/lib/prometheus
shell: /bin/false
comment: Prometheus daemon
- name: create prometheus home directory
file:
state: directory
path: /var/lib/prometheus
mode: 0755
group: prometheus
owner: prometheus
- name: create blackbox_exporter systemd
blockinfile:
path: /etc/systemd/system/blackbox_exporter.service
create: yes
block: |
[Unit]
Description=black_exporter for Prometheus
[Service]
Restart=always
User=prometheus
ExecStart=/usr/bin/blackbox_exporter \
--web.listen-address=0.0.0.0:9115 \
--config.file=/usr/local/blackbox_exporter/blackbox.yml
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
- name: add blackbox_exporter systemd
systemd:
name: blackbox_exporter.service
enabled: yes
state: started
- name: setup icmp
shell: setcap cap_net_raw+ep /usr/local/blackbox_exporter/blackbox_exporter
黑盒子导出器的配置
默认情况下是这样的。因为我还没有进行研究,所以暂时保持默认设置。
modules:
http_2xx:
prober: http
http:
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
Prometheus的配置
在scrape_configs中,需要记录下针对哪个位置以及使用哪个协议进行设置。
使用Prometheus和Blackbox Exporter进行服务器的生死监测。
内容是基于上述进行 模仿 参考。(非常感谢!)
先看看自定义都是什么东西再说吧。
使用 ICMP 的配置选项
使用file_sd进行管理似乎更好。
scrape_configs:
- job_name: "Blackbox_ICMP"
metrics_path: /probe
params:
module: [icmp]
file_sd_configs:
- files:
- /usr/local/prometheus-2.3.1/filesd/ICMP.yml
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115 # blackbox_exporterのIP:Port(今回はPrometheusサーバ自身なので127.0.0.1)
- targets:
- XXXXX01
- XXXXXXX01
labels:
project: XXXXXT
- targets:
- 13.XXX.XXX.234
labels:
instance: XX-XXXXX18
project: XXXXXXXXAI
确认
設定完成後,重新啟動服務,並確認是否在目標列表中。
到这儿结束!
普罗米修斯之前的文章
普罗米修斯推荐-初次引入-
普罗米修斯推荐-服务发现-
普罗米修斯推荐-引入出口器 node-exporter(使用apt-get)-
普罗米修斯推荐-引入出口器 node-exporter(使用二进制文件)-
普罗米修斯推荐-服务发现-端点变成“http://:9100/metrics”,变成自己的问题
普罗米修斯推荐-在Grafana中需要监控的用户列表-
普罗米修斯推荐-在Grafana中将警报通知给Teams非常容易-