Spring Boot 2.X (16): использование и настройка Spring Boot Actuator для мониторинга приложений

Spring Boot

Введение в привод

Actuator — это функция самоанализа и мониторинга прикладной системы, предоставляемая Spring Boot. С помощью Actuator вы можете использовать индикаторы на основе данных для измерения работы приложения, такие как просмотр диска сервера, памяти, ЦП и другой информации, потоков системы, gc, рабочего состояния и так далее.

Actuator обычно управляет приложениями и отслеживает их с помощью HTTP и JMX, в большинстве случаев с использованием HTTP.

Описание конечной точки привода

конечная точка описывать
auditevents Получить информацию о событиях аудита, предоставляемую текущим приложением
beans Получите полный список отношений для всех Spring Beans в приложении
caches Получить общедоступный кеш
conditions Получите информацию об условиях автоматической настройки и запишите, какие условия автоматической настройки выполняются и почему они не выполняются.
configprops Получите все свойства конфигурации, включая конфигурацию по умолчанию, показывая версию всех @ConfigurationProperties в столбце с сортировкой.
env Получить все переменные среды
flyway Получить всю информацию о миграции базы данных Flyway, которая была применена, требуется один или несколько компонентов Flyway.
liquibase Получите все примененные миграции базы данных Liquibase. Требуется один или несколько компонентов Liquibase.
health Получение показателей работоспособности приложения (информация о работоспособности)
httptrace Получите информацию о трассировке HTTP (по умолчанию последние 100 обменов HTTP-запросами и ответами). Требуется компонент HttpTraceRepository.
info Получить информацию о приложении
integrationgraph Покажите диаграмму интеграции Spring. Необходимо полагаться на spring-integration-core
loggers Отображение и изменение конфигурации журналов в приложении
logfile Возвращает содержимое файла журнала (если установлены свойства logging.file.name или logging.file.path)
metrics Получить информацию о системных метриках
mappings Отображает сопоставленный список всех путей @RequestMapping
scheduledtasks Показывать запланированные задачи в приложении
sessions Позволяет извлекать и удалять пользовательские сеансы из хранилищ сеансов, поддерживаемых Spring Session. Веб-приложения на основе сервлетов, которым необходимо использовать Spring Session
shutdown Чтобы закрыть приложение, для параметра endpoints.shutdown.enabled необходимо установить значение true, по умолчанию — false.
threaddump Получить информацию о дампе системного потока
heapdump вернуть файл дампа кучи hprof
jolokia Предоставляйте JMX-бины через HTTP (не для WebFlux, когда Jolokia находится в пути к классам). Зависит от jolokia-core
prometheus Предоставляйте метрики в формате, который может обрабатывать сервер Prometheus. Требуются зависимости от micrometer-registry-prometheus

Использование и конфигурация привода

быстрый в использовании

зависимости проекта

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

конфигурационный файл

management.endpoints.enabled-by-default=true
#启动所有端点
management.endpoints.web.exposure.include=*
#自定义管理端点路径
#management.endpoints.web.base-path=/manage

В Spring Boot 2.X Actuator по умолчанию открывает только конечные точки работоспособности и информации.

Добавить кmanagement.endpoints.web.exposure.include=*Запустите приложение после настройки, доступhttp://127.0.0.1:8080/actuatorМы можем увидеть список всех конечных точек Actuator.

еслиmanagement.endpoints.enabled-by-defaultУстановите значение false, чтобы отключить все конечные точки, чтобы включить их следующим образом:

management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true

禁用的端点将从应用程序上下文中完全删除。如果只想更改公开端点,使用include和exclude属性。 Используйте следующим образом:

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans

management.endpoints.web.base-path=/manageКонфигурация представляет собой путь / activuator, который нужно переопределить как / manage.

Подробное объяснение общих конечных точек

health

Он в основном используется для определения рабочего состояния приложения и является наиболее часто используемой точкой мониторинга. Программное обеспечение для мониторинга обычно использует этот интерфейс для отслеживания состояния работы приложения в режиме реального времени и передачи информации о тревоге соответствующему персоналу в случае сбоя системы, например, использование дискового пространства, некоторые индикаторы работоспособности, такие как база данных и кэш. По умолчанию конечная точка работоспособности открыта, доступhttp://127.0.0.1:8080/actuator/healthВы можете увидеть текущий статус приложения.

{"status":"UP"}

Если вам нужно увидеть детали, вам нужно добавить конфигурацию:

management.endpoint.health.show-details=always

Информация, возвращенная из визита, выглядит следующим образом:

