黑盒监控blackbox_exporter

2023-10-17 23:59

本文主要是介绍黑盒监控blackbox_exporter,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前边介绍有很多exporter可以直接将metrics暴露给Prometheus进行监控,这些称为“白盒监控”,那些exporter无法监控到的指标呢?或者未暴露Metrics给Prometheus的一些服务怎么办?这时就要用到 blackbox_exporte “黑盒监控”。

blackbox_exporte支持用户通过:HTTP、HTTPS、DNS、TCP和ICMP的方式对网络进行探测,还可以探测SSL证书过期时间。

部署及使用blackbox_exporter#

部署blackbox_exporter#

这里以linux二进制部署为例:

  1. 下载安装包
curl -LO https://github.com/prometheus/blackbox_exporter/releases/download/v0.22.0/blackbox_exporter-0.22.0.linux-amd64.tar.gz
  1. 展开程序包:
tar xf blackbox_exporter-0.22.0.linux-amd64.tar.gz -C /usr/local/
ln -sv /usr/local/blackbox_exporter-0.22.0.linux-amd64 /usr/local/blackbox_exporter
  1. 创建用户,或prometheus用户已经存在,可略过该步骤:
useradd -r prometheus
  1. 创建Systemd Unitfile,保存于/usr/lib/systemd/system/blackbox_exporter.service文件中:
