跳转至

logstash配置介绍

Logstash 的配置文件主要分为 主配置文件Pipeline 配置文件环境变量文件,它们共同控制 Logstash 的运行行为和数据流程

1、主配置文件:logstash.yml

  • 路径:/etc/logstash/logstash.yml
  • 作用:控制Logstash服务的全局行为,如线程、队列、管道配置等。

关键配置项:

Bash
# 管道配置(Pipeline)
pipeline.id: main                       # 管道ID(默认main)
pipeline.workers: 2                     # 工作线程数(建议=CPU核心数)
pipeline.batch.size: 125                # 每批处理事件数
pipeline.batch.delay: 50                # 批次延迟(毫秒)
# 队列配置
queue.type: persisted                   # 队列类型(memory/persisted)
queue.max_bytes: 1gb                    # 持久化队列大小
# 路径配置
path.config: /etc/logstash/conf.d        # Pipeline配置文件的目录
path.data: /var/lib/logstash             # 数据存储目录(队列、插件等)
path.logs: /var/log/logstash             # 日志目录
# 监控与API
http.host: "0.0.0.0"                    # 启用监控API的绑定地址
http.port: 9600                         # 监控API端口

2、Pipeline 配置文件(\*.conf

  • 路径:/etc/logstash/conf.d/*.conf
  • 作用:定义数据处理流程(Input → Filter → Output)。Logstash 会加载该目录下所有 .conf 文件。

配置结构:

Bash
# 输入插件(数据源)
input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
  }
}
# 过滤插件(数据处理)
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
    target => "@timestamp"
  }
}
# 输出插件(数据目的地)
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "nginx-%{+YYYY.MM.dd}"
  }
}

关键点:

  • 支持多管道:通过 pipelines.yml 定义多个独立管道(见下文)。
  • 热重载:修改配置文件后,Logstash 默认会自动重新加载(需启用 config.reload.automatic: true)。

3、多管道配置:pipelines.yml

  • 路径:/etc/logstash/pipelines.yml
  • 作用:当需要运行多个独立的数据处理流程时使用。

示例:

Bash
1
2
3
4
5
6
7
- pipeline.id: nginx
  path.config: "/etc/logstash/conf.d/nginx.conf"
  pipeline.workers: 2
- pipeline.id: syslog
  path.config: "/etc/logstash/conf.d/syslog.conf"
  queue.type: memory

4、JVM 配置:jvm.options

  • 路径:/etc/logstash/jvm.options
  • 作用:调整 Logstash 的 JVM 堆内存和垃圾回收参数。

常见配置:

Bash
1
2
3
-Xms1g      # 初始堆内存
-Xmx1g      # 最大堆内存(建议=初始值)
-XX:+UseG1GC  # 使用G1垃圾回收器

5、日志配置:log4j2.properties

  • 路径:/etc/logstash/log4j2.properties
  • 作用:控制 Logstash 自身日志的级别和输出方式。

关键配置:

Bash
1
2
3
logger.pipeline.name = logstash
logger.pipeline.level = info  # 日志级别(debug/info/warn/error)
appender.rolling.fileName = ${sys:ls.logs}/logstash.log

6、环境变量文件:startup.options

  • 路径:/etc/logstash/startup.options
  • 作用:控制 Logstash 服务启动时的参数(通过 systemdsysvinit)。

关键参数:

Bash
1
2
3
LS_USER=logstash  # 运行用户
LS_GROUP=logstash  # 运行组
LS_JAVA_OPTS="-Xms1g -Xmx1g"  # JVM参数

7、配置文件加载顺序

  1. 启动阶段:
    • 读取 startup.options → 生成服务启动命令。
    • 加载 jvm.options 设置 JVM 参数。
  2. 运行阶段:
    • 读取 logstash.yml 和 pipelines.yml。
    • 加载 conf.d/*.conf 或指定路径的 Pipeline 配置。
  3. 日志记录:
    • 根据 log4j2.properties 输出运行日志。

最佳实践

  1. 模块化配置:
    • 将不同数据源的配置拆分为多个 .conf 文件(如 nginx.conf、syslog.conf)。
  2. 资源隔离:
    • 高流量场景下,使用 pipelines.yml 分隔关键业务管道。
  3. 监控调优:
    • 通过 http.port 启用 API,结合 _node/stats 接口监控性能。