当前位置: 首页 > news >正文

prometheus 黑盒监控和docker检测

prometheus 黑盒监控和docker检测

黑盒监控

前提:

有些时候我们想监听服务器的某个端口是否存在,监听http的请求是否正确,这个时候就可以使用blackbox_exporter来实现。

blackbox_exporter是prometheus官方提供的exporter之一,可以提供http,dns,tcp,icmp的监控数据的采集

blakbox_exporter应用的场景主要有以下几个

  • Http测试
    • 定义Request Header信息
    • 判断Http status / Http Response Header / Http Body 内容
  • Tcp测试
    • 业务组件端口状态监听
    • 应用层协议定义和监听
  • Icmp测试
    • 主机探活机制
  • Post测试
    • 接口连通性
  • sll证书过期时间

blackbox_exporter的安装部署

从https://prometheus.io/download/ 下载最新版本,我这里下载的是blackbox_exporter-0.24.0.linux-amd64.tar.gz

[root@prometheus-66 local]# tar -xf blackbox_exporter-0.27.0.linux-amd64.tar.gz 
[root@prometheus-66 local]# mv blackbox_exporter-0.27.0.linux-amd64 /usr/local/blackbox_exporter
[root@prometheus-66 local]# cd /usr/local/
[root@prometheus-66 blackbox_exporter]# ll
total 30792
-rwxr-xr-x 1 1001 1002 31509376 Jun 30 20:46 blackbox_exporter
-rw-r--r-- 1 1001 1002     1209 Jun 30 20:47 blackbox.yml
-rw-r--r-- 1 1001 1002    11357 Jun 30 20:47 LICENSE
-rw-r--r-- 1 1001 1002       94 Jun 30 20:47 NOTICE
  • 这个目录下,默认有一个配置文件blackbox.yml.不需要修改,直接用即可,

  • 介绍这个文件的参数含义

modules:http_2xx:     # 这个名字是定义模块名称,可以随便写,但是需要在prometheus.yml配置文件中对应起来,保持默认即可prober: http  # 进行探测的协议,可以是http,tcp,dns,icmp等等http:preferred_ip_protocol: "ip4"http_post_2xx:prober: httphttp:method: POSTtcp_connect:   # tcp检测,比如检测某个端口是否在线prober: tcppop3s_banner:prober: tcptcp:query_response:- expect: "^+OK"tls: truetls_config:insecure_skip_verify: falsegrpc:prober: grpcgrpc:tls: truepreferred_ip_protocol: "ip4"grpc_plain:prober: grpc
...............

使用systemctl启动blackbox_exporter服务

添加blackbox_exporter服务