[Unit]
Description=blackbox_exporter
After=network.target[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/blackbox_exporter/blackbox_exporter \--config.file=/usr/local/blackbox_exporter/blackbox.yml \--web.listen-address=:9115
Restart=on-failure[Install]
WantedBy=multi-user.target
  1. 启动服务:
systemctl daemon-reload
systemctl start blackbox_exporter.service
systemctl enable blackbox_exporter.service
  1. 验证监听的端口,并测试访问其暴露的指标
ss -tnlp | grep '9115'
curl localhost:9115/metrics

随后即可访问Blackbox Exporter的Web UI,其使用的URL如下,其中的<host_ip>要替换为节点的实际地址:http://<host_ip>:9115/

icmp监控,监控主机存活状态#

prometheus 添加相关监控,Blackbox 使用默认配置启动即可

vi /usr/local/prometheus/prometheus.yml

  - job_name: "icmp_ping"metrics_path: /probeparams:module: [icmp]  # 使用icmp模块file_sd_configs:- refresh_interval: 10s #检测时间间隔files:- "ping/ping_status*.yml"  #具体的配置文件路径relabel_configs:- source_labels: [__address__]regex: (.*)(:80)?target_label: __param_targetreplacement: ${1}- source_labels: [__param_target]target_label: instance- source_labels: [__param_target]regex: (.*)target_label: pingreplacement: ${1}- source_labels: []regex: .*target_label: __address__replacement: 127.0.0.1:9115
这里有很多relabel的操作,下篇博客会详细讲解

创建对应的ping目录

cd /usr/local/prometheus/
mkdir ping
cd ping

vi ping_status.yml

- targets: ['monitor.example.com']labels:group: '跳板机'
- targets: ['10.xx.xx.xx','10.xx.xx.xx','10.xx.xx.xx']labels:group: 'k8s cluster'
- targets: ['www.baidu.com']labels:group: '百度' 

配置完成后,可以检查配置文件语法,并让Prometheus重载配置。

./promtool check config prometheus.yml 
curl -XPOST monitor.example.com:9090/-/reload

打开Prometheus web UI,可以看到,已经监控到了主机icmp情况:

http监控#

编辑prometheus的主配置文件prometheus.yml,添加类似如下内容,即可用户对目标站点的探测。

  # Blackbox Exporter- job_name: 'http_get_status'metrics_path: /probeparams:module: [http_2xx]  # Look for a HTTP 200 response.file_sd_configs:- refresh_interval: 2mfiles:- "httpget/http_get*.yml"  #具体的配置文件relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: "monitor.example.com:9115"  # 指向实际的Blackbox exporter.- target_label: regionreplacement: "local"

vi httpget/http_get.yml

static_configs:
- targets:- "https://monitor.example.com"- "http://monitor.example.com:8080"- "www.google.com"refresh_interval: 2m

重新加载Prometheus

curl -XPOST monitor.example.com:9090/-/reload

展示:

这里要注意,blackbox下并不是prometheus中State状态为UP就认为是正常状态,其实并不然,这里我们随便写一个不存在的域名,例如:http://www.buzhida2222o.com,这里看也是UP状态:

但实际看其的metrics指标并不正常,探活的指标是失败,这里不确定是BUG还是怎样。

tcp端口监控#

大体的步骤都是一致的,这里就直接上配置:

- job_name: 'tcp_port_status'metrics_path: /probeparams:module: [tcp_connect]static_configs:- targets: ['monitor.example.com:80','monitor.example.com:8080','monitor.example.com:443']labels:instance: 'port_status'group: 'tcp'relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: monitor.example.com:9115

成功监控:

至此,黑盒监控中常用的一些功能介绍完毕,监控项配置完毕后,可以通过导入dashboard到grafana来更直观的查看监控数据。

自定义blackbox.yml#

blackbox的默认监控配置也可以进行自定义修改,例如http GET添加一些headers,设置boby_size_limit值或判断一些response body是否符合预期,还有一些TLS的设置等等,我们可以参考官网文档中给出的example来进行自定义:

# github地址
https://github.com/prometheus/blackbox_exporter# github中blackbox.yml各配置项解析
blackbox_exporter/CONFIGURATION.md at master · prometheus/blackbox_exporter · GitHub# github中example文件
blackbox_exporter/example.yml at master · prometheus/blackbox_exporter · GitHub

这里我们做一个演示https及私有TLS证书的演示,监控证书过期时间。

首先需要更改默认的vim blackbox.yml

modules:http_2xx:prober: httphttp:preferred_ip_protocol: "ip4"valid_http_versions: ["HTTP/1.1", "HTTP/2"]valid_status_codes: [200,301,302,303]tls_config:insecure_skip_verify: truehttp_ca_example:prober: httphttp:method: GETpreferred_ip_protocol: "ip4"valid_http_versions: ["HTTP/1.1", "HTTP/2"]fail_if_ssl: falsefail_if_not_ssl: truetls_config:insecure_skip_verify: falseca_file: /usr/local/blackbox_exporter/certs/ca.crtcert_file: /usr/local/blackbox_exporter/certs/server.crtkey_file: /usr/local/blackbox_exporter/certs/server.key

http_2xx:

在此模块的基础上添加了请求状态码的校验,并设置了tls校验直接跳过,这种就比较省事,可以直接跳过证书的校验。

http_ca_example:

此模块为新增,主要配置了tls证书的一些配置,添加ca、证书和私钥的文件位置,使blackbox请求时带着证书。

配置完成后,重启blackbox服务:

systemctl restart blackbox_exporter.service

然后配置prometheus.yml添加对应模块的使用:

  - job_name: 'http_get_status'metrics_path: /probeparams:module: [http_2xx]  # Look for a HTTP 200 response.file_sd_configs:- refresh_interval: 2mfiles:- "httpget/http_get*.yml"  #具体的配置文件relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: "monitor.example.com:9115"  # 指向实际的Blackbox exporter.- target_label: regionreplacement: "local"- job_name: 'http_get_ca_status'metrics_path: /probeparams:module: [http_ca_example]  file_sd_configs:- refresh_interval: 2mfiles:- "httpget/http_ca.yml"relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: "monitor.example.com:9115"  # 指向实际的Blackbox exporter.- target_label: regionreplacement: "beijing"

在对应的发现文件中,配置主机并重新加载prometheus配置,并查看监控状态:

curl -XPOST monitor.example.com:9090/-/reload

搜索指标

probe_http_duration_seconds{phase="tls"}

证书过期时间已经获取成功,这个时候可以导入ID为13230的Dashboard到Grafana,然后再设置一个告警rule,就可以完成TLS证书过期监控啦。

最终效果:

这篇关于黑盒监控blackbox_exporter的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/228818

相关文章

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

springboot健康检查监控全过程

《springboot健康检查监控全过程》文章介绍了SpringBoot如何使用Actuator和Micrometer进行健康检查和监控,通过配置和自定义健康指示器,开发者可以实时监控应用组件的状态,... 目录1. 引言重要性2. 配置Spring Boot ActuatorSpring Boot Act

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能