{"status":"UP","details":{"diskSpace":{"status":"UP","details":{"total":180002725888,"free":8687988736,"threshold":10485760}}}}

info

Проверьте, настроена ли информация о приложении в application.properties. Как мы настраиваем в проекте это:

info.app.name=Spring Boot Actuator Demo
info.app.version=v1.0.0
info.app.description=Spring Boot Actuator Demo

Запустите проект, посетитеhttp://127.0.0.1:8080/actuator/infoВозвращаемая информация выглядит следующим образом:

{"app":{"name":"Spring Boot Actuator Demo","version":"v1.0.0","description":"Spring Boot Actuator Demo"}}

env

Через env вы можете получить всю информацию о работающей среде для текущего приложения Spring Boot, такую ​​как: информация об операционной системе (systemProperties), информация о переменной среды, информация о версии JDK и ClassPath, включенные в настоящее время файлы конфигурации (activeProfiles), propertySources, конфигурация приложения информация (applicationConfig) и т. д.

в состоянии пройтиhttp://127.0.0.1:8080/actuator/env/{name}, имя указывает информацию, которую вы хотите просмотреть, которая может отображаться независимо.

beans

доступhttp://127.0.0.1:8080/actuator/beansЧасть возвращаемой информации выглядит следующим образом:

{
    "contexts": {
        "Spring Boot Actuator Demo": {
            "beans": {
                "endpointCachingOperationInvokerAdvisor": {
                    "aliases": [
                    ],
                    "scope": "singleton",
                    "type": "org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor",
                    "resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/EndpointAutoConfiguration.class]",
                    "dependencies": [
                        "environment"
                    ]
                },
                "defaultServletHandlerMapping": {
                    "aliases": [
                    ],
                    "scope": "singleton",
                    "type": "org.springframework.web.servlet.HandlerMapping",
                    "resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
                    "dependencies": [
                    ]
                },
                ...
            }
        }
    }
}

Из возвращенной информации мы видим, что она в основном отображает такую ​​информацию, как псевдоним компонента, тип, является ли он синглтоном, адрес класса и зависимости.

conditions

По условиям в приложении можно запускать код при просмотре действующей конфигурации при каких условиях или почему автоматическая настройка не вступает в силу.

доступhttp://127.0.0.1:8080/actuator/conditionsЧасть возвращаемой информации выглядит следующим образом:

{
    "contexts": {
        "Spring Boot Actuator Demo": {
            "positiveMatches": {
                "SpringBootAdminClientAutoConfiguration": [
                    {
                        "condition": "OnWebApplicationCondition",
                        "message": "@ConditionalOnWebApplication (required) found 'session' scope"
                    },
                    {
                        "condition": "SpringBootAdminClientEnabledCondition",
                        "message": "matched"
                    }
                ],
                "SpringBootAdminClientAutoConfiguration#metadataContributor": [
                    {
                        "condition": "OnBeanCondition",
                        "message": "@ConditionalOnMissingBean (types: de.codecentric.boot.admin.client.registration.metadata.CompositeMetadataContributor; SearchStrategy: all) did not find any beans"
                    }
                ],
                ...
            }
        }
    }
}

loggers

Получить информацию системного журнала.

доступhttp://127.0.0.1:8080/actuator/loggersЧасть возвращаемой информации выглядит следующим образом:

{
    "levels": [
        "OFF",
        "ERROR",
        "WARN",
        "INFO",
        "DEBUG",
        "TRACE"
    ],
    "loggers": {
        "ROOT": {
            "configuredLevel": "INFO",
            "effectiveLevel": "INFO"
        },
        "cn": {
            "configuredLevel": null,
            "effectiveLevel": "INFO"
        },
        "cn.zwqh": {
            "configuredLevel": null,
            "effectiveLevel": "INFO"
        },
        "cn.zwqh.springboot": {
            "configuredLevel": null,
            "effectiveLevel": "INFO"
        },
        ...
    }
}

mappings

Просмотрите все сопоставления URL-адресов, список всех путей @RequestMapping.

доступhttp://127.0.0.1:8080/actuator/mappingsЧасть возвращаемой информации выглядит следующим образом:

{
    "contexts": {
        "Spring Boot Actuator Demo": {
            "mappings": {
                "dispatcherServlets": {
                    "dispatcherServlet": [
                        {
                            "handler": "ResourceHttpRequestHandler [class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/], ServletContext resource [/], class path resource []]",
                            "predicate": "/**/favicon.ico",
                            "details": null
                        },
                        ...
                    ]
                }
            }
        }
    }
}

heapdump

