elk
(一) 背景:
java后台项目日志太多,按天生成log文件,一天可能到1g以上, 不方便查找。
(二) 解决方案:
搭建elk日志收集系统,生成的log文件采用logstash组件通过tcp、log4j两种方式传给远程的Elesticsearch服务。Web端搭建kibana组件进行展示。
(三) 安装ELK:
- 下载
同版本号logstash、elesticsearch、kibana组件,下载地址 https://elasticsearch.cn/download/。由于服务器上有6.2.4版本的es,所以此处全部安装此版本组件。
- 启动
分别启动Elasticsearch、Logstash、Kibana
a) elasticsearch.yml配置访问的ip地址和端口,默认127.0.0.1:9200,此处将127.0.0.1 修改为实际ip,方便远程调用。\bin\elasticsearch启用后浏览器访问http://127.0.0.1:9200/。
b) \logstash-6.2.4\config\logstash.ymll配置访问的ip地址和端口,在\logstash-6.2.4\config下添加文件logstash.conf,内容如下:
input {
tcp {
mode => "server"
host => "172.16.102.85"
port => 4560
codec => json_lines
type => "jddns-servers-1"
}
log4j {
mode => "server"
host => "172.16.102.85"
port => 4561
codec => json_lines
type => "jddns-servers-2"
}
}
output {
if [type] == "jddns-servers-1" {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "logstash-service-4560-%{+YYYY.MM.dd}"
}
}
if [type] == "jddns-servers-2" {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "logstash-service-4561-%{+YYYY.MM.dd}"
document_type => "log4j_type"
}
}
}
log4j默认没有捆绑的,需要手动安装: bin/logstash-plugin install logstash-input-log4j
这里监听了2个端口4560、4561 , 4561监听log4j日志, 4560 监听java后台springboot的logback日志。
\bin目录下执行logstasht -f ../config/logstash.conf后在浏览器访问http://127.0.0.1:9600/
c) kibana-6.2.4 \config\kibana.yml配置访问的ip地址和端口,默认127.0.0.1:5601
执行\bin\kibana.后在浏览器访问http://172.16.102.85:5601/
(四) 项目配置
Springboot项目logback-spring.xml:
<springProperty scope="context" name="springAppName" source="server.name"/>
<appender name="logstash"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>172.16.102.85:4560</destination>
<!-- 日志输出编码 -->
<encoder
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>GMT+8</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>
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="PROD_FILE"/>
<appender-ref ref="logstash"/>
</root>
Java项目log4j.properties
log4j.rootLogger=INFO, socket
#调用BehaviorRecordLogHandler中的方法的日志输出到logstash
# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4561
log4j.appender.socket.RemoteHost=172.16.102.85
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}%m%n
log4j.appender.socket.ReconnectionDelay=10000
(五) 使用
添加索引:
将索引名称从列表中复制上来:
添加完成之后,在discover中查询 :
过滤查询
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话