在 CentOS 上用 Filebeat 实现日志可视化
一 架构与准备
- 组件选型:在 CentOS 上部署 Elasticsearch(存储与检索)、Kibana(可视化与探索)、Filebeat(轻量采集器)。如日志需要复杂解析,可在中间加入 Logstash(可选)。
- 版本一致:确保 Filebeat 与 Elasticsearch/Kibana 主版本一致,避免兼容性问题。
- 资源建议:单机测试可用 4 核 CPU / 8GB 内存;生产环境按日志量单独规划资源。
- 网络与端口:开放 Elasticsearch 9200、Kibana 5601;如经 Logstash 转发,开放 5044。
- 安全基线:启用认证、最小权限、TLS 加密;公网访问建议前置 Nginx/Apache 反向代理 + 基础认证。
二 安装与配置
- 安装组件(示例为 7.x,其他版本替换版本号即可):
- 导入 GPG 并添加仓库:
- sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- 创建 /etc/yum.repos.d/elasticsearch.repo([elasticsearch-7.x] 段)与 /etc/yum.repos.d/kibana.repo([kibana-7.x] 段),baseurl 指向 https://artifacts.elastic.co/packages/7.x/yum
- 安装:sudo yum install -y elasticsearch kibana filebeat
- 配置 Elasticsearch(/etc/elasticsearch/elasticsearch.yml):
- network.host: 0.0.0.0(或内网地址);按需设置 discovery.type: single-node(单机)
- 配置 Kibana(/etc/kibana/kibana.yml):
- server.host: 0.0.0.0;elasticsearch.hosts: [“http://localhost:9200”]
- 配置 Filebeat(/etc/filebeat/filebeat.yml,最简直连 ES 示例):
- filebeat.inputs:
- type: log
enabled: true
paths:
- output.elasticsearch:
- hosts: [“localhost:9200”]
- index: “filebeat-%{+yyyy.MM.dd}”
- 如需 Kibana 自动导入仪表板,可添加:
- setup.kibana.host: “localhost:5601”
- 启动与开机自启:
- sudo systemctl daemon-reload
- sudo systemctl enable --now elasticsearch kibana filebeat
- 验证服务:
- curl -X GET “localhost:9200”(应返回 ES 信息)
- 访问 http://:5601 进入 Kibana
三 在 Kibana 完成可视化
- 创建索引模式:进入 Stack Management → Index Patterns,新建索引模式匹配 filebeat-*,设置时间字段为 @timestamp。
- 探索日志:进入 Discover,选择刚创建的索引模式,按时间筛选查看原始日志。
- 构建可视化与仪表板:在 Visualize Library 创建图表(如柱状图、折线图、数据表),再在 Dashboard 中组合成业务视图。
- 导入官方仪表板(可选):如启用 Filebeat 模块,可使用 filebeat setup 自动导入对应模块仪表板(需配置 setup.kibana.host)。
四 进阶用法
- 使用 Logstash 做解析与分流(示例):
- /etc/logstash/conf.d/logstash.conf:
- input { beats { port => 5044 } }
- output {
elasticsearch {
hosts => [“http://localhost:9200”]
index => “%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}”
}
}
- Filebeat 将 output 指向 Logstash:output.logstash: hosts: [“localhost:5044”]
- 启用 Filebeat 模块(以 system 为例):
- filebeat modules enable system
- 按需编辑 /etc/filebeat/modules.d/system.yml 的 paths
- 使用 filebeat setup -e 导入模块仪表板与管道
- 多行日志处理(如 Java 异常栈):
- 在 filebeat.inputs 下为对应日志添加:
- multiline.pattern: ‘^[’
- negate: true
- match: after
- 处理器与字段增强:
- 使用 dissect/grok 解析非结构化日志;用 add_host_metadata/add_cloud_metadata 丰富元数据。
五 常见问题与排查
- 版本不匹配:确认 Filebeat、Elasticsearch、Kibana 主版本一致(如均为 7.x)。
- 配置语法错误:Filebeat 配置为 YAML,注意缩进与冒号后空格;变更后先执行 filebeat test config 校验。
- 权限与认证:若启用安全特性,需在 Filebeat 的 output.elasticsearch 中配置 username/password 或 API Key;Kibana 同理。
- 端口与防火墙:确认 9200/5601/5044 已放行;云主机需配置安全组规则。
- 索引未创建或看不到数据:检查 Filebeat 日志(/var/log/filebeat/filebeat)、ES 是否收到数据(curl localhost:9200/_cat/indices),Kibana 索引模式是否匹配 filebeat-*。
- 公网访问与加固:建议用 Nginx 反向代理 + htpasswd 基础认证,并启用 TLS/HTTPS。