доступ:http://127.0.0.1:8080/actuator/heapdump автоматически сгенерируетGZip сжимает дамп файла кучи JVM, мы можем использовать встроенный в JDK инструмент мониторинга JVM VisualVM, чтобы открыть этот файл для просмотра. Как показано на рисунке:

Загрузка VisualVM:визуальный VM.GitHub.IO/download.Contracts…

threaddump

Получите информацию о дампе системного потока, в основном показывающую имя потока, идентификатор потока, статус потока, следует ли ждать блокировки ресурсов и другую информацию. На работе мы можем устранять связанные с этим проблемы, наблюдая за состоянием резьбы.

доступhttp://127.0.0.1:8080/actuator/threaddumpЧасть возвращаемой информации выглядит следующим образом:

{
    "threads": [
        {
            "threadName": "DestroyJavaVM",
            "threadId": 40,
            "blockedTime": -1,
            "blockedCount": 0,
            "waitedTime": -1,
            "waitedCount": 0,
            "lockName": null,
            "lockOwnerId": -1,
            "lockOwnerName": null,
            "inNative": false,
            "suspended": false,
            "threadState": "RUNNABLE",
            "stackTrace": [
            ],
            "lockedMonitors": [
            ],
            "lockedSynchronizers": [
            ],
            "lockInfo": null
        },
        ...
    ]
}

shutdown

Включите интерфейс, чтобы закрыть приложение Spring Boot.Чтобы использовать эту функцию, вам необходимо выполнить следующую настройку:

management.endpoint.shutdown.enabled=true

Можно получить через почтовый (только почтовый) запросhttp://127.0.0.1:8080/actuator/shutdownЗакройте приложение.

metrics

доступhttp://127.0.0.1:8080/actuator/metricsИнформационные элементы системных показателей, которые могут быть получены, следующие:

{
    "names": [
        "jvm.memory.max",
        "jvm.threads.states",
        "jvm.gc.pause",
        "http.server.requests",
        "process.files.max",
        "jvm.gc.memory.promoted",
        "system.load.average.1m",
        "jvm.memory.used",
        "jvm.gc.max.data.size",
        "jvm.memory.committed",
        "system.cpu.count",
        "logback.events",
        "tomcat.global.sent",
        "jvm.buffer.memory.used",
        "tomcat.sessions.created",
        "jvm.threads.daemon",
        "system.cpu.usage",
        "jvm.gc.memory.allocated",
        "tomcat.global.request.max",
        "tomcat.global.request",
        "tomcat.sessions.expired",
        "jvm.threads.live",
        "jvm.threads.peak",
        "tomcat.global.received",
        "process.uptime",
        "tomcat.sessions.rejected",
        "process.cpu.usage",
        "tomcat.threads.config.max",
        "jvm.classes.loaded",
        "jvm.classes.unloaded",
        "tomcat.global.error",
        "tomcat.sessions.active.current",
        "tomcat.sessions.alive.max",
        "jvm.gc.live.data.size",
        "tomcat.threads.current",
        "process.files.open",
        "jvm.buffer.count",
        "jvm.buffer.total.capacity",
        "tomcat.sessions.active.max",
        "tomcat.threads.busy",
        "process.start.time"
    ]
}

В соответствии с индикаторами в именах доступа вы можете просмотреть информацию о конкретном индикаторе. как доступhttp://127.0.0.1:8080/actuator/metrics/jvm.memory.usedВозвращаемая информация выглядит следующим образом:

{
    "name": "jvm.memory.used",
    "description": "The amount of used memory",
    "baseUnit": "bytes",
    "measurements": [
        {
            "statistic": "VALUE",
            "value": 1.16828136E8
        }
    ],
    "availableTags": [
        {
            "tag": "area",
            "values": [
                "heap",
                "nonheap"
            ]
        },
        {
            "tag": "id",
            "values": [
                "Compressed Class Space",
                "PS Survivor Space",
                "PS Old Gen",
                "Metaspace",
                "PS Eden Space",
                "Code Cache"
            ]
        }
    ]
}

образец кода

github

Облако кода

Справочная документация

docs.spring.IO/весенняя загрузка…

Если не указано иное, авторские права на эту статью принадлежатутренний туманВсе, пожалуйста, указывайте источник при перепечатке.

Оригинальное название: Spring Boot 2.X (16): использование и настройка Spring Boot Actuator для мониторинга приложений.

Оригинальный адрес: https://www.zwqh.top/article/info/25

Если статья была вам полезна, отсканируйте код и подпишитесь на мой официальный аккаунт, статья постоянно обновляется...