FreezeJ' Blog

logstash6.8文档

2022-03-23

本文使用logstash 6.8,使用yum安装,不同版本命令或配置可能不一样,自行鉴别
官方文档:https://www.elastic.co/guide/en/logstash/6.8/index.html
参考文档:https://www.kancloud.cn/aiyinsi-tan/logstash/849518

简单介绍

Logstash 是一个实时的管道式开源日志收集引擎。Logstash可以动态的将不同来源的数据进行归一并且将格式化的数据存储到你选择的位置。对你的所有做数据清洗和大众化处理,以便做数据分析和可视化。

工作原理:


一个Logstash管道有两个必须的组件,inputoutput,除此之外还有一个可选的组件filter。input插件将数据从源读入,filter插件按照你的定义处理数据,最后通过output插件写入到目的地。

相关文件

# 启动环境配置
/etc/logstash/startup.options

# JVM参数配置
/etc/logstash/jvm.options

# pipelines配置
/etc/logstash/pipelines.yml

# pipelines默认配置文件目录
/etc/logstash/conf.d/

# 全局配置文件(启动参数)
/etc/logstash/logstash.yml

# 安装目录
/usr/share/logstash/

# 可执行文件目录
/usr/share/logstash/bin/

# 如果自己编译安装的java在这个文件设置JAVA_HOME变量
/usr/share/logstash/bin/logstash.lib.sh

不同安装方式目录结构参考:https://www.elastic.co/guide/en/logstash/6.8/dir-layout.html

命令行

使用yum安装,logstash命令行位置:/usr/share/logstash/bin/logstash

显示帮助信息

$ /usr/share/logstash/bin/logstash --path.settings /etc/logstash/ --help

其实很多参数都是对配置文件/etc/logstash/logstash.yml启动参数的覆盖:

# 节点名称,默认使用主机名
--node.name

# 配置文件目录
--path.config

# 通过字符串输入配置
--config.string

# 加载模块,与-M选项一起工作,为指定模块的默认变量赋值,如果--modules在命令行中使用,则logstash.yml中的任何模块都将被忽略,那里的任何设置也将被忽略。
--modules

# 配置模块变量
--modules.variable

# 默认为main
--pipeline.id

# worker数量
--pipeline.workers

# pipeline要工作的批处理大小,默认为125
--pipeline.batch.size

# pipeline处理时间间隔默认50ms
--pipeline.batch.delay

# 非安全关闭,默认为false
--pipeline.unsafe_shutdown

# 数据目录
--path.data

# 插件目录
--path.plugins

# 日志目录
--path.logs

# 日志级别
--log.level

# 将完整编译的配置显示为debug日志消息,日志级别需要设置为debug
--config.debug

# 检查配置
--config.test_and_exit

# 自动重载配置
--config.reload.automatic

# 重载间隔默认为3秒
--config.reload.interval

# http绑定地址
--http.host

# http绑定端口
--http.port

# 写入日志格式,默认为纯文本"plain"
--log.format

logstash.yml配置文件可以参考:https://www.elastic.co/guide/en/logstash/6.8/logstash-settings-file.html

输出版本信息

$  /usr/share/logstash/bin/logstash --path.settings /etc/logstash/ --version
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties
logstash 6.8.22
jruby 9.2.7.0 (2.5.3) 2019-04-09 8a269e3 Java HotSpot(TM) 64-Bit Server VM 25.192-b12 on 1.8.0_192-b12 +indy +jit [linux-x86_64]
java 1.8.0_192 (Oracle Corporation)
jvm Java HotSpot(TM) 64-Bit Server VM / 25.192-b12

检查配置是否有效

$ /usr/share/logstash/bin/logstash --path.settings /etc/logstash/ --config.test_and_exit

配置

极简配置

安装logstash后,默认有一份简单的pipeline配置在/etc/logstash/logstash-sample.conf,功能就是把filebeat的数据,转发到es:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

把这个文件复制到/etc/logstash/conf.d,启动logstash即可生效。

$ netstat -lntp | grep 5044
tcp6       0      0 :::5044                 :::*                    LISTEN      20294/java

关闭logstash

使用命令行

kill -TERM {logstash_pid}

使用systemd

systemctl stop logstash

强制reload配置

kill -SIGHUP PID
Tags: ELK