CentOS Syslog与ELK Stack集成实践
导读:架构与方案选型 推荐在 CentOS 7/8 上采用 rsyslog 作为 Syslog 代理,将系统日志通过 UDP/TCP 514 发送到 Logstash,再由 Elasticsearch 存储、Kibana 可视化。若需更高可靠性...
架构与方案选型
- 推荐在 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 自动滚动与清理策略,控制存储成本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Syslog与ELK Stack集成实践
本文地址: https://pptw.com/jishu/756853.html
