一、ELK应用场景
在复杂的企业应用服务群中,记录日志方式多种多样(如写到文件、MongoDB、Redis等),并且不易归档以及提供日志监控的机制。无论是开发人员还是运维人员都无法准确的定位服务、服务器上面出现的种种问题,也没有高效搜索日志内容从而快速定位问题的方式。因此需要一个集中式、独立的、搜集管理各个服务和服务器上的日志信息,集中管理,并提供良好的UI界面进行数据展示,处理分析。
ELK为此提供一套开源的解决方案,能高效、简便的满足以上场景。
二、ELK简介
ELK分别是Elasticsearch、Logstash、Kibana三个开源框架缩写。
框架 | 简介 | 作用 |
---|---|---|
Elasticsearch | 开源分布式搜索引擎,提供存储、分析、搜索功能。特点:分布式、基于reasful风格、支持海量高并发的准实时搜索场景、稳定、可靠、快速、使用方便等。 | 接收搜集的海量结构化日志数据,并提供给kibana查询分析 |
Logstash | 开源日志搜集、分析、过滤框架,支持多种数据输入输出方式。 | 用于收集日志,对日志进行过滤形成结构化数据,并转发到elasticsearch中 |
Kibana | 开源日志报表系统,对elasticsearch以及logstash有良好的web页面支持。 | 对elasticsearch提供的数据进行分析展示 |
三、快速安装
ELK下载地址:https://www.elastic.co/downloads/
本人下载的版本是:``
我的安装环境:
jdk:1.8
win10
ELK版本:
7.3.2
Elasticsearch安装启动
下载Elasticsearch并解压。
修改config/elasticsearch.yml配置文件(也是默认配置,可以不做修改)
network.host=localhost
network.port=9200
- 双击
elasticsearch.bat
,启动成功,访问localhost:9200
{
"name" : "MicroWin10-1838",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "c8K5_DQeQP-8ktjsMUODLQ",
"version" : {
"number" : "7.3.2",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "1c1faf1",
"build_date" : "2019-09-06T14:40:30.409026Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Logstash安装启动
下载Logstash并解压
在bin目录下添加
logstash.conf
文件:
input {
tcp {
##host:port就是上面appender中的 destination,这里其实把logstash作为服务,开启8080端口接收logback发出的消息
host => "localhost"
port => 8080
#模式选择为server
mode => "server"
tags => ["tags"]
##格式json
codec => json_lines
}
}
output {
elasticsearch {
#ES地址
hosts => "127.0.0.1:9200"
#指定索引名字
index => "applog"
}
stdout { codec => rubydebug}
}
- 新建
start-logstash.bat
启动脚本:
logstash -f logstash.conf
- 双击
start-logstash.bat
启动Logstash,访问localhost:9600
{
"host": "MicroWin10-1838",
"version": "7.3.2",
"http_address": "127.0.0.1:9600",
"id": "dd208a87-ae74-4185-84f0-06211451d615",
"name": "MicroWin10-1838",
"ephemeral_id": "a67ad029-7f6c-46ab-95a9-f8fff4b3124e",
"status": "green",
"snapshot": false,
"pipeline": {
"workers": 4,
"batch_size": 125,
"batch_delay": 50
},
"build_date": "2019-09-06T16:42:57+00:00",
"build_sha": "1071165b526bcd43b475caed0b4289e3d32dc52f",
"build_snapshot": false
}
kibana安装启动
下载kibana并解压
-
汉化
将
kibana/config/kibana.yml
中的默认配置#i18n.locale: "en"
改为i18n.locale: "zh-CN"
#汉化
i18n.locale: "zh-CN"
-
其他配置直接默认即可,
bin/kibana.bat
双击运行,启动成功,访问localhost:5601
也可以在
kibana/config/kibana.yml
中修改配置
server.port: 5601 ##服务端口
server.host: "0.0.0.0" ##服务器ip 本机
elasticsearch.url: "http://localhost:9200" ##elasticsearch服务地址 与elasticsearch对应
软件的安装到此就完成了
四、SpringBoot集成ELK
1.pom.xml添加依赖
net.logstash.logback
logstash-logback-encoder
4.9
2.配置logback.xml
这里是直接把日志推送到了Logstash。
localhost:8080
%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
3.测试代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class LogTest {
// 定义一个全局的记录器,通过LoggerFactory获取
private final static Logger log = LoggerFactory.getLogger(Test.class);
@Test
public void test() {
log.trace("trace 成功了");
log.debug("debug 成功了");
log.info("info 成功了");
log.warn("warn 成功了");
log.error("error 成功了");
}
}
4.查看新生成的日志
访问localhost:5601