从零开始搭建监控系统 (三) 指标采集

从零开始搭建监控系统 (三) 指标采集

背景

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

exporters

dashboard

Dashboard id 填写为 8378

port-8378

system-metrics

指标展示

metrics-host

1.CPU 使用率

cpu-use-avg

2.Memory 使用率

mem-use-avg

3. 磁盘IO

disk-use-avg

Others

  1. 当采集指标不全,且未涉及到服务本身时, 需使用以下方式部署

    下载 官方process-exporter

    git clone https://github.com/ncabatoff/process-exporter.git
    
  2. 将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无法发现该服务,无法获取进程指标)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值