温馨提示×

如何使用CentOS Syslog进行性能监控

小樊
33
2025-12-17 12:38:03
栏目: 智能运维

使用 CentOS Syslog 进行性能监控的可落地方案

一、总体思路

  • Syslog 本身不直接采集性能指标,但可作为“统一通道”承载由监控工具或脚本产生的告警与状态信息。常见做法是:用监控工具采集指标并生成日志/告警,通过 rsyslog 按设施与级别写入本地或远程日志,再用 Logwatch/ELK/Prometheus+Grafana 做汇总、可视化与告警。为降低对业务的影响,建议对 Syslog 做异步写入、合理日志级别与日志轮转等性能优化。

二、快速落地步骤

  • 步骤1 安装并启用 rsyslog
    • 确认或安装服务:sudo yum install -y rsyslog && sudo systemctl enable --now rsyslog
  • 步骤2 配置日志分类与本地落地
    • 在 /etc/rsyslog.d/ 下新增例如 10-performance.conf,按“设施/级别”将性能相关日志分流,便于后续分析与容量规划:
      • 将性能告警统一到 local0.warning:
        • :syslogtag, isequal, “perf:” /var/log/perf-alert.log
        • :syslogtag, isequal, “perf:” ~
      • 将内核/系统性能相关(如内核日志)单独落盘:
        • kern.warning /var/log/kernel-perf.log
        • kern.warning ~
  • 步骤3 配置日志轮转(避免磁盘被撑满)
    • 新建 /etc/logrotate.d/perf,示例(按日轮转、保留 7 天、压缩):
      • /var/log/perf-alert.log, /var/log/kernel-perf.log {
        • daily
        • rotate 7
        • compress
        • missingok
        • notifempty
        • create 0644 root root
        • sharedscripts
        • postrotate
          • /usr/bin/systemctl kill -s HUP rsyslog >/dev/null 2>&1 || true
        • endscript
      • }
  • 步骤4 远程集中监控(可选)
    • 在“日志服务器”启用接收:在 /etc/rsyslog.conf 取消注释并加载模块
      • module(load=“imudp”); input(type=“imudp” port=“514”)
      • module(load=“imtcp”); input(type=“imtcp” port=“514”)
    • 在“业务主机”将性能类日志发往服务器(示例为 TCP):
      • :syslogtag, isequal, “perf:” @@192.0.2.10:514
    • 防火墙放行:sudo firewall-cmd --permanent --add-port=514/{udp,tcp} && sudo firewall-cmd --reload
  • 步骤5 验证
    • 发送测试性能告警:logger -t perf “cpu_load=95% mem=88% disk=/var=92%”
    • 查看本地与远程是否落盘:tail -f /var/log/perf-alert.log;服务器端检查按主机/程序分发的日志目录。

三、将性能数据送入 Syslog 的三种常用方式

  • 方式A 轻量脚本 + logger(快速接入)
    • 采集脚本(示例):
      • #!/usr/bin/env bash
        • ts=$(date ‘+%F %T’)
        • cpu=$(awk ‘/^cpu /{printf “%.1f”, 100-($5*100/($1+$2+$3+$4+$5))}’ /proc/stat)
        • mem=$(free | awk ‘/Mem/{printf “%.1f”, $3/$2*100}’)
        • disk=$(df / | awk ‘NR==2{printf “%.1f”, $5}’)
        • echo “$ts cpu=$cpu mem=$mem disk=$disk” | logger -t perf -p local0.warning
    • 定时采集:crontab -e 加入
      • */5 * * * * /usr/local/bin/perf_report.sh
    • 说明:通过 logger 的 -t 标签-p 设施.级别 将性能数据打上统一标识,便于 rsyslog 分流与后续检索。
  • 方式B Glances 输出到 Syslog(开箱即用)
    • 安装:sudo yum install -y glances
    • 运行:glances -w(以 Web 服务模式运行,结合告警规则可触发日志/通知;也可结合其 Syslog 通知能力将阈值告警送入 local0)
    • 适用场景:需要更全面的资源监控(CPU、内存、磁盘、网络、进程)并快速接入告警通道。
  • 方式C 日志分析报表(事后性能趋势)
    • 安装 Logwatch:sudo yum install -y logwatch
    • 生成报告(示例):/usr/sbin/logwatch --service All --range yesterday --detail High --mailto you@example.com
    • 说明:适合做“日/周”性能与异常趋势汇总,而非实时告警。

四、可视化与告警

  • 集中化与可视化
    • 小规模:继续用 rsyslog 集中落盘,配合 Logwatch 做日报/周报。
    • 中大规模:将 Syslog 接入 ELK(Elasticsearch+Logstash+Kibana)Graylog,在 Kibana/Grafana 中做面板与阈值告警,统一展示多主机性能告警与趋势。
  • 安全与基线
    • 仅开放必要端口(如 514/UDP/TCP),为日志目录设置最小权限,定期审计与归档关键日志,满足合规与取证需求。

五、Syslog 性能优化要点

  • 降低日志噪声:将采集脚本与监控工具的日志级别控制在 warning/err,避免 debug 洪泛。
  • 启用异步与队列:在 rsyslog 配置中使用高级队列(action queue)与异步写入,避免阻塞业务。
  • 精简规则:合并/删除无效规则,减少不必要的输出目标与动作。
  • 合理轮转与压缩:使用 logrotate 控制单文件大小与保留天数,压缩历史日志节省空间。
  • 传输可靠性:跨机房/跨公网优先 TCP 514,必要时启用 TLS 加密传输。
  • 资源限制:通过 systemd 为 rsyslog 设置文件描述符上限与内存限制,防止异常膨胀影响系统。
  • 持续分析:定期审计日志量与处理时延,针对高频来源做采样或降噪。

0