SpringBoot+Redis+ELK日志集中存储和查询
508 字
3 分钟
SpringBoot+Redis+ELK日志集中存储和查询
安装Elasticsearch
增加一些配置
-
进入elasticsearch容器
Terminal window docker exec -it elasticsearch bash -
编辑config/elasticsearch.yml 追加配置
http.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: Authorizationxpack.security.enabled: truexpack.security.transport.ssl.enabled: true -
重启
Terminal window docker restart elasticsearch -
设置密码
Terminal window bin/elasticsearch-setup-passwords interactive -
再重启
Terminal window docker restart elasticsearch -
设置分片-进到容器中先
Terminal window curl -XPUT -u elastic -H "Content-Type:application/json" http://localhost:9200/_cluster/settings -d '{ "persistent": { "cluster": { "max_shards_per_node": 10000 } } }'
安装Kibana
-
拉取镜像
Terminal window docker pull kibana:7.6.2 -
运行容器
Terminal window docker run --name kibana --link=elasticsearch --net skywalking_skywalking -p 5601:5601 -d kibana:7.6.2 -
修改配置
Terminal window docker exec -it kibana bashcd configvi kibana.yml# Default Kibana configuration for docker targetserver.name: kibanaserver.host: "0"elasticsearch.hosts: ["http://elasticsearch:9200"]xpack.monitoring.ui.container.elasticsearch.enabled: truei18n.locale: "zh-CN"elasticsearch.username: "elastic"elasticsearch.password: "123456" -
重启
Terminal window docker restart kibana
安装Logstash
-
拉取镜像
Terminal window docker pull logstash:7.6.2 -
编辑配置文件
Terminal window mkdir -p /data/elk/logstashvim /data/elk/logstash/logstash.ymlhttp.host: "0.0.0.0"xpack.monitoring.elasticsearch.hosts: ["http://192.168.0.233:9200"]xpack.monitoring.elasticsearch.username: "logstash_system"xpack.monitoring.elasticsearch.password: "77589910"#path.config: /data/elk/logstash/conf.d/*.confpath.config: /data/docker/logstash/conf.d/*.confpath.logs: /var/log/logstash -
编辑conf文件 就
testlog.confTerminal window mkdir /data/elk/logstash/conf.dvim /data/elk/logstash/conf.d/testlog.confinput {redis {codec => jsondata_type => "list"key => "logstash-list"host => "192.168.0.233"port => "6379"password => "123456"batch_count => 100threads => 1}}output {elasticsearch {hosts => ["192.168.0.233:9200"]index => "platform-log-%{+YYYY.MM}"user => "elastic"password => "77589910"}} -
编辑本地rsyslog配置增加
Terminal window vim /etc/rsyslog.conf #增加下面一行*.* @@192.168.0.233:5044 -
重启服务使配置生效
Terminal window systemctl restart rsyslog -
创建容器
Terminal window docker run -d --restart=always --log-driver json-file --log-opt max-size=1000m --log-opt max-file=30 -p 5044:5044 --name logstash -v /data/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /data/elk/logstash/conf.d/:/data/docker/logstash/conf.d/ logstash:7.6.2
发送日志到redis
-
需要的依赖
<dependency><groupId>de.idealo.logback</groupId><artifactId>logback-redis</artifactId></dependency><dependency><groupId>com.yomahub</groupId><artifactId>tlog-all-spring-boot-starter</artifactId></dependency><dependency><groupId>com.yomahub</groupId><artifactId>tlog-logstash-logback</artifactId></dependency> -
设置logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?><configuration><appender name="Console" class="ch.qos.logback.core.ConsoleAppender"><!--这里替换成AspectLogbackEncoder--><encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 获取yml中的配置 --><springProperty scope="context" name="redis-host" source="spring.redis.host"/><springProperty scope="context" name="redis-port" source="spring.redis.port"/><springProperty scope="context" name="redis-password" source="spring.redis.password"/><!--程序关闭时关闭redis批处理的钩子--><shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/><appender name="Logstash" class="net.logstash.logback.appender.LoggingEventAsyncDisruptorAppender"><ringBufferSize>131072</ringBufferSize><appender class="de.idealo.logback.appender.RedisBatchAppender"><connectionConfig><!--redis node--><scheme>NODE</scheme><host>${redis-host}</host><port>${redis-port}</port><password>${redis-password}</password><key>logstash-list</key><timeout>20000</timeout></connectionConfig><maxBatchMessages>1000</maxBatchMessages><maxBatchSeconds>10</maxBatchSeconds><encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><provider class="com.yomahub.tlog.logstash.logback.TLogLogstashLogbackProvider"/><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern><pattern>{"level": "%level","thread": "%thread","class": "%logger{40}","message": "%message","stack_trace": "%exception{10}","client_time": "%d{yyyy-MM-dd HH:mm:ss.SSS}"}</pattern></pattern><stackTrace><throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter"><maxDepthPerThrowable>10</maxDepthPerThrowable><maxLength>4096</maxLength><shortenedClassNameLength>20</shortenedClassNameLength><rootCauseFirst>true</rootCauseFirst></throwableConverter></stackTrace></providers></encoder></appender></appender><appender name="Async" class="ch.qos.logback.classic.AsyncAppender"><neverBlock>true</neverBlock><appender-ref ref="Logstash"/></appender><logger name="org.springframework" level="ERROR"/><logger name="com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository" level="ERROR"/><logger name="org.springframework.boot.autoconfigure" level="ERROR"/><logger name="org.springframework.data.redis" level="ERROR"/><logger name="com.alibaba" level="ERROR"/><logger name="ch.qos.logback" level="ERROR"/><logger name="com.tianch" level="DEBUG"/><root level="INFO"><appender-ref ref="Console"/><appender-ref ref="Async"/></root></configuration>
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
SpringBoot+Redis+ELK日志集中存储和查询
https://tianch.com.cn/posts/tutorials/springboot-redis-elk-ri-zhi-ji-zhong-cun-chu-he-cha-xun/相关文章智能推荐
1
基于SpringBoot+logstash+redis实现日志异步集中存储
中间件logstash是一个数据分析软件,主要目的是分析log日志。整一套软件可以当作一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是view层。首先将数据传给logstash
2
基于SpringBoot+logback+MDC使用拦截器实现日志输出里为每个请求设置唯一请求ID
JavaMDC为“Mapped Diagnostic Context”(映射诊断上下文),即将一些运行时的上下文数据通过logback打印出来;此时我们需要借助org.sl4j.MDC类。
3
SpringBoot统一参数校验
Java2026-01-05
4
Spring/SpringBoot常用注解总结
Java这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。
5
SpringBoot配置文件中数据库密码加密
Java2021-06-24
随机文章随机推荐


