夜莺采集prometheus各服务监控指标

本文介绍Prometheus导出器如prometheus-exporter-collector、redis_exporter及blackbox_exporter的安装与配置方法,包括服务构建、配置参数设置等关键技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

prometheus-exporter-collector 服务安装与配置
服务构建
mkdir -p $GOPATH/src/github.com/n9e
cd $GOPATH/src/github.com/n9e
git clone https://github.com/n9e/prometheus-exporter-collector.git

git clone https://github.com.cnpmjs.org/n9e/prometheus-exporter-collector.git
cd prometheus-exporter-collector
go build
cat plugin.test.json | ./prometheus-exporter-collector
服务配置参数
以下为demo模板

Name type Description
exporter_urls array promethus采集metric的地址
append_tags array 默认为空,建议使用可具有代表性意义的tag,比如region=aliyun.huabei3.zhangjiakou.az.A,就能知道这台服务器在哪个位置上报的数据
endpoint string 如不填写,则默认使用collecter所在的主机,也就是本机
ignore_metrics_prefix array 忽略metrics不采集的监控指标
timeout int 超时时间,默认500ms
metric_prefix string 上报时,可添加前缀组装成新的监控指标,便于区分和检索记忆
metric_type map gauge/counter,metric类型与夜莺的类型一样,untyped类型需要用到此字段进行类型转换,需关注差值计算方式,与上一周期的值做比较
启动服务配置
暂时不需要设置

注意: 在界面配置时,prometheus-exporter-collector服务的执行路径必须要保持一致,否则采集会有异常.
对于在使用 open-falcon 的用户,你也可以通过 prometheus-exporter-collector 将收集到的数据发送给 open-falcon。

./prometheus-exporter-collector -h
Usage: ./prometheus-exporter-collector [-h] [-b backend] [-s step]

Options:
-b string
send metrics to backend: n9e, falcon (default “n9e”)
-h help
-s int
set default step of falcon metrics (default 60)
-b falcon: 以 open-falcon 作为数据接收方
-s 60: metric 的 step 设置为60s
下面是一个具体的例子:通过 prometheus-exporter-collector, 获取 redis-exporter 的metrics,并发送给 open-falcon。

  1. 下载和编译 redis_exporter
    git clone https://github.com/oliver006/redis_exporter.git
    cd redis_exporter
    go build .
    ./redis_exporter --version
    ./redis_exporter -redis.addr redis://127.0.0.1:6379

//注意,请先确保 redis 已成功运行在127.0.0.1:6379 上。
这样,就可以看到 redis_exporter 已经成功运行,并监听在 :9121/metrics 。

  1. 运行 prometheus-exporter-collector 并发送数据给 open-falcon
    检查prometheus-exporter-collector的配置文件,确保 exporter_urls 设置为 http://127.0.0.1:9121/metrics
    $ cat plugin.test.json

{
“exporter_urls”: [
“http://127.0.0.1:9121/metrics”
],
“append_tags”: [“region=bj”, “dept=cloud”],
“endpoint”: “127.0.0.100”,
“ignore_metrics_prefix”: [“go_”],
“metric_prefix”: “”,
“metric_type”: {},
“default_mapping_metric_type”: “COUNTER”,
“timeout”: 500
}
运行prometheus-exporter-collector,将输出发送给本机的 falcon-agent
cat plugin.test.json | ./prometheus-exporter-collector -b falcon -s 60 | curl -X POST -d @- http://127.0.0.1:1988/v1/push

服务构建
mkdir -p $GOPATH/src/github.com/n9e
cd $GOPATH/src/github.com/n9e
git clone https://github.com/n9e/prometheus-exporter-collector.git

git clone https://github.com.cnpmjs.org/n9e/prometheus-exporter-collector.git
cd prometheus-exporter-collector
go build
cat plugin.test.json | ./prometheus-exporter-collector
服务配置参数
以下为demo模板

Name type Description
exporter_urls array promethus采集metric的地址
append_tags array 默认为空,建议使用可具有代表性意义的tag,比如region=aliyun.huabei3.zhangjiakou.az.A,就能知道这台服务器在哪个位置上报的数据
endpoint string 如不填写,则默认使用collecter所在的主机,也就是本机
ignore_metrics_prefix array 忽略metrics不采集的监控指标
timeout int 超时时间,默认500ms
metric_prefix string 上报时,可添加前缀组装成新的监控指标,便于区分和检索记忆
metric_type map gauge/counter,metric类型与夜莺的类型一样,untyped类型需要用到此字段进行类型转换,需关注差值计算方式,与上一周期的值做比较
启动服务配置
暂时不需要设置

