文章目录

  • 1. 下载docker
  • 2. 配置
  • 2.1 创建文件夹及相应的配置文件。
  • 2.2 logstash.conf
  • 2.5 logstash.yml配置
  • 2.4 pipelines.yml 配置
  • 2.5 jvm.options 配置
  • 3. 启动


Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。

1. 下载docker

下载对应环境的安装包:logstash安装下载地址

或者直接安装docker

docker pull docker.elastic.co/logstash/logstash:7.12.0

2. 配置

配置过程主要参考下面博客,配置内容做了一定的简化,只求能够启动即可。
docker+elk7.8实战之logstash安装配置

2.1 创建文件夹及相应的配置文件。

相关文件夹及配置文件的目录结构如下:

docker logs 级别 docker部署logstash_elk

给文件夹加读写权限
chmod 777 logstash

2.2 logstash.conf

这是很重要的配置文件,log的 输入输出解析过程都是在这里配置。
e.g.
下面这个例子,输入是读取文件,文件路径是docker内的绝对路径(docker内外路径的映射会配置在docker run参数中,后面会说)
输出是控制台输出。

input {
	file{
		path => "/usr/share/logstash/data/test.log"
		codec => json
		start_position => "beginning"
	}
}
output {
	stdout {
        codec => rubydebug
    }
}

这里conf配置的实际上就是流程图中间的那一部分。

docker logs 级别 docker部署logstash_docker_02

2.5 logstash.yml配置

node.name: logstash-203
# 日志文件目录配置
path.logs: /usr/share/logstash/logs
# 验证配置文件及存在性
config.test_and_exit: false
# 配置文件改变时是否自动加载
config.reload.automatic: false
# 重新加载配置文件间隔
config.reload.interval: 60s
# debug模式 开启后会打印解析后的配置文件 包括密码等信息 慎用
# 需要同时配置日志等级为debug
config.debug: true
log.level: debug
# The bind address for the metrics REST endpoint.
http.host: 0.0.0.0

2.4 pipelines.yml 配置

这是对conf文件做配置,可以配置多个conf。
同样,path也是在docker里的绝对路径

- pipeline.id: main
  path.config: /usr/share/logstash/config/logstash.conf

2.5 jvm.options 配置

java相关配置

-Xmx512m
-Xms512m

3. 启动

  • 启动一个名字为testlogstash 的容器
docker run -it --name testlogstash \
-v /data/users/username/workspace/logstash/config:/usr/share/logstash/config \
-v /data/users/username/workspace/logstash/data:/usr/share/logstash/data \
-v /data/users/username/workspace/logstash/pipeline:/usr/share/logstash/pipeline \
-d docker.elastic.co/logstash/logstash:7.12.0

现在应该是可以启动了

  • 查看容器运行状态
docker ps | grep logstash

docker logs 级别 docker部署logstash_docker logs 级别_03

  • 查看容器内的实时log输出
docker logs -f testlogstash --tail 200

其中,从log可以找到控制台输出文件内容的部分(上面output中配置的是控制台输出)

docker logs 级别 docker部署logstash_配置文件_04


这里的message就是文件的内容,如果有多行,则输出多个下面的结构。

tag里的报错信息是我在config的input里面配置了codec=>json但是实际上的log是一条string。忽略即可。

至此,一个简易功能的logstash就部署好了。