当前位置: 首页 > 工具软件 > n9e-probe > 使用案例 >

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

黄博艺
2023-12-01

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

 类似资料: