本文已参与「新人创作礼」活动,一起开启掘金创作之路。
使用 docker-composer 快速搭建 elk
准备工作
git clone https://github.com/deviantony/docker-elk.git
elk 简介
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。主要负责将日志索引并存储起来,方便业务方检索查询。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
配置elk
- .env 下设置 password
- ELASTIC_PASSWORD='yourPassword'
- LOGSTASH_INTERNAL_PASSWORD='yourPassword'
- KIBANA_SYSTEM_PASSWORD='yourPassword'
- 配置 logstash 插件
-
vim logstash\DockerfileARG ELASTIC_VERSION # https://www.docker.elastic.co/ FROM docker.elastic.co/logstash/logstash: {ELASTIC_VERSION} # Add your logstash plugins setup here # Example: RUN logstash-plugin install logstash-filter-json RUN logstash-plugin install logstash-filter-json RUN logstash-plugin install logstash-filter-multiline按自己的需求配置插件,配置插件后需要
docker-compose build才能生效。
-
- 配置 logstash
-
vim logstash\pipeline\logstash.confinput { beats { port => 5044 } tcp { mode => "server" port => 5000 codec => json_lines } } ## Add your filters / logstash plugins configuration here filter { multiline { pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2} :\d{1,2}:\d{1,2}" negate => true what => "previous" } } output { elasticsearch { hosts => "elasticsearch:9200" user => "logstash_internal" password => "${LOGSTASH_INTERNAL_PASSWORD}" } }这里配置了一个多行输出的插件,有需要的话自己添加自己需要的插件并在这里配置。
-
- 项目根目录执行
docker-compose up
程序上传日志数据至 logstash
程序配置:(java-spring 为例)
logback-spring.xml
···
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash日志收集端口-->
<destination>localhost:5000</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
···
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="FILE" />
<appender-ref ref="LOGSTASH"/>
</root>
···
kibana 查看 log 数据
- 登录 http://localhost:5601/
- user
elasticpasswordyourPassword - 进入 discover 页面进行使用 KQL 搜索