阅读量:2
架构与方案选型
- 推荐在 CentOS 7/8 上采用 rsyslog 作为 Syslog 代理,将系统日志通过 UDP/TCP 514 发送到 Logstash,再由 Elasticsearch 存储、Kibana 可视化。若需更高可靠性与缓冲,可在 Logstash 前引入 Kafka 作为消息队列。小规模或测试环境可将 Elasticsearch、Logstash、Kibana 部署在同一台主机;生产环境建议分离部署并开启认证与 TLS。ELK 7.x 为常用稳定版本,部署前准备 Java 11+ 环境。
服务端 Logstash 配置
- 启用 Syslog 输入(示例为 UDP,生产建议优先 TCP 并使用证书):
input {
udp {
port => 514
type => "system-syslog"
codec => plain { charset => "UTF-8" }
}
}
filter {
# 解析常见内核/系统日志
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:message}" }
overwrite => ["message"]
}
date {
match => ["timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]
target => "@timestamp"
}
# 可选:按设施/优先级丰富字段
mutate {
add_field => { "facility" => "%{syslog_facility}" }
add_field => { "severity" => "%{syslog_severity}" }
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "syslog-%{+YYYY.MM.dd}"
user => "elastic"
password => "YourStrongPassword"
}
stdout { codec => rubydebug } # 调试用
}
- 若使用 Logstash syslog 输入插件(部分版本内置),可将 input 替换为:
input {
syslog { port => 514 type => "system-syslog" }
}
- 权限与端口:Linux 非 root 进程无法监听 1024 以下端口。若坚持使用 514,需以 root 运行 Logstash,或改用 >1024(如 1514)并在防火墙放行对应端口。示例(不建议生产):修改 systemd 服务,将 User=root 后重载并重启 Logstash。
客户端 rsyslog 配置
- 启用远程发送(UDP 示例,服务端 IP 为 192.0.2.10):
# /etc/rsyslog.conf 或 /etc/rsyslog.d/50-remote.conf
*.* @192.0.2.10:514
- 如需可靠传输,改用 TCP(示例端口 1514):
*.* @@192.0.2.10:1514
- 重启 rsyslog 生效:
systemctl restart rsyslog
- 防火墙放行(示例为 firewalld):
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --permanent --add-port=1514/tcp
firewall-cmd --reload
- 如需仅转发特定设施(如本地审计日志),可使用 local6:
local6.info @@192.0.2.10:1514
- 验证:在客户端执行
logger -p local6.info "test syslog message",在服务端 Logstash 控制台或 Kibana 中查看是否入库。
Kibana 可视化与索引管理
- 访问 http://
:5601 ,进入 Stack Management > Index Patterns,创建索引模式(如 syslog-* 或 syslog-%{+YYYY.MM.dd}),时间字段选择 @timestamp。 - 在 Discover 中查看与检索日志,按主机、程序、级别等字段筛选;后续可在 Visualize Library 与 Dashboard 构建错误趋势、来源分布等图表。
生产优化与安全加固
- 可靠性与缓冲:在 Logstash 启用 持久化队列(queue.type: persisted),在日志洪峰时避免数据丢失;必要时引入 Kafka 作为缓冲层,解耦采集与存储。
- 安全:为 Elasticsearch 启用 基础认证/TLS,为 Kibana 配置 HTTPS 与 角色权限控制;仅开放必要端口(如 514/1514、9200、5601),并限制来源网段。
- 性能与容量:Elasticsearch 分片数按节点与数据量规划(常见为每 GB 堆内存 1–2 分片,单节点堆不超过 32GB),合理设置 JVM 与刷新间隔;为索引设置 ILM(Index Lifecycle Management) 与 Curator 自动滚动与清理策略,控制存储成本。
以上就是关于“CentOS Syslog与ELK Stack集成实践”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm