Spring Boot Actuator Endpoint 공개: 애플리케이션을 쉽게 모니터링
1. Spring Boot Actuator 엔드포인트 소개
1.1 Actuator 엔드포인트란
Spring Boot Actuator는 Spring Boot 애플리케이션을 모니터링하고 관리하는 데 사용되는 하위 프로젝트입니다. 애플리케이션의 상태, 작동 상태 및 작동 표시기를 보는 데 사용할 수 있는 일련의 내장 엔드포인트(Endpoint)를 제공합니다. 액추에이터 엔드포인트는 HTTP, JMX 또는 기타 형식으로 외부 시스템에 노출되어 운영 및 유지 관리 담당자가 애플리케이션을 모니터링, 진단 및 관리할 수 있습니다.
1.2 엔드포인트의 역할과 기능
Actuator 엔드포인트는 주로 다음 기능을 구현하는 데 사용됩니다.
- 데이터베이스 연결, 캐시, 메시지 큐 등을 포함한 애플리케이션의 상태 점검을 제공합니다.
- 메모리 사용량, GC 상태, 스레드 상태 등과 같은 애플리케이션의 메트릭 데이터를 수집합니다.
- 환경 변수, 시스템 속성, 구성 파일의 속성 등을 포함한 애플리케이션의 구성 정보를 봅니다.
- 보기 등 애플리케이션의 로그를 관리하고 로그 레벨을 동적으로 수정합니다
- 애플리케이션의 Spring Bean 정보 및 애플리케이션의 메타데이터 등을 가져옵니다.
- 애플리케이션 종료 기능 등을 제공합니다. .
1.3 Actuator 엔드포인트의 기본 구성
Spring Boot Actuator는 기본적으로 개발 환경에서 직접 액세스할 수 있는 일련의 내장 엔드포인트를 제공합니다. 그러나 프로덕션 환경에서는 권한 제어 및 엔드포인트의 노출 정책 구성이 필요할 수 있습니다. 액추에이터 엔드포인트는 application.properties 또는 application.yml 파일을 통해 구성할 수 있습니다. 예를 들어
management.endpoints.web.exposure.include를 구성하여 외부 액세스에 노출되는 엔드포인트를 제어하거나 Management.endpoints.web.base-path를 통해 엔드포인트의 URL 경로를 수정할 수 있습니다.
2. 내장 엔드포인트에 대한 자세한 설명
Spring Boot Actuator는 애플리케이션의 다양한 측면을 보고 관리하기 위한 다양한 내장 엔드포인트를 제공합니다. 다음은 일반적으로 사용되는 일부 엔드포인트에 대한 자세한 소개입니다.
2.1 /actuator/health
이 엔드포인트는 애플리케이션의 상태를 보는 데 사용됩니다. 데이터베이스 연결, 캐시, 메시지 대기열 등과 같은 다양한 구성 요소의 상태를 확인합니다. 반환되는 상태에는 UP(정상), DOWN(비정상), OUT_OF_SERVICE(유지보수 중) 등이 포함됩니다.
2.2 /actuator/info
이 엔드포인트는 버전 번호, 빌드 시간 등과 같은 애플리케이션의 기본 정보를 표시하는 데 사용됩니다. 이 정보는 일반적으로 애플리케이션의 구성 파일이나 빌드 시스템에서 가져옵니다.
2.3 /actuator/metrics
이 엔드포인트는 애플리케이션의 메트릭 데이터를 보는 데 사용됩니다. 메모리 사용량, GC, 스레드 상태 등에 대한 데이터를 수집합니다. 특정 측정항목의 세부정보는 매개변수를 추가하여 볼 수 있습니다. 예:
/actuator/metrics/jvm.memory.used。
2.4 /actuator/beans
이 엔드포인트는 애플리케이션의 모든 Spring Bean을 보는 데 사용됩니다. Bean의 이름, 유형, 범위 및 Bean이 속한 ApplicationContext와 같은 정보를 표시합니다.
2.5 /actuator/env
이 엔드포인트는 환경 변수, 시스템 속성, 구성 파일의 속성 등을 포함하여 애플리케이션의 환경 정보를 보는 데 사용됩니다. 매개변수를 추가하여 특정 속성의 값을 볼 수 있습니다(예: /actuator/env/server.port).
2.6 /actuator/loggers
이 엔드포인트는 애플리케이션의 로그를 보고 관리하는 데 사용됩니다. 현재 애플리케이션에 있는 모든 로거의 이름과 로그 수준을 표시합니다. POST 요청을 보내면 로거의 로그 수준을 동적으로 수정할 수도 있습니다.
2.7 /actuator/shutdown
이 엔드포인트는 애플리케이션을 종료하는 데 사용됩니다. 활성화하려면
management.endpoint.shutdown.enabled를 true로 구성해야 합니다. 프로덕션 환경에서는 일반적으로 오용을 방지하기 위해 이 엔드포인트에 대한 권한을 제어해야 합니다.
2.8 기타 엔드포인트
위의 공통 엔드포인트 외에도 Spring Boot Actuator는 다음과 같은 다른 엔드포인트도 제공합니다.
- /actuator/auditevents:查看应用程序的审计事件
- /actuator/threaddump:获取应用程序的线程转储信息
- /actuator/heapdump:获取应用程序的堆转储信息
- /actuator/mappings:查看应用程序的 URL 映射信息
三、端点配置与定制
在实际项目中,我们可能需要对 Spring Boot Actuator 的端点进行一些定制,以满足特定的需求。本节将介绍如何对端点进行配置和定制。
3.1 控制端点访问权限
访问端点可能涉及敏感信息,我们需要对端点进行权限控制。可以通过集成 Spring Security 或自定义拦截器实现访问权限控制。例如,仅允许具有 ADMIN 角色的用户访问 /actuator/shutdown 端点。
3.2 端点暴露策略
可以通过management.endpoints.web.exposure.include 和 management.endpoints.web.exposure.exclude 配置项来控制哪些端点应该被暴露。默认情况下,仅暴露 /actuator/health 和 /actuator/info 端点。例如,暴露所有端点:
management.endpoints.web.exposure.include=*
或者仅暴露某些特定端点:
management.endpoints.web.exposure.include=health,info,metrics,env
3.3 修改端点的 URL 路径
默认情况下,所有端点的路径都是以 /actuator 开头的。我们可以通过
management.endpoints.web.base-path 配置项修改这个前缀。例如,将其更改为 /admin:
management.endpoints.web.base-path=/admin
3.4 端点响应内容定制
默认情况下,某些端点的响应内容可能不包含我们关心的所有信息。可以通过实现自定义的 EndpointFilter 来定制端点的响应内容。例如,可以为 /actuator/health 端点添加自定义的健康指标。或者通过继承并重写原有端点的方法来实现定制。
通过这些定制方法,我们可以使 Spring Boot Actuator 更好地适应实际项目需求。
四、创建自定义端点
在某些情况下,内置的端点无法满足我们的需求,因此我们需要创建自定义端点。本节将介绍自定义端点的实现方式、应用场景举例以及如何注册和配置自定义端点。
4.1 自定义端点的实现方式
要创建自定义端点,需要实现org.springframework.boot.actuate.endpoint.web.annotation.RestControllerEndpoint 接口或 org.springframework.boot.actuate.endpoint.annotation.Endpoint 接口。其中,RestControllerEndpoint 接口允许我们创建基于 Web 的端点,而 Endpoint 接口则适用于其他类型的端点。
4.2 注册和配置自定义端点
创建自定义端点后,需要将其注册到 Spring Boot Actuator。我们可以通过将自定义端点作为 Bean 注册到 Spring 上下文来实现。例如:
import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.stereotype.Component; @Component @Endpoint(id = "cache-status") public class CacheStatusEndpoint { @ReadOperation public CacheStatus getCacheStatus() { // 在这里实现获取缓存状态的逻辑 // 例如,从缓存管理器中获取相关信息 CacheStatus cacheStatus = new CacheStatus(); cacheStatus.setCacheSize(100); cacheStatus.setHitCount(200); cacheStatus.setMissCount(50); return cacheStatus; } }
在上面的代码中,我们首先使用@Endpoint注解来指定端点的ID(即cache-status)。然后,我们定义了一个getCacheStatus()方法,使用@ReadOperation注解来表示这是一个读操作。此方法应返回一个表示缓存状态的对象(例如,CacheStatus类)。
接下来,我们需要定义CacheStatus类:
public class CacheStatus { private int cacheSize; private int hitCount; private int missCount; // 省略 getter 和 setter 方法 }
接下来,我们需要为自定义端点配置访问权限、暴露策略等。这可以通过在 application.properties 文件中添加相关配置来实现。例如:
management.endpoints.web.exposure.include=health,info,cache-status
这将使得我们的自定义端点 /actuator/cache-status 能够被访问。
五、端点数据监控与可视化
在本节中,我们将介绍如何利用Spring Boot Actuator端点数据进行监控与可视化,从而更好地了解应用程序的运行状况。
5.1 使用JMX监控端点
Java Management Extensions(JMX)是Java平台的一种技术,允许对Java应用程序进行管理和监控。Spring Boot Actuator默认支持将端点数据暴露到JMX。要使用JMX监控端点,请确保在应用程序的application.properties或application.yml文件中启用了JMX:
management.endpoints.jmx.exposure.include=*
然后,您可以使用JMX客户端(如Java Mission Control、VisualVM等)连接到应用程序的JMX端口,查看和操作暴露的端点数据。
5.2 使用Prometheus和Grafana进行可视化监控
Prometheus是一个流行的开源监控系统,与Grafana这个数据可视化工具结合使用,可以为Spring Boot Actuator端点数据提供强大的可视化监控功能。
首先,需要在Spring Boot应用程序中集成Prometheus。添加相应的依赖并配置application.properties或application.yml文件,以启用Prometheus端点:
management.endpoints.web.exposure.include=* management.metrics.export.prometheus.enabled=true
接下来,需要配置Prometheus来抓取Spring Boot应用程序的数据。在Prometheus的配置文件中(通常是prometheus.yml),添加以下内容:
scrape_configs: - job_name: 'spring-boot-actuator' metrics_path: '/actuator/prometheus' static_configs: - targets: ['localhost:8080'] # 将此处替换为Spring Boot应用程序的实际地址
最后,在Grafana中添加Prometheus数据源,并创建仪表板来展示和分析Spring Boot Actuator端点的数据。如下图所示:
5.3 集成其他监控工具
Spring Boot Actuator还可以与其他监控工具集成,例如Datadog、InfluxDB、New Relic等。要集成这些工具,通常需要在应用程序中添加相应的依赖并进行一些配置。具体的集成步骤和配置方式请参考官方文档或相关教程。
六、总结
在本文中,我们详细介绍了Spring Boot Actuator端点的相关内容,下面对全文进行概括总结。
6.1 Spring Boot Actuator端点的优势
- 提供丰富的内置端点,可以轻松获取应用程序的运行时信息,如健康状况、度量数据、环境信息等。
- 端点配置灵活,支持定制访问权限、路径和响应内容。
- 可以轻松创建自定义端点,满足特定业务需求。
- 支持与各种监控工具集成,便于进行数据监控与可视化。
6.2 注意事项和最佳实践
- 谨慎配置端点的访问权限,确保敏感信息不被泄露。
- 合理地暴露和定制端点,以满足实际需求,但避免不必要的开销。
- 使用自定义端点时,遵循单一职责原则,确保每个端点专注于一个特定功能。
- 结合实际业务场景选择合适的监控工具,进行可视化分析,以便于快速发现和解决问题。
6.3 对未来发展的展望
随着微服务和容器化技术的发展,对于应用程序的监控和管理需求将越来越复杂。Spring Boot Actuator的端点功能将继续完善,为开发者提供更加强大的监控工具。同时,我们期待更多的第三方监控工具与Actuator集成,帮助开发者更好地管理和优化其应用程序。
위 내용은 Spring Boot Actuator Endpoint 공개: 애플리케이션을 쉽게 모니터링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











1. SpringBootActuator 엔드포인트 소개 1.1 Actuator 엔드포인트란 무엇입니까? SpringBootActuator는 SpringBoot 애플리케이션을 모니터링하고 관리하는 데 사용되는 하위 프로젝트입니다. 애플리케이션의 상태, 작동 상태 및 작동 표시기를 보는 데 사용할 수 있는 일련의 내장 엔드포인트(Endpoint)를 제공합니다. 작동기 엔드포인트는 운영 및 유지보수 담당자가 애플리케이션을 모니터링, 진단 및 관리할 수 있도록 HTTP, JMX 또는 기타 형식으로 외부 시스템에 노출될 수 있습니다. 1.2 엔드포인트의 역할 및 기능 Actuator 엔드포인트는 주로 다음 기능을 구현하는 데 사용됩니다. 데이터베이스 연결, 캐싱을 포함한 애플리케이션의 상태 확인 제공,

옛날에 제가 컴퓨터 과학을 전공하는 신입생이었을 때, 채용 웹사이트에서 많은 채용 공고를 찾아보던 중 R&D 엔지니어, 운영 및 유지 관리 엔지니어, 테스트 엔지니어 등 눈부신 기술 직위에 대해 혼란스러웠습니다. , 제 전문 과정은 그저 그랬고 기술적 비전도 없었으며 어떤 기술적 방향을 추구해야 할지 명확한 아이디어도 없었습니다. 한 선배가 나에게 "운영 및 유지 관리를 하세요. 운영 및 유지 관리를 위해 매일 코드를 작성할 필요가 없습니다. Liunx를 사용할 수 있으면 됩니다! 개발을 하는 것보다 훨씬 쉽습니다!"라고 말하기 전까지는 말이죠. 믿다... 10년 넘게 업계에 있으면서 고생도 많이 했고, 비난도 많이 받았고, 서버도 죽였고, 부서 해고도 경험했다. 지금 누가 나에게 개발보다 운영과 유지가 쉽다고 말한다면. , 그럼 그럴게요

인터넷의 급속한 발전으로 인해 기업 수준의 애플리케이션은 날로 복잡해지고 있습니다. 이러한 상황에 대응하여 마이크로서비스 아키텍처가 탄생했습니다. 모듈성, 독립적 배포 및 높은 확장성을 통해 오늘날 엔터프라이즈 수준 애플리케이션 개발을 위한 첫 번째 선택이 되었습니다. 뛰어난 마이크로서비스 아키텍처인 Spring Cloud는 실제 애플리케이션에서 큰 이점을 보여왔습니다. 이 기사에서는 SpringCloud 마이크로서비스 아키텍처의 배포, 운영 및 유지 관리에 대해 소개합니다. 1. SpringCloud 마이크로서비스 아키텍처 배포 SpringCloud

연휴 전에 저는 PG China 커뮤니티와 협력하여 D-SMART를 사용하여 PG 데이터베이스를 운영하고 유지하는 방법에 대한 온라인 라이브 방송을 진행했습니다. 우연히 금융 업계의 한 고객이 제 소개를 듣고 전화를 했습니다. 채팅하기. 그들은 Xinchuang 데이터베이스를 선택하고 여러 국내 데이터베이스를 시도했으며 마침내 TDSQL을 선택하려고 합니다. 당시에는 조금 놀랐습니다. 2020년부터 국내 데이터베이스를 선택하고 있었는데, TDSQL을 사용한 후 초기 경험이 별로 좋지 않았던 것 같습니다. 나중에 대화를 통해 그들이 이제 막 TDSQL의 분산 데이터베이스를 사용하기 시작했다는 사실을 알게 되었고 연구 개발 요구 사항이 너무 높아서 모두 TDSQL의 중앙 집중식 MYSQL 인스턴스를 선택했습니다. 사용한 후에는 사용이 매우 쉽다는 것을 알게 되었습니다. . 전체 데이터베이스 클라우드

관찰 가능성이라는 용어는 엔지니어링 분야에서 유래되었으며 최근 몇 년 동안 소프트웨어 개발 분야에서 점점 더 대중화되고 있습니다. 간단히 말해서, 관찰 가능성은 외부 출력을 기반으로 시스템의 내부 상태를 이해하는 능력입니다. IBM은 관찰 가능성을 다음과 같이 정의합니다. 일반적으로 관찰 가능성은 외부 출력에 대한 지식을 기반으로 복잡한 시스템의 내부 상태 또는 조건을 이해할 수 있는 정도를 나타냅니다. 시스템의 관찰 가능성이 높을수록 추가 테스트나 코딩 없이도 성능 문제의 근본 원인을 찾는 프로세스가 더 빠르고 정확해질 수 있습니다. 클라우드 컴퓨팅에서 관찰 가능성은 애플리케이션 시스템을 보다 효과적으로 모니터링, 문제 해결, 디버깅하여 고객 경험을 달성하기 위해 분산 애플리케이션 시스템과 해당 운영을 지원하는 인프라의 데이터를 집계, 상관 관계 분석하고 분석하는 소프트웨어 도구 및 방식을 의미하기도 합니다. 최적화 및 서비스 수준 계약

인터뷰와 제출을 통해 운영 및 유지 관리 분야의 베테랑들이 심오한 통찰력을 제공하고 고급 합의를 형성하고 업계가 더 나은 발전을 이룰 수 있도록 함께 협력하도록 초대됩니다. 이번 호에는 Tuyou Games의 운영 및 유지 관리 이사인 Zou Yi를 초대합니다. Zou 씨는 종종 농담으로 자신을 세계 500만 대 기업의 운영 및 유지 관리 대표라고 부릅니다. 오늘은 중소기업의 운영 및 유지관리 건설 아이디어가 대기업의 아이디어와 다릅니다. 오늘은 Zou 씨에게 중소기업을 위한 연구와 운영을 통합하는 여정을 공유해 달라고 요청합니다. 규모의 회사. 현실적이고 수준 높은 '운영 및 유지보수 포럼' 제6호가 지금부터 시작됩니다! 질문 미리보기 투유는 게임 회사인데, 게임 운영과 유지 관리의 독특한 특징이 무엇이라고 생각하시나요? 직면하고 있는 가장 큰 운영 과제는 무엇입니까? 이러한 문제를 어떻게 해결하셨나요? 게임 운영 및 유지 관리 인력

운영 및 유지 관리를 위해 golang을 배우지 마십시오. 1. Golang은 주로 고성능 및 동시 성능 요구 사항을 갖춘 애플리케이션을 개발하는 데 사용됩니다. 2. 운영 및 유지 관리 엔지니어가 일반적으로 사용하는 도구 및 스크립트 언어는 이미 충족할 수 있습니다. 대부분의 관리 및 유지 관리 요구 사항 3. golang을 학습하려면 특정 프로그래밍 기반과 경험이 필요합니다. 4. 운영 및 유지 관리 엔지니어의 주요 목표는 애플리케이션을 개발하는 것이 아니라 시스템의 안정성과 고가용성을 보장하는 것입니다.

이 글은 우버 엔지니어 Gergely Orosz의 글입니다. 원문 주소는 https://blog.pragmaticengineer.com/operating-a-high-scale-distributed-system/입니다. 지난 몇 년간 제가 직접 구축하고 운영해 온 글입니다. 대규모 분산 시스템: Uber의 결제 시스템. 이 기간 동안 저는 분산 아키텍처 개념에 대해 많은 것을 배웠고 고부하 및 고가용성 시스템을 실행하는 데 따르는 어려움을 직접 목격했습니다. 훨씬 더 크다). 시스템을 구축하는 것 자체는 흥미로운 노력입니다. 계획 시스템이 10x/100을 처리하는 방법