redis_exporter 服务监控安装与配置
redis 服务安装与配置
yum -y install redis
vi /etc/redis.conf
daemonize yes

systemctl enable redis && systemctl restart redis && systemctl status redis
服务构建
git clone https://github.com/oliver006/redis_exporter.git

git clone https://github.com.cnpmjs.org/oliver006/redis_exporter.git
cd redis_exporter
go build .
./redis_exporter --version
启动服务配置
cat > /usr/lib/systemd/system/redis_exporter.service <<EOF
[Unit]
Description=Nightingale collector for redis_exporter
Documentation=https://github.com/oliver006/redis_exporter
After=network-online.target
Wants=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/opt/redis_exporter/redis_exporter -redis.addr 127.0.0.1:6379
WorkingDirectory=/opt/redis_exporter
Restart=always
RestartSec=1
StartLimitInterval=0

[Install]
WantedBy=multi-user.target
EOF
设置服务开机启动
systemctl enable redis_exporter && systemctl restart redis_exporter && systemctl status redis_exporter
本机获取 redis 监控数据
使用以下命令可获取到redis的监控数据
curl http://127.0.0.1:9121/metrics
stdin
因部署的监控机资源不足(1C1G1M,承受了不该承受的压力…),找了一个死基佬的阿里云机器并部署了 redis 服务和 redis_exporter 服务以及 prometheus-exporter-collector 服务
因不在同一个局域网,所以需走公网调用,映射 9121 端口
修改解析:

{
“exporter_urls”: [
“http://aliyun-prometheus-exporter-redis.cqops.club:9121/metrics”
],
“append_tags”: [“region=aliyun.huabei3.zhangjiakou.az.A”, “dept=cloud”],
“endpoint”: “172.26.155.228”,
“ignore_metrics_prefix”: [“go_”],
“metric_prefix”: “”,
“metric_type”: {},
“timeout”: 500
}
redis 服务监控指标
监控阀值调整是一个长期过程,建议先不设置告警通道,待监控数据采集完成并运行一段时间后,根据当前的数据乘以2倍产生阀值.总之,监控的阀值需要自己根据实际的业务场景进行设置,以下表中如包含了阀值仅供参考和借鉴

