Prometheus监控主机进程

前言

客户端安装及配置

Premetheus服务端配置

模板导入

grafana效果图


前言

此场景主要是利用process-export监控主机的进程存活、资源占用率,防止进程挂掉导致服务崩溃

gitlab地址:GitHub - ncabatoff/process-exporter: Prometheus exporter that mines /proc to report on selected processes

tgz包:

process-exporter 下载地址

process-exporter-0.7.5.linux-amd64.tar.gz

客户端安装及配置

1.将包上传至/opt目录

2.tar -zxvf解压

3.mv重命名为 process-exporter

4.touch一个规则文件:process_name.yaml

如下截图:

编辑规则文件:

当前要监控的进程是vsftpd

vim /opt/process-exporter/process_name.yaml
process_names:
  - name: "{{.Matches}}"
    cmdline:
    - 'vsftpd' #唯一标识
  - name: "{{.Matches}}"
    cmdline:
    - 'httpd' #唯一标识

 规则参数解释:

 启动脚本配置:

[root@bogon /opt/process-exporter]# cat /usr/lib/systemd/system/process_exporter.service



 
[Unit]
Description=Prometheus exporter for processors metrics, written in Go with pluggable metric collectors.
Documentation=https://github.com/ncabatoff/process-exporter
After=network.target
  
[Service]
Type=simple
User=root
WorkingDirectory=/opt/process-exporter
ExecStart=/opt/process-exporter/process-exporter -config.path=/opt/process-exporter/process_name.yaml
Restart=on-failure
  
[Install]
WantedBy=multi-user.target

加入开机自启:

systemctl daemon-reload
systemctl start process_exporter
systemctl enable process_exporter

Premetheus服务端配置

添加targets,端口为9256

测试端口:established表示建立连接

添加进程告警规则:

  - alert: 进程重启告警
    expr: ceil(time() - max by(cluster, job, instance, groupname) (namedprocess_namegroup_oldest_start_time_seconds)) < 60
    for: 30s
    labels:
      label: alert_once
      severity: warning
    annotations:
      value: 进程 {{ $labels.groupname }} 在 {{ $value }} 秒前发生重启

  - alert: 进程退出告警
    expr: up{export="process_exporter"} == 0 or max by(cluster, job, instance, groupname) (delta(namedprocess_namegroup_oldest_start_time_seconds{groupname=~"^map.*"}[10d])) < 0
    for: 60s
    labels:
      severity: warning
    annotations:
      value: 进程 {{ $labels.export}} 已退出

重启prometheus,我这边是docker部署,所以方式是:

docker restart monitor_prometheus_1 

docker restart prometheus-alert

模板导入

Named processes by host | Grafana Labs

下载这个json后导入

grafana效果图

部署prometheus可以参考文章:

docker部署监控Prometheus+Grafana_docker安装prometheus grafana-优快云博客

docker-compose部署Prometheus+Alertmanager并配置企业微信告警_alertmanager docker-compose-优快云博客

Docker部署Prometheus+AlertManager实现邮件告警_docker部署的prometheus如何发送告警-优快云博客

prometheus 监控告警系统(对接飞书告警)_prometheus-operator 飞书告警-优快云博客

prometheus+alertmanager告警消息对接企业微信、飞书、钉钉_alertmanager对接企业微信-优快云博客

### 使用 Prometheus 监控进程并实现告警配置 #### 安装和启动 Node Exporter 为了使 Prometheus 能够收集有关主机及其进程的信息,通常会在目标机器上安装 `node_exporter`。通过检查 `/etc/systemd/system/node-exporter.service` 文件可以确认服务单元文件的内容[^2]: ```ini [Unit] Description=Prometheus Node exporter After=network.target [Service] ExecStart=/opt/monitoring/node_exporter [Install] WantedBy=multi-user.target ``` 这表明 node_exporter 将作为 systemd 服务运行,在网络准备就绪之后启动。 #### 配置 Prometheus 抓取节点数据 接下来需要编辑 Prometheus 的配置文件(通常是 `prometheus.yml`),添加 job 来抓取来自 node_exporter 的指标。这部分涉及指定静态配置中的 targets 和 labels: ```yaml scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100'] labels: instance: my_instance_label ``` 上述 YAML 片段定义了一个名为 "node" 的作业,它会定期从本地的 node_exporter 实例获取度量标准,默认端口为 9100。 #### 设置告警规则 创建一个新的告警规则文件 (例如 `alert.rules`) 或者修改现有的规则集来增加针对特定进程状态变化触发的通知条件。下面是一个简单的例子,当某个重要进程不再存在时发出警告: ```yaml groups: - name: process_monitoring rules: - alert: ProcessDown expr: absent(process_start_time_seconds{job="node",name=~"important_process"}) for: 5m labels: severity: critical annotations: summary: "{{ $labels.name }} is down on {{ $labels.instance }}" description: "Process has been down for more than 5 minutes." ``` 这段代码片段设置了如果在过去五分钟内未检测到名称匹配的重要进程,则触发告警通知,并附带详细的描述信息[^1]。 #### 整合 Alertmanager 处理告警消息 最后一步是确保已经正确配置好了 Alertmanager 接收由 Prometheus 发送过来的告警事件,并按照预设的方式分发给相关人员或系统。一旦完成了这些步骤,就可以验证整个流程是否正常工作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值