MAC环境下ELK搭建教程
一、什么是ELK
1、ELK:
即是Elasticsearch、Logstash、Kibana四者的结合,是一套开源的分布式日志管理方案。
Elasticsearch:
是基于 lucene 的开源搜索引擎。
Logstash:
是一个应用程序日志、事件的传输、处理、管理和搜索的平台。
Kibana:
是一个功能强大的 Elasticsearch 数据显示客户端。
工作流程:
基于公司项目所构建的环境,日志采集处理流程为:
Logback(采集输出实时日志)->Logstash(收集,过滤处理,管理)->Elasticsearch(持久化)->Kibana(可视化展示)
二、搭建流程
此篇文档基于MAC环境下安装,对类linux环境参考价值较大,其他操作系统可根据文档提醒的细节查找解决办法。
下载:
如果已装有homebrew,这里建议使用homebrew安装Elasticsearch和kibana,可以免去很多复杂的配置。
Elasticsearch:
结合具体情况,在指定的目录下下载,此篇文档中在系统home目录下。
执行命令:
brew install elasticsearch
若homebrew一直处于uodating的状态,建议可以切换一下镜像,执行命令:
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
出现截图中的情况即为下载成功
验证是否成功安装可以使用命令查看Elasticsearch是否能够启动:
brew services start elasticsearch
在浏览器中输入:localhost:9200,出现一下页面即为安装且启动成功。
Kibana:
kibana同样使用homebrew下载,与elasticsearch的安装大同小异,不过kibana配置较少且简单,直接从官网下载无妨。
执行安装命令:
brew install kibana
执行启动命令:
brew services start kibana
Logstash:
logstash不建议使用homebrew安装,这里有个坑,但也有可能是homebrew版本问题,在homebrew下载的logstash下不存在bin文件夹,大家尽量绕坑而行吧。
可以选择去官网自行下载:
https://www.elastic.co/downloads/logstash
三、文件配置
Elasticsearch:
可以使用vim,找到elasticsearch下的elasticsearch.yml文件
vim /usr/local/etc/elasticsearch/
将圈住的字段的注释取消,host与port见名知意,即为elasticsearch服务对应的地址与端口号。分别默认为127.0.01与9200。
其他配置字段详情可见文档:
http://www.cnblogs.com/xiaochina/p/6855591.html
Logstash:
找到下载的logstash文件夹,找到config目录,追寻到logstash.yml配置文件下。
logstash具体配置详情可见官方文档:
input:
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
filter:
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
output:
https://www.elastic.co/guide/en/logstash/current/output-plugins.html
// 从logback输入到logstash日志配置 input { tcp { host => "127.0.0.1" // 填写日志源实际host与port port => 8000 mode => "server" // server or client ssl_enable => false } } // filter,暂不考虑 // 输出,可以指定具体输出elasticsearch的具体地址 output { elasticsearch { hosts => ["http://127.0.0.1:9200"] // 这个字段值为一个数组,可填入多个host index => "log-test" // 创建的index-partern名,即索引名 manage_template => true // 是否采用系统默认模版 template_overwrite => true // 若选择新模版是否重写覆盖模版 } stdout { codec => rubydebug { } } }
启动命令:
在所下载logstash的目录下,执行logstash启动服务的命令:
./bin/logstash -f config/logstash.conf
(-f后的路径,可选择你想要执行的配置文件)
Kibana:
同上找到kibana目录下的kibana.yml文件,指定接收的eslaticsearch的端口。
sudo vim /usr/local/etc/kibana/kibana.yml
将截图中对应字段的注释取消,根据实际情况修改为所期望填入的端口与地址。
启动命令:
homebrew services start kibana
Logback:
项目日志源同样需要配置,使项目日志能够实时地传输到logstash。在项目中resource目录下,找到logback.xml文件。
追加一条<appender>配置记录
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>127.0.0.1:8000</destination> <!-- encoder is required --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/> </appender>
logger便签配置追加一条appender-ref,ref值应与上文中定义的name值一致。
<logger name="org.springframework" level="INFO" additivity="false"> <appender-ref ref="console" /> <appender-ref ref="thirdPartyAppender" /> <appender-ref ref="stash" /> </logger>
配置稍微有点复杂,但我们根据logback->logstash->eslaticsearch->kibana的思路来就会发现四者的配置是相关联的,带着这个目的修改配置会简答清晰很多。
配置成功后,访问kibana即可查看logback收集的实时日志。
四、最终效果
1、logback能够实时将日志推送到logstash,logstash成功接收到日志
2、logstash将日志推送到Elasticsearch,kibana接收并在前端页面展示。