温馨提示×

centos进程监控系统搭建指南

小樊
44
2025-11-16 01:54:56
栏目: 智能运维

CentOS 进程监控系统搭建指南

一 目标与总体架构

  • 目标:实现对关键进程的存活监控自动拉起资源使用可视化告警
  • 推荐架构:
    • 主机级:使用 systemd 托管业务进程,配合 journalctl 查看日志;用 MonitShell+Cron 做进程存活与自动重启;用 Prometheus Node Exporter + Grafana 做可视化与指标告警。
    • 快速可用性:临时或轻量场景可用 Supervisor 托管进程,自带 Web 管理界面。
    • 命令行巡检:日常排查用 top/htop/ps/vmstat/iostat/pidstat/dstat/glances 等工具。

二 快速上手 命令行巡检与即时监控

  • 安装常用工具(EPEL 源按需启用):
    • sudo yum install -y epel-release
    • sudo yum install -y htop dstat sysstat glances atop
  • 常用命令:
    • 实时进程与资源:top/htop;全量快照:ps aux;线程/CPU/内存细粒度:pidstat -p ALL 1;综合资源:dstat、glances、atop;磁盘 I/O:iostat -x 1;历史与系统活动:sar 1 5。

三 进程保活与自动重启

  • 方案 A Monit(推荐,带告警与 Web)

    • 安装:sudo yum install -y monit
    • 配置要点(/etc/monitrc 示例片段):
      • set daemon 60
      • set logfile /var/log/monit.log
      • set mailserver smtp.example.com port 587 username USER password PASS
      • set alert admin@example.com
      • set httpd port 2812 and use address 0.0.0.0 allow admin:monit
      • 监控进程示例:
        • check process myapp with pidfile /var/run/myapp.pid start program = “/usr/bin/systemctl start myapp” stop program = “/usr/bin/systemctl stop myapp” if failed host 127.0.0.1 port 8080 then restart if 5 restarts within 5 cycles then timeout
    • 启动:sudo systemctl enable --now monit;访问 http://服务器IP:2812(账号 admin/monit)。
  • 方案 B Shell + Cron(极简可用)

    • 监控脚本 monitor.sh(示例监控进程名为 myapp):
      • #!/bin/bash proc=“myapp” log=“/var/log/monit_myapp.log” pid=$(pgrep -x “$proc”) if [ -z “$pid” ]; then systemctl start myapp || /usr/bin/myapp & echo “$(date): restarted $proc, new pid=$!” >> “$log” fi
    • 赋权与定时:
      • chmod +x /root/monitor.sh
      • crontab -e 加入:*/1 * * * * /root/monitor.sh
    • 建议:脚本中记录 PID 与重启时间,便于审计与排障。
  • 方案 C Supervisor(进程托管与 Web 界面)

    • 安装:sudo yum install -y supervisor(或 pip 安装)
    • 配置:/etc/supervisord.conf 或 /etc/supervisor.d/myapp.ini
      • [program:myapp] command=/usr/bin/myapp directory=/opt/myapp autostart=true autorestart=true stderr_logfile=/var/log/myapp.err.log stdout_logfile=/var/log/myapp.out.log
    • 常用命令:supervisorctl status/start/stop/restart myapp;Web 界面默认端口 9001(需启用并配置认证)。

四 可视化与告警 Prometheus Grafana Node Exporter

  • 组件与端口:
    • Node Exporter:主机指标采集,端口 9100
    • Prometheus:时序数据库与告警规则,端口 9090
    • Grafana:可视化与仪表盘,端口 3000
  • 部署步骤(示例以二进制为例,也可用 Docker):
    • Node Exporter
      • 下载解压并安装为系统服务(/usr/lib/systemd/system/node_exporter.service),启动:systemctl enable --now node_exporter
    • Prometheus
      • 配置 prometheus.yml:
        • scrape_configs:
          • job_name: ‘node’ static_configs:
            • targets: [‘localhost:9100’]
      • 启动:./prometheus --config.file=prometheus.yml
    • Grafana
      • 启动后访问 http://服务器IP:3000,默认账号 admin/admin
      • 添加数据源:URL http://localhost:9090
      • 导入官方或社区仪表盘(如 Node Exporter Full),即可查看 CPU、内存、磁盘、网络 与进程相关指标
  • 告警思路
    • 在 Prometheus 配置 告警规则(如 Node 宕机、CPU/内存阈值),通过 Alertmanager 对接邮件/企业微信/钉钉/Slack 等通道。

五 生产落地与维护建议

  • 统一托管:优先使用 systemd 管理业务进程,配合 journalctl -u 服务名 集中查看日志,便于排障与审计。
  • 分层监控:主机层用 Node Exporter + Grafana 做可视化;进程存活与自愈用 MonitSupervisor;临时应急用 Shell+Cron
  • 告警分级:区分 P0/P1/P2,P0(进程宕机、端口不可达)即时通知,P1(资源阈值)限频告警,避免告警疲劳。
  • 安全加固:暴露 Grafana 3000Monit 2812 等管理端口时启用强认证与 IP 白名单;Prometheus 抓取目标按最小权限配置。
  • 容量与保留:合理设置 Prometheus 数据保留日志轮转(journald、应用日志),避免磁盘被占满。
  • 版本与源:生产环境优先使用 稳定版 组件,EPEL/官方仓库可用时尽量使用包管理器安装,减少维护成本。

0