elk日志配置

步骤 1: 安装 Filebeat

  • 在您的日志服务器(应用运行的服务器)上,下载适合您操作系统的 Filebeat 版本。

  • 官方下载地址

  • 以 Linux 为例,下载并解压:

    Bash

    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.0-linux-x86_64.tar.gz
    tar -zxvf filebeat-8.14.0-linux-x86_64.tar.gz
    cd filebeat-8.14.0-linux-x86_64/
    

步骤 2: 配置 Filebeat

Filebeat 的主要配置文件是 filebeat.yml。您需要对其进行修改以匹配您的日志和 ELK 架构。

YAML

# ======================== Filebeat inputs =========================
filebeat.inputs:
- type: filestream
  enabled: true
  # 指定要采集的日志文件路径,支持通配符
  paths:
    - /path/to/your/app/logs/*.log
    # 比如您的日志文件路径:
    # - /home/yzt/logs/test/saas-goods.log
    # - /home/yzt/logs/prod/saas-goods.log
    # 您也可以使用通配符采集所有应用日志:
    # - /home/yzt/logs/*/*.log

# ======================= Elasticsearch output =========================
# Filebeat 可以直接发送到 Elasticsearch,但通常推荐通过 Logstash 进行预处理
# output.elasticsearch:
#   hosts: ["localhost:9200"]
#   username: "elastic"
#   password: "changeme"

# =========================== Logstash output ============================
output.logstash:
  # Logstash 服务的地址,通常是集群中的一个或多个节点
  hosts: ["your.logstash.server:5044"]
  # 设置一个唯一的管道ID,以便在Logstash中识别数据来源
  pipeline: "your-app-pipeline"

# =============================== Processors ===============================
# processors:
#   - add_host_metadata: ~
#   - add_cloud_metadata: ~
#   - add_docker_metadata: ~
#   - add_kubernetes_metadata: ~

# ================================= Kibana =================================
# setup.kibana:
#   host: "localhost:5601"

配置详解:

  • filebeat.inputs:
    • type: filestream:这是新版本 Filebeat 的输入类型,它取代了老版本的 log 类型。
    • paths:这里填写您要监控的日志文件绝对路径。由于您使用的是 logback-spring.xml 中的相对路径 ./logs,请确保您转换为绝对路径。
  • output.logstash:
    • hosts:这是您的 Logstash 服务器的 IP 地址和端口。默认的 Beats 输入端口是 5044
    • pipeline:这是一个可选但非常好的实践。您可以在 Filebeat 端指定一个 pipeline 名称,然后在 Logstash 的配置中,可以根据这个名称来选择不同的处理管道,实现不同日志的定制化处理。

步骤 3: 启动 Logstash (如果您使用 Logstash)

如果您的 Filebeat 将数据发送到 Logstash,您需要在 Logstash 服务器上配置并启动它。

logstash.conf 示例:

代码段

input {
  beats {
    port => 5044
  }
}

filter {
  # 由于您的日志已经是LogstashEncoder生成的JSON格式,
  # Logstash的beats输入插件默认会将其解析,
  # 所以这里通常不需要复杂的filter,除非你想做一些额外的处理
  # 例如,根据Filebeat传过来的pipeline名称进行条件过滤
  # if [pipeline] == "your-app-pipeline" {
  #   ...
  # }
}

output {
  elasticsearch {
    hosts => ["your.elasticsearch.server:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    # 或者自定义索引名称,例如:
    # index => "your-app-logs-%{+YYYY.MM.dd}"
  }
}
  • input { beats { ... } }: Logstash 监听 5044 端口,接收来自 Filebeat 的数据。
  • output { elasticsearch { ... } }: 将数据发送到 Elasticsearch 集群。

步骤 4: 运行 Filebeat

在您的日志服务器上,进入 Filebeat 目录,运行以下命令:

  • 前台运行(用于测试和调试):

    Bash

    ./filebeat -e -c filebeat.yml
    
    • -e:将日志输出到标准错误,方便在终端查看。
    • -c:指定配置文件。
  • 后台运行(用于生产环境):

    Bash

    nohup ./filebeat -e -c filebeat.yml > /dev/null 2>&1 &
    
    • 推荐使用 nohup 命令,让 Filebeat 在终端关闭后继续运行。
    • > /dev/null 2>&1 将所有输出重定向到 /dev/null,避免生成日志文件。

步骤 5: 在 Kibana 中查看日志

  • 登录 Kibana,进入 "Stack Management" -> "Index Patterns"
  • 创建一个新的索引模式,名称与您的 Logstash 配置中的 index 名称匹配(例如 your-app-logs-*)。
  • "Discover" 页面,选择新创建的索引模式,您就可以看到您的日志了。
posted @ 2025-12-04 17:37  Sappy  阅读(5)  评论(0)    收藏  举报