[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

最后启动这个blackbox_exporter服务配置完成

[root@prometheus-66 blackbox_exporter]# systemctl daemon-reload 
[root@prometheus-66 blackbox_exporter]# systemctl restart blackbox_exporter 
[root@prometheus-66 blackbox_exporter]# systemctl status  blackbox_exporter [root@prometheus-66 blackbox_exporter]# systemctl status  blackbox_exporter 
● blackbox_exporter.service - blackbox_exporterLoaded: loaded (/usr/lib/systemd/system/blackbox_exporter.service; disabled; vendor preset: disabled)Active: active (running) since Sun 2025-07-20 13:29:30 CST; 5s agoMain PID: 20101 (blackbox_export)CGroup: /system.slice/blackbox_exporter.service└─20101 /usr/local/blackbox_exporter/blackbox_exporter --config.file=/usr/l...Jul 20 13:29:30 prometheus-66 systemd[1]: Started blackbox_exporter.
Jul 20 13:29:30 prometheus-66 blackbox_exporter[20101]: time=2025-07-20T13:29:30.287+..."
Jul 20 13:29:30 prometheus-66 blackbox_exporter[20101]: time=2025-07-20T13:29:30.287+..."
Jul 20 13:29:30 prometheus-66 blackbox_exporter[20101]: time=2025-07-20T13:29:30.288+..."
Jul 20 13:29:30 prometheus-66 blackbox_exporter[20101]: time=2025-07-20T13:29:30.289+...5
Jul 20 13:29:30 prometheus-66 blackbox_exporter[20101]: time=2025-07-20T13:29:30.289+...5
Hint: Some lines were ellipsized, use -l to show in full.
  • 查看端口信息 ip:9115

在这里插入图片描述

blackbox_exporter数据的可视化

添加到prometheus.yml中

  #下面这个是配置get请求检测- job_name: 'blackbox_http_2xx'scrape_interval: 30smetrics_path: /probeparams:#这里的http_2xx要跟blackbox.yml文件中的定义对应起来。module: [http_2xx]static_configs:#下面这个targets是通过http get请求的地址,可以写多个,探讨是否正常- targets:- 10.0.0.66:80- https://www.baidu.comrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__#这里的replacement是指定访问blackbox-exporter服务所在的机器和端口replacement: 127.0.0.1:9115- job_name: 'blackbox_http_post_2xx'scrape_interval: 30smetrics_path: /probeparams:#这里定义通过http post方式探测module: [http_post_2xx]static_configs:#这里定义通过http post方式探测的地址和端口- targets:- 10.0.0.66:8048relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__#这里的replacement是指定访问blackbox-exporter服务所在的机器和端口replacement: 127.0.0.1:9115- job_name: 'blackbox_http_ping'scrape_interval: 30smetrics_path: /probeparams:#这里是定义通过imcp方式进行探测module: [icmp]static_configs:#这里定义通过icmp方式探测的地址- targets:- www.baidu.comrelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 127.0.0.1:9115- job_name: 'blackbox_tcp_connect'scrape_interval: 30smetrics_path: /probeparams:#这里定义通过tcp方式进行服务或端口的探测module: [tcp_connect]static_configs:#这里定义通过tcp进行探测的服务和端口- targets:- 10.0.0.66:80- 10.0.0.66:8048relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 127.0.0.1:9115
  • 一定要语法对齐
  • 然后访问ip:9090

在这里插入图片描述

在这里插入图片描述

看到up的话,表示可以探测到主机和ip的状态的

然后进行查询

在这里插入图片描述

使用grafana数据可视化

grafana官方网站Grafana 仪表板 |Grafana 实验室

在这里插入图片描述

我们导入这个id,就可以看到这个

在这里插入图片描述

docker监控

cadvisor介绍

要监控docker的状态,需要一个软件CAdvisot(Container Advisor)这个是谷歌开源的容器监控和性能分析工具,它是专门为了容器而生,可以用于收集运行的容器资源使用和性能信息。

在这里插入图片描述

  • Cadvisor 不仅可以收集一台机器上所有运行的容器信息,还能提供基础的查询界面和http接口,方便其他组件使用如prometheus进行数据的抓取。
  • Cadvisor 可以对节点机器上的资源及容器进行实时监控和性能数据采取,包括cpu的使用情况,内存使用情况,网络吞吐以及系统文件使用情况。
  • Cadvisor使用的是go语言的开发,利用linux的cgroups获取容器的资源信息,在k8s中集成作为默认的启动项官方标配使用。

用docker方式部署Cadvisor

  • 运行单个Cadvisor来控制整个Docker主机,被监控安装完Docker后就可以添加Cadvisor容器,这里假设被监控主机的ip是10.0.0.100
[root@docker-110 ~]# docker run \
>   --volume=/:/rootfs:ro \
>   --volume=/var/run:/var/run:ro \
>   --volume=/sys:/sys:ro \
>   --volume=/var/lib/docker/:/var/lib/docker:ro \
>   --volume=/dev/disk/:/dev/disk:ro \
>   --publish=8080:8080 \
>   --detach=true \
>   --name=cadvisor \
>   --restart=always \
>   google/cadvisor:latest
06ece2dbfee43b9db090211dd5c9085ab841db80e203821dd1cebabaa4c96942
  • 这样,Cadvisor容器服务就部署完毕,Cadvisor查询页面和http接口,可以访问ip:8080打开web界面

在这里插入图片描述

  • Cadvisor也提供了prometheus访问的接口,可以访问10.0.0.110:8080/metrics

在这里插入图片描述

为了监控172.16.213.31主机基础服务状态,还需要安装node-exporter服务,对node-exporter的安装

  • 部署完后node-exporter服务默认监听在9100端口

配置prometheus

  • 修改配置文件prometheus.yml,默认job断中添加新的主机
    static_configs:- targets: ["localhost:9090"]- job_name: "aliyun.com"static_configs:- targets: ["10.0.0.66:9100","10.0.0.110:9100"]

其中10.0.0.110:9100是新增添的监控主机

接下来在最后一行添加

       - job_name : 'docker'static_configs:- targets: ['10.0.0.110:8080']labels:instance: docker-test
  • 检测一下prometheus.yml配置语法是否正确
[root@prometheus-66 prometheus]# ./promtool check config prometheus.yml 
Checking prometheus.ymlSUCCESS: prometheus.yml is valid prometheus config file syntax

在这里插入图片描述

grafana和prometheus实现监控可视化

  • Grafana是一个开源的指标监测和可视化工具。官方网站为:https://grafana.com/, 常用于展示基础设施的时序数据和应用程序运行分析。Grafana的dashboard展示非常炫酷,绝对是运维提升可视化监控的一大利器。

在这里插入图片描述

  • Grafana还专门为了Dashboard 提供啦一个共享服务。https://grafana.com/dashboards通过该服务用户可以轻松实现Dashboard的共享,同时我们也能够快速的从中找到我们希望的Dashboard实现,并且导入到自己的Grafana中

在这里插入图片描述

  • Enterprise是企业版要收费的

  • oss是开源版本也就是我们俗称的社区版本,主要是免费

  • Grafana的安装非常简单,官方就有软件仓库可以直接使用,也可以通过docker镜像等方式直接本地启动。还可以直接下载rpm包、二进制包进行安装。

  • 大家可以从 https://grafana.com/get 下载Grafana安装包,然后根据需要的系统平台及性能下载即可,官方给出了非常详细的安装方法,例如,要通过rpm包安装在Redhat & Centos平台,可直接执行如下命令:

[root@localhost ~]# wget https://dl.grafana.com/oss/release/grafana-8.3.3-1.x86_64.rpm
[root@localhost ~]#  yum localinstall grafana-8.3.3-1.x86_64.rpm
(3)、安装grafana插件

grafana提供了很多扩展插件,可通过https://grafana.com/grafana/plugins/查看,如果要和zabbix集成,就需要先安装grafana-zabbix插件,grafana官方已经包含了这个插件,直接使用即可。安装之前可以通过grafana-cli plugins list-remote 命令来查看都有什么插件可以安装。操作如下:

[root@localhost ~]# grafana-cli plugins list-remote|grep zabbix      
id: alexanderzobnin-zabbix-app version: 4.2.4

可以看到,有一个名为alexanderzobnin-zabbix-app的zabbix 插件,接着直接在grafana上安装zabbix插件即可,执行如下命令:

[root@localhost ~]# grafana-cli plugins install alexanderzobnin-zabbix-app

执行这个命令需要grafana服务器能够上网,因为它会从外网下载插件包,安装成功之后会提示我们需要重启grafana 服务,以使插件生效。接着,再安装一个clock-panel插件,这个插件是个时钟插件,可以在dashboard上显示时间用。命令如下:

[root@localhost ~]# grafana-cli plugins install grafana-clock-panel

所有需要的插件安装完成后,执行如下命令重启grafana服务:

[root@localhost ~]# systemctl restart grafana-server
获取docker可视化Dashboard

Grafana社区用户分享了大量的Dashboard,可以通过访问 https://grafana.com/dashboards 网站,找到大量可直接使用的Dashboard。推荐几个非常不错的Dashboard,可直接导入Grafana使用。

模板ID模板用途
1860Node Exporter Full
9965Blackbox Exporter 0.14 for Prometheus 监控展示看板
89191 Node Exporter for Prometheus Dashboard CN v20201010
10619Docker Container & Host Metrics
193Docker monitoring
14841Docker monitoring

其中,模板ID为https://grafana.com/grafana/dashboards/ID,将上面ID替换为具体的数字即可访问Dashboard。

修改这个pql查询

在这里插入图片描述

  • 这个8919这个uid的模板我认为是很好的一个模板

在这里插入图片描述

在这里插入图片描述

看到这里记得给我点一个赞哦

完结撒花🌸🌸🌸🌸🌸🌸🌸

http://www.dtcms.com/a/288625.html

相关文章:

  • mysql第三次作业
  • 学习寄存器——GPIO(二)学习BSRR BRR ODR寄存器的原子性和在HAL库的应用
  • 【Go语言-Day 22】解耦与多态的基石:深入理解 Go 接口 (Interface) 的核心概念
  • 【详细笔记】两类曲线积分转换
  • 群组功能实现指南:从数据库设计到前后端交互,上班第二周
  • 【数据结构】揭秘二叉树与堆--用C语言实现堆
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • Docker Desktop 入门教程(Windows macOS)
  • 深度学习图像分类数据集—百种病虫害分类
  • Python绘图小工具开发:从零构建数据可视化利器
  • 股票及金融笔记
  • 如何升级Docker部署的Dify
  • Materials Studio学习笔记(二十九)——尿素的几何优化
  • 私有云新势力:Puter+CPolar如何低成本替代商业网盘?
  • 【Linux性能优化】常用工具和实战指令
  • 小架构step系列20:请求和响应的扩展点
  • 制作mac 系统U盘
  • macOs上交叉编译ffmpeg及安装ffmpeg工具
  • pages.json页面路由中,globalStyle的各个属性
  • RPG62.制作敌人攻击波数二:攻击ui
  • 分布式文件系统04-DataNode海量数据分布式高可靠存储
  • 【LeetCode数据结构】单链表的应用——环形链表问题详解
  • 【PTA数据结构 | C语言版】哈夫曼树的实现
  • UDP中的单播,多播,广播
  • 【RAG Agent】Deep Searcher实现逻辑解析
  • 【Unity3D实例-功能-移动】角色移动-通过WSAD(CharacterController方式)
  • 【STM32实践篇】:串口通信
  • Qwen3-8B 的 TTFT 性能分析:16K 与 32K 输入 Prompt 的推算公式与底层原理详解
  • 吴恩达机器学习笔记(3)—线性代数回顾(可选)
  • 【Django】DRF API版本和解析器