日志系统 ELK 在 Spring Boot 上的初步集成 😋
ELK
Elasticsearch + Logstash + Kibana,一个比较流行的日志系统。当然,你也可以尝试使用阿里云。如果钱多的话:)
Logstash
日志搬运, 可以指定从 Redis/Log4j..处获取日志信息,然后进行过滤,再提交给
Elasticsearch
进行分析。
1 | 安装 & 启动 |
Elasticsearch
日志存储 / 查询 / 分析
1 | 安装 & 启动 |
如果你想直接查看、操作或者研究 elasticsearch
存储的内容,可以考虑使用 elasticsearch-head
进行操作。
UI 操作界面
1 | git clone git://github.com/mobz/elasticsearch-head.git |
如果 Elasticsearch 安装了 X-Path 那么需要在配置文件中(elasticsearch.yml
), 加入:
1 | http.cors.enabled: true |
对了, 这里有一款elasticsearch-head Chrome Plug-in 推荐。
Kibana
UI 界面
1 | wget https://www.elastic.co/downloads/kibana |
Spring Boot 集成
pom.xml
引入logback
支持。1
2
3
4
5<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>在
resources/
文件夹内创建logback-spring.xml
文件。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<configuration>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>dev.local:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<root level="INFO">
<appender-ref ref="LOGSTASH"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>配置 logstash, 创建
logstash.conf
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15input {
tcp {
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "applog"
; user => "elastic"
; password => "changeme"
}
}启动logstash
./bin/logstash -f logstash.conf
使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class TestControllerTest {
Random random = new Random();
public void testList() throws Exception {
while (true) {
Thread.sleep(1000);
log.info("Hello world form hocgin");
if (random.nextBoolean()) {
log.info("sksdjkf " + random.nextInt(1000));
}
}
}
}
关于 Kibana 安全配置
安装 x-pack.
1
2
3
4
5
6
logstash-plugin install x-pack
elasticsearch-plugin install x-pack
kibana-plugin install x-pack修改
config/kibana.yml
1
2elasticsearch.username: "elastic"
elasticsearch.password: "changeme"修改
logstash.conf
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15input {
tcp {
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "applog"
user => "elastic"
password => "changeme"
}
}
如果忘记 ElasticSearch 密码
- 停止
ElasticSearch
服务 - 创建一个管理员用户
1
x-pack/users useradd my_admin -p my_password -r superuser
- 启动
ElasticSearch
服务 - 使用 API 修改密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14curl -u my_admin -XPUT 'http://localhost:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password" : "new_password"
}'
``
# ELK Docker
- [ELK Docker](https://github.com/spujadas/elk-docker)
简而言之:
```shell
:5601 - Kibana
:9200 - Elasticsearch
:5044 - Logstash
sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk
:2019年3月23日,星期六 补充
ELK
L
配置文件位置: {}/config/
1 | ; 输入 |
解析器文件位置: {}/config/patterns/
K
配置文件位置: {}/config/kibana.yml
1 | elasticsearch.url: '{url}' |
默认端口: 8601