ELK Stack 安装、配置以及集成到 Java 微服务中的使用

ELK Stack 是由 Elasticsearch、Logstash 和 Kibana 组成的日志管理解决方案。以下是详细的安装、配置步骤以及如何将其集成到 Java 微服务中。

1. 安装 ELK Stack
1.1 安装 Elasticsearch

在 Ubuntu 上安装 Elasticsearch:

bash

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list' sudo apt-get update sudo apt-get install elasticsearch

在 CentOS 上安装 Elasticsearch:

bash

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF [elasticsearch] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF sudo yum install elasticsearch

启动和启用 Elasticsearch 服务:

bash

sudo systemctl start elasticsearch sudo systemctl enable elasticsearch

1.2 安装 Logstash

在 Ubuntu 上安装 Logstash:

bash

sudo apt-get install logstash

在 CentOS 上安装 Logstash:

bash

sudo yum install logstash

启动和启用 Logstash 服务:

bash

sudo systemctl start logstash sudo systemctl enable logstash

1.3 安装 Kibana

在 Ubuntu 上安装 Kibana:

bash

sudo apt-get install kibana

在 CentOS 上安装 Kibana:

bash

sudo yum install kibana

启动和启用 Kibana 服务:

bash

sudo systemctl start kibana sudo systemctl enable kibana

2. 配置 ELK Stack
2.1 配置 Elasticsearch

编辑 Elasticsearch 配置文件 /etc/elasticsearch/elasticsearch.yml:

yaml

network.host: 0.0.0.0 discovery.type: single-node

重启 Elasticsearch 服务:

bash

sudo systemctl restart elasticsearch

2.2 配置 Logstash

创建一个 Logstash 配置文件 /etc/logstash/conf.d/logstash.conf:

conf

input { tcp { port => 5000 codec => json_lines } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "logs-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }

重启 Logstash 服务:

bash

sudo systemctl restart logstash

2.3 配置 Kibana

编辑 Kibana 配置文件 /etc/kibana/kibana.yml:

yaml

server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"]

重启 Kibana 服务:

bash

sudo systemctl restart kibana

3. 集成 ELK Stack 到 Java 微服务
3.1 添加依赖

在你的 Java 项目中,使用 Maven 或 Gradle 添加 Logstash TCP 客户端库的依赖。

Maven 依赖:

xml

<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.6</version> </dependency>

Gradle 依赖:

groovy

implementation 'net.logstash.logback:logstash-logback-encoder:6.6'

3.2 配置 Logback

编辑 Logback 配置文件 logback.xml:

xml

<configuration> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>localhost:5000</destination> <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> <root level="info"> <appender-ref ref="LOGSTASH" /> </root> </configuration>

3.3 示例代码

以下是一个简单的 Java 示例,展示如何记录日志。

LoggerExample.java:

java

import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerExample { private static final Logger logger = LoggerFactory.getLogger(LoggerExample.class); public static void main(String[] args) { logger.info("This is an info message"); logger.error("This is an error message", new RuntimeException("Test Exception")); } }

4. 运行示例
4.1 启动 ELK Stack 服务

确保 Elasticsearch、Logstash 和 Kibana 服务都已启动并正常运行。

4.2 运行 Java 应用

在终端中运行 Java 应用:

bash

java -cp .:logback-classic-1.2.3.jar:logback-core-1.2.3.jar:slf4j-api-1.7.30.jar:logstash-logback-encoder-6.6.jar LoggerExample

4.3 查看日志

打开浏览器,访问 http://<服务器IP>:5601,进入 Kibana 管理界面。

  1. 创建索引模式:

    • 进入 Management -> Index Patterns。
    • 输入 logs-* 并点击 Next step。
    • 选择时间字段 @timestamp 并点击 Create index pattern。
  2. 查看日志:

    • 进入 Discover 页面,可以看到从 Java 应用发送的日志。

总结

通过以上步骤,你可以成功安装、配置和将 ELK Stack 集成到 Java 微服务中。ELK Stack 提供了强大的日志管理和分析功能,适合微服务架构中的日志处理需求。希望这些示例能帮助你快速上手 ELK Stack 在 Java 中的使用。

相关推荐
打工仔折腾 AI几秒前
AI Agent 工程化实战(二):5 分钟跑通 Deep Agent 并逐层拆解底层链路
java·数据库·人工智能·后端·python·langchain·ai agent 实战
秋名RG6 分钟前
(二)存储、CPU 与指令执行——程序为什么快,又为什么慢
java·开发语言
BeiGuTing_code13 分钟前
Java泛型与Object
java·开发语言
惊讶的猫14 分钟前
Tika文档解析
java
HEJOO919 分钟前
Java 类加载过程详解:从加载到初始化的完整链路
java·开发语言·firefox
科学熊29 分钟前
Java 分布式理论与高并发编程
java·开发语言·分布式
砚底藏山河37 分钟前
python量化实操:回测数据缓存与重放
java·python·金融·1024程序员节
学长毕设42 分钟前
基于springboot的农资管理系统-附源码
java·spring boot·后端
晒太羊的猫1 小时前
hot100子串
java·算法·leetcode