介绍
介绍
大家根福哥学会了使用Dockerfile创建Docker镜像的技巧了,那么我们现在搭建服务器环境就不需要再去下载软件的源代码了,也不需要编译安装了,更加不用操心软件和操作系统的各种兼容问题了。
今天福哥带着大家来安装Logstash的环境,Logstash是一个用来收集日志、处理日志的工具,它可以对接MySQL、Redis、Elasticsearch等等非常多的数据引擎,将收集到的日志存储到这些数据引擎里面。Logstash通常情况下是结合Filebeat工具协同工作的,Filebeat可以监听日志文件的内容变化将增量日志数据推送给Logstash进行处理。
镜像
tag
福哥选择的是logstash:8.0.0版本,这个版本是比较新的!
结构
照例我们先把镜像拉取下来,然后启动一个容器,看看里面都有什么,弄明白了自己才好捣鼓啊!
拉取镜像
docker pull logstash:8.0.0
启动临时容器
docker run -tid --name logstash8 -h logstash8 --net bridge2 --ip 10.16.1.168 logstash:8.0.0
切入临时容器
docker exec -ti logstash8 "/bin/bash"
查看结构
logstash的版本是8.0.0。
logstash的主目录在/usr/share/logstash下面,真是够BT的!
切出临时容器
exit
手动安装
福哥先在临时容器里面手动安装一遍环境,然后再整理到Dockerfile里面,这样大家会看得比较清楚一些~~
logstash.yml
编辑配置文件
去掉或者注释掉logstash.yml里面的elasticsearch监视插件的配置。
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
福哥的logstash.yml配置文件,内容如下:
http.host: "0.0.0.0"
复制配置文件
通过docker cp将logstash.ym配置文件覆盖容器里面的。
docker cp logstash.yml logstash8:/usr/share/logstash/config/logstash.yml
logstash.conf
编写配置文件
福哥自己写了一个配置文件logstash.conf,内容如下:
input { beats { port => "5044" } } output { file { path => "/usr/share/logstash/tongfunet.log" codec => rubydebug } }
复制配置文件
通过docker cp将logstash.conf配置文件放到容器里面。
docker cp logstash.conf logstash8:/usr/share/logstash/pipeline/logstash.conf
重启logstash
现在重新启动服务。
docker stop logstash8 docker start logstash8
验证
安装Filebeat
福哥用Filebeat软件来测试logstash,Filebeat不需要安装直接下载完就可以用。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-linux-x86_64.tar.gz tar -xzvf filebeat-7.5.1-linux-x86_64.tar.gz cd filebeat-7.5.1-linux-x86_64
配置Filebeat
现在福哥建立filebeat的配置文件tongfunet.yml,内容如下:
filebeat.inputs: - type: log enabled: true paths: - tongfunet.log output.logstash: hosts: ["10.16.1.168:5044"]
测试Logstash
建立测试日志文件tongfunet.log
touch tongfunet.log
现在福哥启动Filebeat软件,监听tongfunet.log日志文件的变化。
./filebeat -e -c tongfunet.yml -d "publish" > filebeat.log 2>&1 &
福哥向测试日志文件tongfunet.log里面写入一行数据。
echo "msg: hello tongfu.net" >> tongfunet.log
再次切入临时容器。
docker exec -ti logstash8 "/bin/bash"
查看logstash记录的日志文件内容,可以看到它收到了我们通过filebeat推送的日志数据。
这个数据经过rubydebug进行解码得到了一个JSON串,这个JSON串存到ES里面可以方便地进行日志分析。
清理
停止Filebeat
删除Filebeat
rm -rf filebeat-7.5.1-linux-x86_64
停止临时容器
docker stop logstash8
删除临时容器
docker rm logstash8
Dockerfile
最后福哥把前面的设置命令整理到一起写成Dockerfile,这样大家就可以通过Dockerfile安装环境了。
由于在Dockerfile里面通过RUN执行命令的时候,一旦执行过程中出现返回非0结果的情况就会终止创建镜像。所以安装chrome的时候的那些依赖项就不能通过dpkg的特性一并交给apt-get安装了,需要一个一个地整理出来,福哥也是无语了~~
logstash.yml
logstash.yml是logstash的配置文件,福哥把es的配置去掉了。
http.host: "0.0.0.0"
logstash.conf
logstash.conf是logstash的逻辑配置文件,在这里配置日志处理逻辑。
input { beats { port => "5044" } } output { file { path => "/usr/share/logstash/tongfunet.log" codec => rubydebug } }
Dockerfile
这个福哥写的Dockerfile配置文件。
FROM logstash:8.0.0 MAINTAINER Andy Bogate MAINTAINER tongfu@tongfu.net MAINTAINER http://docker.tongfu.net EXPOSE 5044 # data COPY logstash.yml /usr/share/logstash/config/logstash.yml COPY logstash.conf /usr/share/logstash/pipeline/logstash.conf
6. 总结
今天福哥带着大家使用Dockerfile基于logstash 8镜像搭建了Logstash微服务环境了,可以发现使用Dockerfile方式搭建环境我们真的只需要关心我们需要关心的部分,繁琐的编译参数、依赖库、环境参数等等一系列的问题基础镜像都给我们解决好了。