SpringBoot使用SOFA-Lookout监控

本文介绍如何在SpringBoot项目中使用蚂蚁金服的SOFA-Lookout配合Prometheus实现系统监控,包括配置步骤、Prometheus及Grafana的集成方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍SpringBoot使用蚂蚁金服SOFA-Lookout配合Prometheus进行监控。

1.SOFA-Lookout介绍

上一篇已经介绍使用Prometheus进行暴露SpringBoot的一些指标进行监控,传送门,这一篇介绍如何使用SOFA-Lookout配合Prometheus。

SOFA-Lookout是蚂蚁金服开源的一款解决系统的度量和监控问题的轻量级中间件服务。它提供的服务包括:Metrics 的埋点、收集、加工、存储与查询等。

正如介绍的,SOFA-Lookout提供了一些常用的监控指标,比如JVM线程,JVM类加载,JVM内存,JVM垃圾回收,机器文件系统信息和机器信息。在1.5.0版本之后默认也提供了一些Linux操作系统的信息。具体可以查看:https://www.sofastack.tech/sofa-lookout/docs/client-ext-metrics

2.SpringBoot使用SOFA-Lookout

2.1 配置依赖

新建项目,在项目中加入SOFA依赖,完整pom如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.dalaoyang</groupId>
    <artifactId>springboot2_sofa_lookout</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot2_sofa_lookout</name>
    <description>springboot2_sofa_lookout</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alipay.sofa.lookout</groupId>
            <artifactId>lookout-sofa-boot-starter</artifactId>
            <version>1.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.alipay.sofa.lookout</groupId>
            <artifactId>lookout-reg-prometheus</artifactId>
            <version>1.5.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.2 配置SOFA-Lookout端口

这里需要配置一个SOFA-Lookout的端口,生产环境使用的话一定要查看这个端口是不是被占用了。配置如下,这里配置的端口是8081。

spring.application.name=springboot2_sofa_lookout
com.alipay.sofa.lookout.prometheus-exporter-server-port=8081

其实到这里,SpringBoot项目已经配置完成了,当然还可以自定义一些指标,这里不做介绍。

3.Prometheus配置

Prometheus需要配置一下刚刚SOFA-Lookout的端口,如下:

  - job_name: 'springboot2_sofa_lookout'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:8081']

4.Grafana

这里也可以将Prometheus展示给Grafana,我也查询了很多,但是貌似目前Grafana还没有默认推荐的Dashboard,大家可以根据情况自行构建,当然,如果有好的也希望可以推荐一下。

5.测试

启动SpringBoot应用,控制台如下所示。

看到红框部分就是启动成功了。接下来查看Prometheus界面,如下。

这里Grafana在看一下Grafana界面,如图。

6.源码

源码地址:https://gitee.com/dalaoyang/springboot_learn/tree/master/springboot2_sofa_lookout

### SOFA-JRaft 使用教程 SOFA-JRaft 是基于 Raft 共识协议实现的一个高可用分布式一致性库,适用于构建可靠的分布式系统组件。该库提供了 Java 实现,并且支持多种应用场景下的共识决策。 #### 安装与依赖设置 为了使用 SOFA-JRaft,在项目中引入 Maven 或 Gradle 依赖项: 对于 Maven 用户来说,可以在 `pom.xml` 文件里加入如下配置[^1]: ```xml <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>jraft-core</artifactId> <version>${jraft.version}</version> </dependency> ``` 而对于采用 Gradle 构建工具的开发者,则需编辑 build.gradle 添加下面的内容: ```groovy implementation 'com.alipay.sofa:jraft-core:${jraft.version}' ``` 请注意替换 `${jraft.version}` 为实际版本号。 #### 基本概念介绍 - **节点(Node)**: 参与者之一;集群中的每一个实例都是一个节点。 - **日志(Logs)**: 记录操作命令序列的数据结构。 - **状态机(State Machine)**: 应用程序逻辑的具体体现形式。 初始化过程中涉及到的主要类有 NodeImpl 和 Configuration, 这些都位于 com.alipay.sofa.jraft 包下. #### 创建并启动服务端 创建一个新的 JRaft 节点非常简单: ```java import com.alipay.sofa.jraft.Node; import com.alipay.sofa.jraft.conf.Configuration; public class MyService { private final static String PEERS = "n1=localhost:8081,n2=localhost:8082"; public void start() throws Exception{ // 初始化配置信息 Configuration conf = new Configuration(); conf.parse(PEERS); // 启动节点... Node node = ...; // 省略具体细节 try { if (!node.start()) { throw new RuntimeException("Failed to start the node"); } } catch (Exception e){ System.err.println(e.getMessage()); } } } ``` 这段代码展示了如何定义一组服务器地址作为初始成员列表,并尝试启动指定的服务实例。 #### 日志管理与持久化存储 默认情况下,JRaft 将会把所有的变更记录保存到本地磁盘上以确保数据不会因为进程崩溃而丢失。可以通过修改 raft.log.dir 参数来自定义日志文件的位置以及其它参数来调整性能特性。 #### 故障排查指南 当遇到问题时可以按照以下建议进行诊断: - 查看最近的日志条目是否有异常提示; - 检查网络连接状况是否正常工作; - 如果怀疑是由于硬件资源不足引起的问题,请监控 CPU、内存利用率等指标; - 对于复杂的场景还可以启用更详细的调试模式以便获取更多信息用于分析原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值