key/counters type tag 告警触发条件 监控指标备注 告警阀值说明
redis_connected_clients gauge - all(#3)>5000 已连接客户端的数量 -
redis_blocked_clients gauge - all(#3)>5000 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数 -
redis_memory_used_bytes gauge - all(#3)>32212254720 由 Redis 分配器分配的内存总量,以字节(byte)为单位 单实例使用30G,建议拆分扩容;对fork卡停,full_sync时长都有明显性能影响
redis_memory_used_peak_bytes gauge - - 内存峰值 -
redis_mem_fragmentation_ratio gauge - all(#3)>2 used_memory_rss 和 used_memory 之间的比率 内存碎片过高(如果实例比较小,这个指标可能比较大,不实用)
redis_commands_processed_total counter - - 执行命令总数和qps -
redis_rejected_connections_total counter - - 采集周期内拒绝连接总数 -
redis_keyspace_misses_total counter - - 采集周期内key拒绝总数 -
redis_keyspace_hits_total gauge - - 访问命中率 -
redis_aof_enabled gauge - all(#3)!=0 appenonly是否开启,appendonly为yes则为1,no则为0 -
redis_cluster_enabled gauge - all(#3)!=0 是否启用Redis集群模式,0未启用,1启用 -
redis_rdb_last_bgsave_status gauge - all(#3)!=0 最近一次rdb持久化是否成功 -
redis 服务 grafana 看板
https://grafana.com/dashboards/9338
https://grafana.com/dashboards/763
blackbox_exporter 服务监控安装与配置
使用场景
blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http、dns、tcp、icmp 的监控数据采集。

HTTP 测试: 定义 Request Header 信息、判断 Http status / Http Respones Header / Http Body 内容
TCP 测试: 业务组件端口状态监听、应用层协议定义与监听
ICMP 测试: 主机探活机制
POST 测试: 接口联通性
SSL证书过期时间
构建
下载
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.16.0/blackbox_exporter-0.16.0.linux-amd64.tar.gz
tar -zxvf blackbox_exporter-0.16.0.linux-amd64.tar.gz -C /opt/blackbox_exporter
验证是否安装成功
cd /opt/blackbox_exporter
./blackbox_exporter --version

blackbox_exporter, version 0.16.0 (branch: HEAD, revision: 991f89846ae10db22a3933356a7d196642fcb9a9)
build user: root@64f600555645
build date: 20191111-16:27:24
go version: go1.13.4
设置执行权限
chown -R root.root /opt/blackbox_exporter/blackbox_exporter
chown -R root.root /opt/blackbox_exporter/blackbox.yml
服务启动脚本
cat >> /usr/lib/systemd/system/blackbox_exporter.service << EOF
[Unit]
Description=Prometheus blackbox exporter
After=network-online.target
Wants=network-online.target

[Service]
User=root
Type=simple
ExecStart=/opt/blackbox_exporter/blackbox_exporter --config.file=/opt/blackbox_exporter/blackbox.yml --web.listen-address=0.0.0.0:9115 --log.level=error
WorkingDirectory=/opt/blackbox_exporter
Restart=always
RestartSec=1
StartLimitInterval=0

[Install]
WantedBy=multi-user.target
EOF
启动服务
systemctl daemon-reload && systemctl enable blackbox_exporter && systemctl restart blackbox_exporter && systemctl status blackbox_exporter
blackbox_exporter 配置
配置文件为/opt/blackbox_exporter/blackbox.yml

[root@jarvis blackbox_exporter]# cat blackbox.yml
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_status_codes: [200,301,302,101]
method: GET
no_follow_redirects: yes
fail_if_ssl: false
fail_if_not_ssl: false
preferred_ip_protocol: ip4

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
web访问
http://aliyun-prometheus-exporter.cqops.club:9115/
metrics 信息
http://aliyun-prometheus-exporter.cqops.club:9115/metrics
接口请求
curl http://aliyun-prometheus-exporter.cqops.club:9115/probe?module=http_2xx&target=www.baidu.com&debug=true
curl http://aliyun-prometheus-exporter.cqops.club:9115/probe?module=http_2xx&target=www.baidu.com
测试配置文件内容是否正确
//blackbox_exporter/blackbox_exporter --config.check

<think>我们正在讨论夜莺监控的采集插件功能,特别是与PrometheusBlackbox的对比。用户想知道夜莺采集插件是否具备与Prometheus Blackbox相同的功能,即能否实现相同的监控采集效果。根据引用内容:引用[1]提到Prometheus是一个功能齐全的一站式监控告警平台,特别提到它对云或容器的监控支持,而其他系统主要对主机监控。同时,它指出Prometheus在数据存储扩展性和持久性方面不如InfluxDB等。但这里没有直接提到Blackbox。引用[2]中提到了夜莺生产环境部署中配置了blackbox,并提到重启nightingale-prometheus-0 pod以重载配置,然后在Prometheus的targets中查看信息,还特别指出1.7blackbox中验证。这说明夜莺在生产部署中使用Prometheus的Blackbox Exporter。引用[3]则提到夜莺的HTTP状态码告警,通过调用一个Python脚本(notify.py)进行通知,并展示了钉钉群机器人通知预览。这里没有直接涉及采集插件。结合以上引用,我们可以推断:夜莺本身并没有内置一个完全等同于Prometheus Blackbox Exporter的采集插件,但它可以集成Prometheus Blackbox Exporter。因为夜莺的底层数据采集可以使用Prometheus,而Blackbox Exporter是Prometheus生态中常用的黑盒监控工具。因此,夜莺监控采集插件本身可能不具备原生的Blackbox功能,但通过集成PrometheusBlackboxExporter,可以实现相同的监控采集效果。具体来说:1.夜莺支持使用Prometheus作为数据源,因此可以配置Prometheus去抓取Blackbox Exporter的指标。2.在夜莺的配置中,可以像引用[2]那样,通过配置Prometheus的scrape_config来使用BlackboxExporter,然后重启Prometheus实例(在夜莺部署中可能是nightingale-prometheus)来加载配置。3.这样,夜莺就可以利用BlackboxExporter进行黑盒监控(如HTTP、TCP、ICMP等探测),并获取这些指标数据。所以,回答应该是:夜莺监控采集插件本身不直接提供与Prometheus Blackbox完全相同的功能,但可以通过集成PrometheusBlackboxExporter来实现相同的监控采集效果。接下来,我们按照要求组织回答:</think>### 夜莺监控采集插件与 Prometheus Blackbox 的功能对比 夜莺监控采集插件**本身不直接包含与 Prometheus Blackbox 完全相同的功能**,但可以通过集成方案实现等效的监控采集效果。具体分析如下: #### 一、功能差异对比 | **功能维度** | **Prometheus Blackbox** | **夜莺采集插件** | **实现方案** | |----------------------|--------------------------------------------------|--------------------------------------|-----------------------------------------------------------------------------| | **HTTP/HTTPS 探测** | ✅ 支持状态码、响应时间、内容匹配等 | ❌ 原生不支持 | 通过集成 Blackbox Exporter[^2] | | **TCP 端口检测** | ✅ 支持连接时间、TLS 证书校验 | ❌ 原生不支持 | 使用 `netcat` 自定义脚本或集成 Blackbox | | **ICMP 探测** | ✅ 支持 Ping 延迟、丢包率 | ⚠️ 有限支持(需自定义) | 调用系统 `ping` 命令 + 脚本解析 | | **DNS 查询验证** | ✅ 支持解析时间、记录匹配 | ❌ 原生不支持 | 需自定义 DNS 查询脚本 | | **SSH 协议检查** | ✅ 支持协议握手验证 | ❌ 原生不支持 | 通过 `expect` 脚本模拟登录 | #### 二、夜莺实现等效监控的方案 1. **集成 Blackbox Exporter(推荐方案)** ```yaml # 夜莺Prometheus 配置(prometheus.yaml) scrape_configs: - job_name: 'blackbox' metrics_path: /probe params: module: [http_2xx] # 使用HTTP检测模块 static_configs: - targets: - http://target1:80 - https://target2:443 relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: blackbox:9115 # Blackbox Exporter地址 ``` 配置完成后重启 `nightingale-prometheus` Pod 生效[^2] 2. **自定义脚本采集(替代方案)** ```bash # 示例:HTTP状态检测脚本 curl -s -o /dev/null -w "%{http_code}" https://example.com | \ awk '{if ($1 != 200) exit 1}' ``` 在夜莺 Agent 配置: ```json { "collectors": [ { "name": "http_check", "command": "/opt/scripts/http_check.sh", "interval": 30 } ] } ``` #### 三、关键能力对比 1. **协议支持** - Blackbox 提供开箱即用的多协议支持(HTTP/HTTPS/TCP/ICMP/DNS等) - 夜莺需通过插件扩展实现,开发成本较高 2. **指标丰富度** - Blackbox 提供 20+ 专业指标(如 `probe_duration_seconds`, `probe_ssl_earliest_cert_expiry`) - 夜莺自定义脚本通常只能返回基础状态值 3. **配置便捷性** ```mermaid graph LR A[Blackbox] -->|单点配置| B[多目标探测] C[夜莺原生] -->|每个目标| D[独立脚本配置] ``` Blackbox 通过模块化配置显著降低管理复杂度 #### 四、最佳实践建议 1. **生产环境部署** ```bash # 在K8s中部署Blackbox sidecar kubectl apply -f https://raw.githubusercontent.com/prometheus/blackbox_exporter/master/example.yml ``` 2. **夜莺告警配置** ```sql -- 使用SQL模板设置HTTP告警 SELECT * FROM metrics WHERE name='probe_success' AND value=0 AND tags LIKE '%service=critical%' ``` 通过引用[^3]的 `notify.py` 脚本实现告警通知 3. **性能优化** - 单个 Blackbox 实例可承载 1000+ 目标探测 - 自定义脚本方案需注意资源消耗(建议 >30s 间隔) > **结论**:夜莺可通过集成 Prometheus Blackbox Exporter 实现专业级网络探测能力,其原生采集插件更适合主机级指标监控。对于需要 ICMP/DNS/SSH 等高级协议监控的场景,集成方案是生产环境首选[^1][^2]。 --- ### 相关问题 1. 如何在 Kubernetes 环境中为夜莺部署 Blackbox Exporter? 2. 夜莺自定义监控脚本的开发规范和安全限制有哪些? 3. 如何通过夜莺实现类似 Blackbox 的 SSL 证书过期监控? 4. 夜莺与 Blackbox 集成时如何避免监控目标重复采集? 5. 对于大规模网络探测场景,如何优化 Blackbox 的性能配置?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值