Linux Syslog与ELK Stack的结合
导读:Linux Syslog与ELK Stack集成实践指南 一 架构与端口规划 采集链路建议:Linux 主机使用 rsyslog/syslog-ng 发送日志 → Logstash Syslog 输入插件(UDP/TCP 514) 或 B...
Linux Syslog与ELK Stack集成实践指南
一 架构与端口规划
- 采集链路建议:Linux 主机使用 rsyslog/syslog-ng 发送日志 → Logstash Syslog 输入插件(UDP/TCP 514) 或 Beats/Filebeat 514 → Elasticsearch 存储 → Kibana 可视化。
- 端口与协议:
- Syslog 常用端口:514/UDP、514/TCP(生产建议优先 TCP 或配合 TLS)。
- Beats 常用端口:5044/TCP(Logstash 的 Beats 输入)。
- 索引命名:按日滚动,如 syslog-%{ +YYYY.MM.dd} ,便于生命周期管理与检索。
二 快速落地步骤
- 步骤1 配置 Linux 主机发送 Syslog
- 使用 rsyslog 发送(示例为 UDP,生产建议 TCP/TLS):
- 编辑 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf,添加:
- . @< logstash_ip> :514 # UDP
- . @@< logstash_ip> :514 # TCP
- 重启服务:sudo systemctl restart rsyslog
- 编辑 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf,添加:
- 如需在 Logstash 所在主机接收远程 Syslog,可启用本地 rsyslog 监听(UDP/TCP 514),再转发至 Logstash。
- 使用 rsyslog 发送(示例为 UDP,生产建议 TCP/TLS):
- 步骤2 部署并配置 Logstash 接收 Syslog
- 示例(Syslog 输入插件,监听 514):
- input {
syslog {
port =>
514 type =>
“syslog” }
}
filter {
可按需添加 grok/date 等解析
} output { elasticsearch { hosts => [“http://< es_host> :9200”] index => “syslog-%{ +YYYY.MM.dd} ” } }
- input {
syslog {
port =>
514 type =>
“syslog” }
}
filter {
- 启动:sudo systemctl start logstash(或按环境使用命令行启动)。
- 示例(Syslog 输入插件,监听 514):
- 步骤3 部署并配置 Elasticsearch 与 Kibana
- Elasticsearch:确保集群运行并可达(如单节点示例配置 discovery.type: single-node)。
- Kibana:配置 server.host: “0.0.0.0”,连接 Elasticsearch;访问 http://< kibana_host> :5601。
- 步骤4 在 Kibana 创建索引模式并验证
- 进入 Management → Stack Management → Index Patterns,创建 syslog-*,时间字段选 @timestamp。
- 在 Discover 查看日志;可用 logger “Test log message” 产生测试日志。
三 可选方案与对比
| 方案 | 采集路径 | 优点 | 注意点 |
|---|---|---|---|
| Logstash Syslog 输入插件 | rsyslog → Logstash(:514) → ES | 原生解析、灵活过滤 | 需 root 或 CAP_NET_BIND_SERVICE 才能监听 514;建议启用 TLS |
| Beats/Filebeat → Logstash | rsyslog → Filebeat(:514) → Logstash(:5044) → ES | Beat 轻量、资源占用低、易扩展 | 需正确配置 Filebeat 输入与 Logstash 的 Beats 输入 |
| rsyslog 本地文件 → Filebeat | rsyslog 写文件 → Filebeat 读取 → Logstash → ES | 避免直接占用 514,便于多路复用 | 需正确设置 rsyslog 文件权限与 Filebeat 路径/权限 |
- 若选择 Filebeat 方案,示例要点:
- Filebeat 输入(示例):
- filebeat.inputs:
- type: syslog port: 514 protocol: udp
- filebeat.inputs:
- Logstash 输入:
- input { beats { port => 5044 } }
- Filebeat 输入(示例):
四 解析与安全加固
- 日志解析建议
- 使用 grok 解析常见 Syslog 格式,配合 date 将时间写入 @timestamp,示例:
- filter { grok { match => { “message” => “%{ TIMESTAMP_ISO8601:timestamp} %{ LOGLEVEL:loglevel} %{ GREEDYDATA:message} ” } } date { match => [ “timestamp”, “ISO8601” ] target => “@timestamp” } }
- 针对 auth、kern、daemon 等 facility 可编写细化模式,提高可读性与可检索性。
- 使用 grok 解析常见 Syslog 格式,配合 date 将时间写入 @timestamp,示例:
- 安全与优化
- 加固传输:启用 SSL/TLS(Logstash 与 ES、Beats 与 Logstash 之间),限制来源 IP,开启防火墙。
- 权限与端口:监听 514 通常需要管理员权限;若不便以 root 运行 Logstash,可改用 Beats/Filebeat 方案或设置端口转发。
- 性能与容量:按日索引、设置 ILM(索引生命周期管理)、合理分配 ES 堆内存 与 Logstash 工作线程,避免丢日志与查询抖动。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Syslog与ELK Stack的结合
本文地址: https://pptw.com/jishu/751010.html
