文章目录
- [Kibana 部署与 Filebeat 采集(ELK → ELFK)](#Kibana 部署与 Filebeat 采集(ELK → ELFK))
-
- [一、Kibana 部署](#一、Kibana 部署)
-
- [1. 安装 Kibana](#1. 安装 Kibana)
- [2. 设置主配置文件](#2. 设置主配置文件)
- [3. 配置 Node.js 运行时选项(7.17.13 及以上需要)](#3. 配置 Node.js 运行时选项(7.17.13 及以上需要))
- [4. 配置 Systemd 服务](#4. 配置 Systemd 服务)
- [5. 启动 Kibana 服务](#5. 启动 Kibana 服务)
- [6. 验证 Kibana](#6. 验证 Kibana)
- [二、添加索引模式(Index Patterns)](#二、添加索引模式(Index Patterns))
- [三、ELK → ELFK:Filebeat 采集 Nginx 日志](#三、ELK → ELFK:Filebeat 采集 Nginx 日志)
-
- [1. 安装 Nginx(采集目标)](#1. 安装 Nginx(采集目标))
- [2. 安装 Filebeat](#2. 安装 Filebeat)
- [3. 设置 Filebeat 主配置文件](#3. 设置 Filebeat 主配置文件)
- [4. 启动 Filebeat](#4. 启动 Filebeat)
- [5. 在 Logstash 节点新建接收配置(filebeat.conf)](#5. 在 Logstash 节点新建接收配置(filebeat.conf))
- [6. 启动 Logstash 并验证](#6. 启动 Logstash 并验证)
Kibana 部署与 Filebeat 采集(ELK → ELFK)
Kibana 是 ELK 栈的可视化界面 ,读取 Elasticsearch 数据,提供日志检索、图表与仪表盘。本文覆盖 Kibana 7.17.27 的部署、Systemd 托管、索引模式(Index Patterns)配置,并补充生产环境常用的 Filebeat 采集 Nginx 日志(ELK → ELFK)完整流程。
一、Kibana 部署
1. 安装 Kibana
bash
# 上传、解压
tar -zxvf kibana-7.17.27-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv kibana-7.17.27-linux-x86_64 kibana
mkdir /usr/local/kibana/logs
2. 设置主配置文件
bash
vim /usr/local/kibana/config/kibana.yml
取消注释并按需修改以下配置项:
| 配置项 | 说明 |
|---|---|
server.port: 5601 |
Kibana 服务默认监听端口(5601) |
server.host: "0.0.0.0" |
监听地址,0.0.0.0 代表所有地址,或写当前节点 IP |
elasticsearch.hosts: ["http://192.168.80.10:9200","http://192.168.80.11:9200","http://192.168.80.12:9200"] |
连接的 ES 集群节点地址;集群则配置 master 节点 IP |
kibana.index: ".kibana" |
Kibana 存储其元数据的索引名称 |
logging.dest: /usr/local/kibana/logs/kibana.log |
日志输出位置 |
i18n.locale: "zh-CN" |
界面语言为中文 |
3. 配置 Node.js 运行时选项(7.17.13 及以上需要)
bash
vim /usr/local/kibana/config/node.options
注释掉第 32 行:
properties
#--openssl-legacy-provider
4. 配置 Systemd 服务
bash
vim /usr/lib/systemd/system/kibana.service
ini
[Unit]
Description=Kibana
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
User=kibana
Group=kibana
ExecStart=/usr/local/kibana/bin/kibana
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
5. 启动 Kibana 服务
bash
# 创建运行用户并授权
useradd kibana
chown -R kibana:kibana /usr/local/kibana
# 加载服务并设置开机自启
systemctl daemon-reload
systemctl start kibana
systemctl enable kibana
# 确认 5601 端口已监听
ss -lntp | grep 5601
6. 验证 Kibana
浏览器访问 http://192.168.80.13:5601,首次访问直接在浏览器中查看 Kibana 界面。
二、添加索引模式(Index Patterns)
- 点击左上角菜单 → Management → Stack Management → 索引模式 → 创建索引模式 ,通过通配符选择要匹配的索引,选择时间戳字段后创建:
- 【名称】输入
system_log_* - 【时间戳字段】选择
@timestamp
- 【名称】输入
- 点击左上角菜单 → Analytics → Discover,查看图表信息及日志信息。
能看得到 ES 的索引:








三、ELK → ELFK:Filebeat 采集 Nginx 日志
生产环境中通常用 Filebeat 替代 Logstash 直接读取日志:Filebeat 由 Go 编写、占用资源极小,部署在业务服务器上负责采集推送 ;Logstash 专注清洗转换,两者各司其职,即 ELK → ELFK 架构:
业务服务器 Nginx 日志 → Filebeat → Logstash → Elasticsearch ← Kibana
💡 相关文档:\[4、logstash搭建及操作.md] 的「五、生产实践」还提供了 Filebeat 的 rpm/apt 安装方式与 grok 解析案例,可对照阅读。本文采用 tar 包安装 + tags 标签分流 的方式。
1. 安装 Nginx(采集目标)
bash
# 导入 Nginx 官方签名密钥
curl -fsSL https://nginx.org/keys/nginx_signing.key -o /etc/apt/keyrings/nginx.key
# 添加 Nginx apt 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/nginx.key] https://nginx.org/packages/ubuntu/ $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list > /dev/null
# 更新源并安装指定版本
apt update
apt install -y nginx=1.24.0-1~jammy
# 启动并设置开机自启
systemctl start nginx
systemctl enable nginx
2. 安装 Filebeat
bash
# 上传、解压(版本与 ES/Logstash 保持一致)
tar zxvf filebeat-7.17.27-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv filebeat-7.17.27-linux-x86_64/ /usr/local/filebeat
3. 设置 Filebeat 主配置文件

bash
cd /usr/local/filebeat
vim filebeat.yml
输入源 :采集 Nginx 的 access / error 两类日志,分别打上 access、error 标签,并附加 loginfo 自定义字段:

yaml
filebeat.inputs:
- type: log # 指定 log 类型,从日志文件中读取消息
enabled: true
paths:
- /var/log/nginx/access.log # 指定监控的日志文件
#- /var/log/*.log
tags: ["access"] # 添加标签,供 Logstash 端按标签分流
fields: # 自定义字段,随日志发送,可用于索引命名
loginfo: nginx_access_log_192.168.80.14
- type: log
enabled: true
paths:
- /var/log/nginx/error.log
tags: ["error"]
fields:
loginfo: nginx_error_log_192.168.80.14
输出 :默认的 Elasticsearch output 全部注释掉,改用 Logstash output------让日志统一先经过 Logstash 清洗处理,再写入 ES:
yaml
# ================ Elasticsearch output(全部注释掉)================
#output.elasticsearch:
# hosts: ["localhost:9200"]
# ================ Logstash output ================
output.logstash:
hosts: ["192.168.80.13:5044"] # 指定 Logstash 的 IP 和端口
4. 启动 Filebeat
bash
# 后台启动 Filebeat;-e 输出到标准输出(禁用 syslog/文件输出),-c 指定配置文件
# nohup:在系统后台不挂断地运行命令,退出终端不会影响程序的运行
nohup ./filebeat -e -c filebeat.yml > filebeat.log 2>&1 &
5. 在 Logstash 节点新建接收配置(filebeat.conf)
bash
cd /usr/local/logstash/conf.d/
vim filebeat.conf
ruby
input {
beats {
port => "5044" # 接收 Filebeat 推送的数据,端口与 filebeat.yml 中保持一致
}
}
output {
if "access" in [tags] {
elasticsearch {
hosts => ["192.168.80.10:9200","192.168.80.11:9200","192.168.80.12:9200"]
index => "%{[fields][loginfo]}-%{+yyyy.MM.dd}" # 按自定义字段动态生成索引名
}
}
if "error" in [tags] {
elasticsearch {
hosts => ["192.168.80.10:9200","192.168.80.11:9200","192.168.80.12:9200"]
index => "%{[fields][loginfo]}-%{+yyyy.MM.dd}"
}
}
}
配置说明:
beats输入插件监听 5044 端口,接收 Filebeat 发来的日志if "access" in [tags]:根据 filebeat.yml 中打的标签,将 access / error 日志分别写入不同索引- 索引名取自定义字段
loginfo,形如nginx_access_log_192.168.80.14-2026.08.16
6. 启动 Logstash 并验证
bash
# -f 指定配置文件启动 Logstash
logstash -f filebeat.conf
浏览器访问 http://192.168.80.13:5601 登录 Kibana,创建索引模式(可用 nginx_* 通配符匹配),在 Discover 中即可查看 Nginx 日志信息。