网站首页 > 技术文章 正文
SpringBoot利用ELK实现日志收集
ELK是Elasticsearch、Logstash、Kibana他们三个组合起来可以搭建日志系统,本文主要讲解使用ELK收集SoringBoot应用产生的日志
Elasticsearch、Logstash、Kibana作用
- Elasticsearch:存储日志信息
- Logstash: 日志收集,springboot利用Logstash把日志发送给Logstash,然后Logstash将日志传递给Elasticsearch。
- Kibana:通过web端对日志进行可视化操作
1. 对Elasticsearch安装
- 下载Elasticsearch镜像
docker pull Elasticsearch:7.6.2
- 修改虚拟内存地址,否则可能出现内存过小无法启动:
sysctl -w vm.max_map_count=262144
- 启动Elasticsearch服务:
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2
- 启动时/usr/share/elasticsearch会出现没有访问权限,需要修改/mydata/elasticsearch/data/权限,然后重新启动elasticsearch
chmod 777 /mydata/elasticsearch/data/
- 安装IKAnalyzer中文分词器,并重新启动:
docker exec -it elasticsearch /bin/bash
#此命令需要在容器中运行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
docker restart elasticsearch
注:离线安装elasticsearch中插件
- 1.下载elasticsearch-analysis-ik-7.6.2.zip
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
- 2.上传到linux
- 3.上传的linux复制到elasticsearch容器中
docker cp elasticsearch-analysis-ik-7.6.2.zip elasticsearch:/
- 4.安装插件
docker exec -it elasticsearch /bin/bash
elasticsearch-plugin install file:////elasticsearch-analysis-ik-7.6.2.zip
docker restart elasticsearch
- 如果防火墙没有关闭
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
- 访问版本信息:http://192.168.154.125:9200
安装Logstash的Docker镜像
- 1.下载Logstash镜像
docker pull logstash:7.6.2
- 2.添加Logstash配置文件logstash.conf
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
type => "debug"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4561
codec => json_lines
type => "error"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4562
codec => json_lines
type => "business"
}
tcp {
mode => "server"
host => "0.0.0.0"
port => 4563
codec => json_lines
type => "record"
}
}
filter{
if [type] == "record" {
mutate {
remove_field => "port"
remove_field => "host"
remove_field => "@version"
}
json {
source => "message"
remove_field => ["message"]
}
}
}
output {
elasticsearch {
hosts => "es:9200"
index => "mall-%{type}-%{+YYYY.MM.dd}"
}
}
- 3.创建/mydata/logstash,将logstash.conf拷贝到该目录
mkdir /mydata/logstash
- 4.启动logstash
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
--link elasticsearch:es \
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.6.2
Kibana安装
- 1.下载Kibana镜像
docker pull kibana:7.6.2
- 2.启动Kibana
docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:7.6.2
- 3.如果防火墙没有关闭
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
- 4.将kibana变为中文
docker exec -it kibana bash
cd config
vi kibana.yml
- 5.在kibana.yml中添加
il8n.locale:"zh-CN"
- 6.访问http://192.168.154.125:5601进行测试
SpringBoot集成Logstash
添加Logstash依赖
<!--集成logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
添加配置文件logback-spring.xml,使得logbach日志输入到logstash
注:destination节点下的ip地址需要修改成自己的logstash服务地址
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!--应用名称-->
<property name="APP_NAME" value="mall-admin"/>
<!--日志文件保存路径-->
<property name="LOG_FILE_PATH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>
<contextName>${APP_NAME}</contextName>
<!--每天记录日志到文件appender-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--输出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash日志收集端口-->
<destination>192.168.154.125:4560</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>
</configuration>
在application.yml中添加在开发环境可以进行测试
spring:
profiles:
active: dev
logging:
file:
path: /var/logs
level:
root: info
config: classpath:logback-spring.xml
注:如果要发布以后查看日志将dev修改为prod
调用接口进行测试
查看收集的日志
- 1.创建索引
- 2.查看日志
总结
本文讲解了如何搭建ELK日志平台系统,以后如果查看日志文件,直接到Kibana中查看即可
谢谢关注
猜你喜欢
- 2024-10-18 日志分析平台——ELK安装配置 elk实时日志
- 2024-10-18 利用 ELK(Elasticsearch + Logstash + Kibana) 搭建日志分析平台
- 2024-10-18 超详细的EFK安装部署教程--filebeat日志数据采集
- 2024-10-18 ELK总结——第二篇Logstash的搭建
- 2024-10-18 亿级 ELK 日志平台构建实践 elk日志系统搭建
- 2024-10-18 ELK日志管理方案-Centos6安装Elasticsearch
- 2024-10-18 ELK超详细配置 elk7.12
- 2024-10-18 如何用ELK搭建TB级微服务海量日志监控系统?
- 2024-10-18 logback+kafka+elk搭建日志 logback kafka appender
- 2024-10-18 ELK + kafka 日志方案 kafka 日志系统
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)