从零开始搭建监控系统 (三) 指标采集
背景
Node Exporter
就可以用来采集机器的各项指标,从而监控机器的状态。
如果机器上运行了一些小脚本,想要对其进行监控但又不想用上一些在代码里做信息采集的SDK那么重,比如只是单纯想要监控该脚本是否一直在运行,那么Process-Exporter
会是一个现成的好选择。
如名所示,Process-Exporter 就是用来监控进程的,其中一项能力,便是监控进程的状态
文件目录
process-exporter-gitee
├── docker-compose.yml # 部署容器服务文件
├── dockerfile # 构建镜像文件
├── LICENSE
├── process-exporter # 二进制执行文件
├── process-name.yaml # 监控服务配置
└── README.md
部署
构建镜像
查看dockerfile
文件
root@chuango:/home/wcq/process-exporter# cat dockerfile
FROM debian:10
WORKDIR /opt/process
COPY process-name.yaml .
COPY process-exporter .
RUN chmod 777 process-exporter
EXPOSE 9256
CMD ["./process-exporter", "-config.path", "process-name.yaml"]
构建镜像: docker build . -t process-exporter:v1
部署服务
root@chuango:/home/wcq/process-exporter# cat docker-compose.yml
version: '3'
services:
process_metric:
container_name: "process_metric"
restart: always
image: "dc01.iotdreamcatcher.net.cn:6443/public/process-exporter:v1"
volumes:
- "./process-name.yaml:/opt/process/process-name.yaml"
ports:
- 9256:9256
networks:
default:
networks:
default:
external:
name: prometheus_default # 使用与promethues相同的网络, 便于prometheus发现
部署服务: docker-compose up -d
查看正常日志输出
root@chuango:/home/wcq/process-exporter# docker logs -f process_metric
2023/05/26 01:30:38 Reading metrics from /proc based on "process-name.yaml"
# 测试服务采集指标正常
wcq@chuango:~/process-exporter$ curl http://localhost:9256/metrics
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
go_gc_duration_seconds{quantile="1"} 0
go_gc_duration_seconds_sum 0
go_gc_duration_seconds_count 0
....
配置到promethues服务发现
root@chuango:/opt/prometheus# cat prometheus.yml
global:
scrape_interval: 15s # 默认抓取周期
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'node-exporter' #服务的名称
scrape_interval: 5s
metrics_path: /metrics #获取指标的url
static_configs:
- targets: ['192.168.1.113:9100']
- job_name: 'process'
static_configs:
- targets: ['192.168.1.113:9256']
重启promethues
服务
root@chuango:/opt/prometheus# docker-compose restart
dashboard
Dashboard id
填写为 8378
指标展示
1.CPU 使用率
2.Memory 使用率
3. 磁盘IO
Others
-
当采集指标不全,且未涉及到服务本身时, 需使用以下方式部署
下载 官方
process-exporter
git clone https://github.com/ncabatoff/process-exporter.git
-
将process-name.yaml 文件写入 config文件下
docker run -itd --rm -p 9256:9256 --privileged --name process --cpu-period 1000000 --cpu-quota 50000 --network net-dcv2 --network-alias process-exporter -v /proc:/host/proc -v `pwd`/config:/config dc01.iotdreamcatcher.net.cn:6443/public/process-exporter:v3 --procfs /host/proc -config.path config/process-name.yaml
- –cpu-period 设置每个容器进程的调度周期: 1000000(1s)
- –cpu-quota 设置在每个周期内容器能使用的
CPU
时间: 50000(0.05s) 占用时间越少,cpu
使用率越低
ISSUE
使用process-exporter
服务进行进程的指标采集时,容易占用cpu
过高(20%),导致该服务器CPU
不足,触发告警(过低:cpu
占用低于15%,服务运行时间过长,导致prometheus
无法发现该服务,无法获取进程指标)。