温馨提示×

Ubuntu Syslog如何集成到监控系统

小樊
35
2025-12-20 22:10:41
栏目: 智能运维

Ubuntu Syslog集成到监控系统的实用方案

一、总体架构与选择

  • 典型路径有两条:一是走ELK/EFK(Rsyslog/Filebeat → Logstash → Elasticsearch → Kibana),适合做全文检索、可视化与复杂分析;二是走Loki/Prometheus(Promtail → Loki → Grafana/Alertmanager),更轻量,适合日志即指标的告警场景。也可在节点侧用syslog-ng做内容路由与本地预处理,再对接上述平台。

二、方案A ELK或EFK集中化日志

  • 组件与职责
    • Rsyslog/syslog-ng:采集与转发系统日志(支持 UDP/TCP 514 等)。
    • Logstash:解析与丰富(Grok、Date、GeoIP 等),输出到 Elasticsearch
    • Elasticsearch:存储与检索。
    • Kibana:可视化与仪表盘。
    • 可选 Filebeat:在客户端侧轻量采集并转发到 Logstash/ES,减少本地资源占用。
  • 服务端最小配置示例(Rsyslog 接收 + Logstash 入 ES)
    • 启用 Rsyslog 接收(/etc/rsyslog.conf 或 /etc/rsyslog.d/ 下启用模块与端口)
      • module(load=“imudp”) 与 input(type=“imudp” port=“514”)
      • module(load=“imtcp”) 与 input(type=“imtcp” port=“514”)
    • Logstash 配置(/etc/logstash/conf.d/syslog.conf)
      • input { syslog { port => 514 type => “syslog” } }
      • filter { grok { match => { “message” => “%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:[%{POSINT:pid}])?: %{GREEDYDATA:msg}” } date { match => [ “timestamp”, “MMM d HH:mm:ss”, “MMM dd HH:mm:ss” ] } }
      • output { elasticsearch { hosts => [“localhost:9200”] index => “syslog-%{+YYYY.MM.dd}” } }
    • 客户端转发(示例将所有日志发往集中 Logstash)
      • 在客户端 /etc/rsyslog.d/forward.conf:. @logstash.example.com:514
    • 验证
      • 在 Kibana 创建索引模式 syslog-*,使用 Discover 查看日志;命令行生成测试日志:logger “Test syslog to ELK”。

三、方案B Loki与Prometheus告警

  • 组件与职责
    • Promtail:采集本地日志文件(如 /var/log/syslog、/var/log/auth.log),附加标签并发送到 Loki
    • Loki:按标签与内容存储日志,供 Grafana 查询。
    • Grafana/Alertmanager:面板可视化与阈值/关键字告警(如 Failed password 等)。
  • 快速落地
    • 部署 Promtail → Loki → Grafana,在 Grafana 建立 Loki 数据源与面板。
    • 在 Grafana 创建告警规则(例如:rate({job=“syslog”} |= “Failed password” [1m]) > 0),通过 Alertmanager 发送邮件/钉钉/Slack。
    • 适用场景:需要轻量、云原生友好的日志告警与可视化,与 Prometheus 生态无缝衔接。

四、方案C 轻量脚本或专用工具做即时告警

  • 使用 syslog-ng 直接触发脚本(适合安全类即时通知)
    • 示例:匹配 auth.log 中的失败登录并调用脚本推送到 Slack/企业微信/钉钉
      • filter f_authfail { (facility(auth,authpriv) and match(“Failed password”)) or (facility(auth,authpriv) and match(“Disconnected from authenticating”)); }
      • destination d_slack { program(“/opt/notify/slack.sh”); }
      • log { source(s_src); filter(f_authfail); destination(d_slack); }
    • 脚本通过 Webhook 发送消息,便于快速落地与二次开发。
  • 使用 logwatch定时报告(适合日报/周报)
    • 安装与配置:sudo apt-get install logwatch;编辑 /etc/logwatch/conf/logwatch.conf(如 Detail、Output=mail、MailTo)。
    • 可结合 cron 每日发送关键日志摘要到邮箱。

五、实践要点与排错清单

  • 协议与端口:Syslog 常用 UDP/TCP 514;生产建议优先 TCP 或配合 TLS 保障可靠性与机密性。
  • 权限与路径:确保 /var/log/ 可读、日志管道/脚本具备执行权限;避免日志循环写入。
  • 结构化与解析:尽量在 LogstashPromtail/Loki 侧完成 Grok/正则解析,便于检索与聚合。
  • 性能与存储:为 Elasticsearch 配置合理的分片与保留策略;为 Loki 配置压缩与保留;客户端可用 Filebeat/Promtail 降低本地开销。
  • 高可用与缓冲:跨节点部署 Rsyslog/Loki 接收端,必要时加入 Kafka/Redis 缓冲,避免高峰丢日志。
  • 快速自检
    • 本机生成日志:logger “integration test
    • 查看本地接收:sudo tail -f /var/log/syslog
    • 远程连通性:nc -vz logstash_or_loki_host 514
    • 服务端日志:sudo journalctl -u rsyslog 或 sudo journalctl -u logstash

0