【ELK】-5 kibana和filebeat

文章目录

  • [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)

  1. 点击左上角菜单 → Management → Stack Management → 索引模式 → 创建索引模式 ,通过通配符选择要匹配的索引,选择时间戳字段后创建:
    • 【名称】输入 system_log_*
    • 【时间戳字段】选择 @timestamp
  2. 点击左上角菜单 → 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 两类日志,分别打上 accesserror 标签,并附加 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 日志信息。

相关推荐
复园电子1 小时前
USB服务器架构设计分析:多设备管理、权限控制与安全传输机制
运维·服务器·安全
DevHub1 小时前
电视盒子刷 Armbian 教程:30 元旧盒子变 NAS 跑 Docker,200+ 机型可刷
linux·嵌入式硬件·docker·容器·开源·电视盒子
Doraemomo3 小时前
Linux编程-线程
linux·运维·服务器
Linux-lucky9 小时前
21-Linux学习之旅之HTTPS和安全加固
linux·运维·学习·ubuntu·https
清水白石00810 小时前
Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复
linux·网络·python
ao-weilai11 小时前
Linux基础:Ext系列文件系统
linux·运维·服务器
qq_3494479512 小时前
Linux系统,安装git,从使用git下载仓库(GitHub, Gitee, GitLab 等),并且使用ssh密钥,可以直接执行git pull
linux·git·ssh
GlobalSign数字证书15 小时前
小企业零运维 TLS 架构设计:证书生命周期管理(CLM)与自动化轮换策略的技术选型
运维·自动化