引言
ELK(ElasticSearch分布式搜索引擎、Logstash数据收集处理引擎和Kibana可视化化平台)是在大型后端架构中,一个标准的数据采集方案。
- Log Sources:表示各种应用程序(Application 1、Application 2、Application 3)生成的日志数据。
- Logstash:负责收集、过滤和解析来自各个日志源的数据,然后将其传输到Elasticsearch进行存储和索引。
- Elasticsearch:作为中央存储和搜索引擎,接收Logstash处理后的日志数据,并提供高效的存储和检索能力。
- Kibana:可视化和分析工具,用于创建仪表盘、图表和报表,并帮助用户对日志数据进行查询和探索。
其中springboot应用的角色就是Log Sources,进行日志分析集成主要是对接Logstash。主要使用到的是依赖logstash-logback-encoder
。
集成
Springboot集成
- 修改maven的依赖配置。
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.4</version>
</dependency>
<!-- Your project must also directly depend on either logback-classic or logback-access. For example: -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.3.7</version>
</dependency>
运行时出现 ClassNotFoundException/NoClassDefFoundError/NoSuchMethodError
这些异常可能需要降低logstash-logback-encoder的版本。
- 修改logback.xml配置文件。
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:5044</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"host":"${HOSTNAME}", "appname":"bigdata-air"}</customFields>
</encoder>
</appender>
<root level="INFO">
<!-- stash输出 -->
<appender-ref ref="stash" />
</root>
修改Logstash的pipeline
修改Logstash的管道配置,增加tcp和json解析。
vi logstash/pipeline/logstash.conf
## 增加配置
input {
tcp {
port => 5044
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "app-%{[appname]}-%{+YYYY.MM.dd}"
user => "test"
password => "123qazwww.."
}
stdout {
}
}
通过kibana查看日志
- 选择Management>Kinaba>Index Patterns 菜单
- 然后Create index pattern
- index pattern 输入
app-bigdata-air
- Time Filter field name 选择 currentDateTime
- index pattern 输入
- 选择Discover菜单即可查看
参考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/221976.html