拉取ELK集成镜像
docker pull sebp/elk
启动ELK
[root@localhost /]# echo "vm.max_map_count=262144" > /etc/sysctl.conf
[root@localhost /]# sysctl -p
[root@localhost /]# docker run -dit --name elk \
-p 5601:5601 \
-p 9200:9200 \
-p 5044:5044 \
-v /opt/elk-data:/var/lib/elasticsearch \
-v /etc/localtime:/etc/localtime \
sebp/elk:740
注:-p 指定映射端口,5601kibana访问,9200es端口,5044 logstash收集日志端口;-v 指定es数据目录。
配置ELK(以下内容全部在容器内操作)
进入docker容器
[root@localhost /]# docker exec -it elk /bin/bash
/etc/logstash/ ## logstash 配置文件路径
/etc/elasticsearch/ ## es 配置文件路径
/var/log/ ## 日志路径
配置Logstash
[root@localhost /]# vim /etc/logstash/conf.d/02-beats-input.conf
# 数据输入配置:port -> 端口号;codec -> 输入格式。这里以logback为例。
input {
tcp {
port => 5044
codec=>json_lines
}
}
# 数据输出配置:hosts -> 主机集合;index -> 你将要创建的索引名称。这里es为例。
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "%{[appName]}-%{+YYYY.MM.dd}"
}
}
注:这个配置文件可以在/etc/logstash/conf.d/目录下创建,也可直接修改原有配置文件,看个人需求。
配置kibana中文
[root@localhost /]# vim /opt/kibana/config/kibana.yml
注:打开文件后,在文件内追加 i18n.locale: "zh-CN" ,重启服务即可。
常用服务操作命令
[root@localhost /]# service logstash start/restart/stop/status
[root@localhost /]# service elasticsearch start/restart/stop/status
[root@localhost /]# service kibana start/restart/stop/status
注:上面是各个服务 启动 / 重启 / 停止 / 状态,服务较大操作会比较缓慢,不要重复执行命令。
集成到Spring Boot(LogBack)
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>
logback-spring.xml
<springProperty name="appName" source="spring.application.name"/>
<appender name="logstash"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>10.1.20.16:5044</destination>
<!-- 日志输出编码 -->
<!-- <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">-->
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"${appName}"}</customFields>
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"severity": "%level",
"service": "${springAppName:-}",
"trace": "%X{X-B3-TraceId:-}",
"span": "%X{X-B3-SpanId:-}",
"exportable": "%X{X-Span-Export:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"rest": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
网友评论