Рубрики
Без рубрики

Я ценю ваши отзывы

O que é e pra que сервопривод делает пружинный ботинок. С тегами spring boot, spring, java, braziliandevs.

Один из ресурсов, который больше нравится в Spring Boot, и который, как правило, забывают тех, кто использует framework Actuator : естественно, учитывая, что фокус, как правило, находится в коде записываются и не после того, как были развернуты.

O Привод, который рекурсивно выполняет пружинную загрузку, не допускает мониторинга и управления приложения, написанные на этом framework в среде развертывания. Это достаточно богатая и легко использовать: уже приходят с различных ресурсов, готовых pra использования без необходимости писать одну строку кода, и будет наша тема здесь.

Любопытно, история этого текста, и в ближайшие

Когда я начал писать этот текст, я вспомнил, что мало кто знал, аналогичную функцию, что у нас есть в Java, ЕСЛИ называется JMX, поэтому я написал тот пост благодаря технологии. Когда, наконец, я вернулся на исходную цель, результат был текст огромные . Поэтому я решил разделить его на части: в первой я расскажу общие сведения о Actuator а в другие мы увидим те возможности, которые больше используем в нашей повседневной жизни.

Покажу вам, что такое Actuator, их основных приложений (высокий, я буду подробно все это в должности еще впереди (уже готовы, “просто не хватает тест”)), основные параметры, и, наконец, ключевые моменты, касающиеся безопасности проекта.

Возможно, Actuator, не так используется и известен тем, как он представлен команды, Spring Boot, и переведены на русский язык: “production-ready features” , там переводят как ” “компоненты для производственной среде” . Хуже: в большей части из книг в португальский направлена на написание кода, и до развертывания, игнорируя то, что для меня это самый важный этап: после развертывания .

Spring Boot предлагает к команде разработчиков все инструменты, необходимые, чтобы можно было контролировать и управлять его применения после того, как был развернут. С ним вы можете:

  • Отслеживать приложения, то есть, отслеживать разные аспекты ее реализации после развертывания.
  • Управлять приложений, то есть, взаимодействовать с системой с ним на выполнение операционных действий в этой, как, например, очистка кэша, административные задачи, изменение параметров и многое другое.

Ок, вы читали мой текст о JMX и видел одни и те же фразы. Тогда в чем разница? Есть некоторые.

  • Стандартный протокол HTTP, используя REST по умолчанию, что упрощает его использование (есть риски для безопасности, я буду учить свернуть еще впереди).
  • Кроме того, протокол HTTP также можете использовать JMX, что это стандартный механизм инструментария Java.
  • Так же, как JMX приходят уже ряд показателей, касающихся работы JVM по умолчанию, Actuator назад различных категорий показателей большая часть устремлены в контексте веб-приложений .
  • На основе Spring – Boot связаны с framework таким образом, вы не сможете использовать его легко в других фреймворках.
  • Предоставляет платформу для различных модулей Spring Boot могут предоставить свои собственные.

Подведение итогов: Actuator дает нам все возможности, которые нужны, чтобы контролировать и управлять приложениями в контексте web, которая является жизненно важным, если вы реализующий архитектуру, основанную на микро-сервисы.

Напоминает текст Мартина Фаулера, который популяризировал микро-услуги? Один из ключевых моментов, это именно наблюдение, а Actuator переходит именно там. Не читал текст? Здесь ссылка .

Контролировать что?

Все разговоры о том, мониторинга очень красивая, но, возможно, вы чувствуете себя потерянным, потому что есть множество вариантов. Что аспекты, касающиеся выполнения проекта интересуют контролироваться? Какие новые индикаторы Actuator назад у нас?

Индикаторы настроены разработчиком

Если вы читали мой текст о JMX , у нас тут то же самое понятие, из MBeans. Вы можете реализовать beans здесь можем предложить следующие возможности:

  • Получение данных – проверить место на диске, например.
  • Выполнять действия – административные задачи, такие как очистка кэша, удаление временных файлов, или любой другой тип административные функции, что необходимо в производстве.

Ваше воображение и необходимость ограничения здесь. Вы могли бы реализовать это как конечные обычных Spring, что выполнить эти операции, это правда, но в случае, если административные задачи, в идеале, даже по вопросам безопасности есть код, изолированный.

Проверка на качество обслуживания (health checks)

Может быть, мою любимую от Actuator: код health checking это тот, ответственности за проверку, если система работает в оптимальных условиях. Давайте несколько примеров:

  • Проверка свободного места на диске.
  • Объем доступной памяти.
  • Доступа к базе данных (перечень из data sources).
  • Если вы осуществляете взаимодействие с другими внешними службами, если удается подключиться к ним.
  • Целостность файловой системы.

Один из текстов этой серии именно о health checking. И интересно, aqua, заметьте, что несколько модулей Spring Boot (camp Redis, JPA и многие другие) и добавляют свои собственные тесты для проверки качества без необходимости писать одну строку кода. Изображение ниже представляет пример health checking подробный используя то, что уже поставляются с модулем JPA:

Здорово, да? И я не писал строки, даже не кода, чтоб убедиться, что доступ к базе данных работает. Обратите внимание, что также существует тест на диске: не я написал этот тест, пришел бесплатно в Actuator!

И я рассказал, что вы можете написать свои собственные тесты? Давайте посмотрим на это в следующем посте!

Logging

В Actuator может существенно облегчит доступ к содержимому файла журнала приложения. Это использование очень полезно, в основном, для просмотра журнала приложения вы просто доступ к конечной точке /actuator/лог и boom: журнал главном экране приложения находится там. Ниже вы можете увидеть пример вывода:

Можно даже с помощью команды curl получить свою собственную версию “хвост”, вот пример:

curl 'http://localhost:8080/actuator/logfile' -i -X GET

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

Я не собираюсь углубляться в эту тему, но если вы хотите, это ссылка ниже .

Метрики (metrics) – profilando приложения

В случае, если показатели здесь у нас есть измерения по аспекту применения конкретного (потребление CPU, памяти, активных соединений с базой данных, etc), в настоящее время. По сути, этот показатель отвечает на следующий вопрос: ” какое значение индикатора X сейчас? “.

Это позволяет вам подключить графики, которые позволяют отслеживать с течением времени эффективность этих компонентов, как видно из графика ниже, который предоставляет ЦП с течением времени:

К сожалению, Actuator не приходят с инструмент, который производит этот тип диаграммы, но предоставляет разъемов для различных инструментов, которые могут генерировать это для вас, например, JMX, New Relic, Datadog, Dynatrace, Упругие и многие другие, которые вы можете увидеть в этой ссылке .

Но это еще не все! Вы также можете контролировать время отклика своими концами с этих показателей. См. следующий пример, в реальном времени, извлеченные из API/dev/All:

Quando adicionamos a anotação @Timed (ввод-вывод.микрометр.ядро.аннотация. Timed) в классе нашего контроллера, мы можем выделить такие показатели, как число заявок, полученных, максимальное время обработки и другие детали, только доступ к ip-адрес/actuator/metrics/веб-сайт (он заметил, что “сайт” – это значение, которое я провел тебя аннотации @Timed?). Посмотрите print ниже:

Можно записать лишь несколько конечных точек также то, что тебе позволяет следить за производительностью от них. Заметил, что я получил все это, в том числе только аннотации? Вы можете ждать, что имеет пост подробно этот вопрос пожаловать.

Общие сведения (Info)

Другой группой сведений очень полезная информация: тот, кто никогда не пришлось проверить, какая версия приложения находится в производстве? Но не только это: вы можете включить буквально на любую вещь здесь, даже информации о Git.

Да, есть один только пост об этом здесь, выйдя в будущем. Это первый раз подумайте, общие сведения, как “свою базу” ключ/значение в Actuator”.

Почетные дипломы

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

  • Аудит – дает вам возможность регистрировать и отслеживать события подлинности хорошо или плохо, успешно и несанкционированного доступа к его концы. Очень полезно, подробнее по этой ссылке .
  • Список маршрутов – очень удобно, особенно когда вы имеете дело с системами, уже существующими. Подробнее здесь .
  • Процесс управления в главном – знал, что вы можете завершить в процессе его применения по Actuator? Да, вокальный код: конечная точка /привод/выключение . В критические моменты может помочь вам довольно (представьте себе ошибка валового производства генерируя убытки в секунду). Подробнее здесь .

В Actuator присутствует с первой версией Spring Boot. В этом тексте я говорю о последней версии framework (2.4.1), и включить его в ваше приложение-это очень просто. Если вы используете Maven, вы можете просто добавить зависимость ниже:

 
   org.springframework.boot 
   spring-boot-starter-actuator 

Выпускной класс в США? Так же просто, как: включите зависимость, как показано в примере ниже:

dependencies { 
   implementation 'org.springframework.boot:spring-boot-starter-actuator' 
}

Войдите в свой проект и, в результате, перейдите на этот адрес: http://localhost:8080/actuator (интересно, что контекст “/”). Вы увидите ответ, подобный этому:

Супер прохладно: Actuator вас, показывая, какие конечные точки мониторинга/управления. По умолчанию отображаются только конечные точки здоровья (health) и общая информация (info). Попробуйте перемещаться по ним, будет удручающим, после читать этот мой текст, потому что вы не видите ничего из того, что обещал. Мы будем решать это теперь.

Конечные точки – expostos против habilitados

Однотипная база делает привод и конечную точку. Все действия, которые вы выполните в Actuator включает в себя доступ на один из адресов, предоставленных framework. “В безопасности мы не все концы подвергаются, особенно почему мы используем протокол, что, по умолчанию, это не безопасно, HTTP (не путать с HTTPS, что тоже не так безопасно, так как реклама в интернете (“Ой!”) продавать).

Поэтому необходимо изменить настройки Spring Boot (не знаете как это сделать безопасно? Я уже писал о них здесь ), чтобы определить, какие элементы, которые будут выставлены. Хотите подвергать все? Затем измените значение параметра управления.endpoints.веб.exposure.include значение *, как показано в примере ниже:

management.endpoints.web.exposure.include=*

Внимание: если ваша конфигурация находится в формате yaml, наберите’*’, а не *. Снова откройте базовый адрес Actuator: http://localhost:8080/actuator

Смотрит ium много конечных точек, доступных для вас прямо сейчас (в том числе “завершение работы”, что включено, цели и отключена по умолчанию). Есть два понятия здесь:

  • Конечные активов – все (кроме одного (так что, не все, это какой? это shutdown)) активны по умолчанию, то есть, могут быть выполнены.
  • Концы подвергаются – конечные точки, которые могут быть доступны удаленно через HTTP или JMX.

O конечная точка полярная звезда, видимая для выполнения необходимых процедур, необходимых для выполнения действий: JMX или HTTP. В этой статье мы будем говорить только HTTP, но вы можете узнать больше о том, что JMX в этом мой текст и работы с JMX Actuator по этой ссылке документации.

Не рекомендуется подвергать все концы. В идеале, вы подвергаете только то, что действительно имеет смысл, , так как чем больше контрольных точек видимы, тем больше атак на свои системы. Таким образом, ввести новое понятие, здесь: дескриптор конечной точки.

Каждый показатель (endpoint) в Actuator имеет свой собственный идентификатор. Списка идентификаторов по умолчанию может быть предоставлена этом link .

Как включить конечные точки

Вы должны выполнить следующий синтаксис, чтобы включить endpoint индивидуально:

management.endpoint.[identificador do endpoint].enabled=(true|false)

Vamos a alguns exemplos, habilitando o info и desabilitando o shutdown:

management.endpoint.info.enabled=true
management.endpoint.shutdown.enabled=false

Как я уже говорил, сейчас практически нет, все конечные точки включены по умолчанию, за исключением “выключения”. Но как быть, если вы не хотите, чтобы это поведение? И если вы хотите включить в конечные точки, которые вы хотите? Тогда просто измените настройки управления.endpoints.enabled-by-default, как в следующем примере:

# pronto, agora você vai ter de definir um a um os endpoints ativos
management.endpoints.enabled-by-default=false

Как разоблачить конечные точки

По умолчанию только конечные точки инфо ” и министерства здравоохранения выставлены по умолчанию для протокола HTTP. Очень важно, что вы слабый безопасность внимание здесь, поэтому рекомендую вам открывать только конечные точки, которые являются действительно важные для своей команды.

Еще раз, мы будем иметь дело с некоторыми параметрами Spring Boot здесь. Первый из них говорит, какие конечные точки, которые вы хотите выставить: management.endpoints.веб.exposure.include. Она может принимать два значения: “*” или список идентификаторов, разделенных запятыми, например в следующем примере:

# expondo todos os endpoints
management.endpoints.web.exposure.include=*
# expondo apenas os endpoints que nos interessam: health, info, metrics
management.endpoints.web.exposure.include=health,info,metrics

Но для чего усложнять (или нет) немного вещей есть и другой собственности, который также определяет конечные точки, что мы ” скрыть . E управление конфигурацией.конечные точки.веб.экспозиция.исключить. Exclude имеет приоритет, о чем будет подвергаться. И тот же синтаксис, что мы должны включить, у нас на “исключить”.

Все очень красиво: с Actuator мы можем увидеть практически все о состоянии ток нашего приложения, а также среды, в которой она выполняется. И с параметрами по умолчанию, в том числе тот, кто не должен иметь доступа к этой информации .

Кто-то заинтересован в вас вызвать проблемы, знаете все о приложении: какие приложения могут не работать должным образом (healthcheck), сколько памяти доступно, то же пространства, сколько запросов в секунду, ваше приложение получает, то, что выходит в журнале, как базы данных… во всяком случае, тарелку для тех, кто хочет вторгнуться в вашу платформу. И конечно, с помощью протокола, доступно для всех: HTTP. Браузер, либо узнать, как вызвать кошмары. Давайте посмотрим, как избежать этого.

Пружинная защита

Если ваше приложение использует Spring Security (use), относительно легко ограничить доступ к конечной точке из Actuator основе разрешений пользователя. Самый популярный маршрут-это расширить класс конфигурации WebSecurityConfigurerAdapter путем переопределения метода настройте, как показано в примере ниже:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
   @Override
   protected void configure(HttpSecurity http) throws Exception {
     http
       .sessionManagement()
       .sessionCreationPolicy(SessionCreationPolicy.NEVER)
       .and()
         .authorizeRequests()
         .antMatchers("/actuator/").hasAuthority("ROLE_ADMIN")
         .anyRequest().authenticated()
      .and()
        .csrf().disable();
   }
}

Обратите внимание, что это код для справки, даст немного больше работы в проекте, возьмите только общее представление. В этом случае, только пользователи, имеющие разрешения (authority) ROLE_ADMIN будут иметь доступ к конечной точке.

Если хотите больше примеров, предлагаю вам проверить его и ссылка. Но дело в том: ограничение доступа .

В случае, если Spring Security не вариант, есть и другие: вы можете применить фильтр, например, и в этом принять другой тип аутентификации, такие как Basic Auth (не рекомендую), например или заголовки mesmo – это ключи API.

Измените настройки по умолчанию

Изменение базы path по умолчанию

Если я хочу, чтобы подмести свою сеть в поисках информации о своей инфраструктуры, первое, что я сделаю, – это искать ip-адреса по умолчанию. Адрес по умолчанию Actuator “/actuator”. Таким образом, мы будем менять этот параметр? Просто, вы используете ключ management.endpoints.веб.base-path , как показано в примере ниже:

# mudando de /actuator para /segredos
management.endpoints.web.base-path=/segredos

Рекомендую вам использовать свое творчество в этом имени, что, по крайней мере, даст немного больше работы для того, кто пытается найти свой базовый адрес Actuator.

Используйте другой порт

Это еще один хороший совет. Вы можете настроить Actuator, чтобы использовать порт, отличный от того, принятый для вашего приложения. Поэтому ваш API может работать на порту 443 (HTTPS), например, Actuator порт, 1979. С этим, настройка брандмауэра (или правил доступа к двери вашего сервиса cloud), вы можете ограничить, какие адреса могут получить доступ к Actuator в дверь под собственные нужды. Ключ конфигурации для управления.server.port. Следующий пример задает порт 1979 году для Actuator:

management.server.port=1979

Попробуйте получить доступ к Actuator через порт по умолчанию и что вы получаете? 404!

Настройка CORS

Если вы хотите, чтобы код JavaScript на стороне клиента используйте свои конечные точки в Actuator (уверен в этом?) можно включить CORS для конечных точек, используя ключи выставлены в следующем примере:

# as origens
management.endpoints.web.cors.allowed-origins=https://itexto.com.br
# quais métodos
management.endpoints.web.cors.allowed-methods=GET,POST

Не знаете, что такое CORS? Прочитайте эту | текст| . Более подробно об использовании CORS в официальной документации Actuator здесь .

SSL

Уже, что вы установили в другой порт pro сервер, почему бы не играть в SSL-сертификата в тот же любя, пусть вещь еще более безопасным?

Следующая конфигурация предоставляет именно это:

# a porta customizada do servidor
management.server.port=1979 
# habilitando SSL nesta porta
management.server.ssl.enabled=true 
# o keystore que contém seu certificado
management.server.ssl.key-store=classpath:management.jks 
# a senha de acesso ao keystore
management.server.ssl.key-password=secret

Более подробно в этом link .

Наш путь Actuator, только началась. Моя цель на этот пост был тебе показать, что этот инструмент, чтобы открыть свои глаза, чтобы некоторые из возможностей, которые она дает нам, в основном, тебе готовить для большой риск, что пришли с ним: дисплей конфиденциальных данных из конечных точек предоставляются.

Теперь моя цель, иду практика: я могу тебя научить реализовывать свои собственные конечные точки health checking, как обогатить информацию, представленную в вашей системе, справиться с аудита и реализовать собственные концы.

Туда!

Для того чтобы узнать больше

Официальной документации Actuatorhttps://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html

API Actuator – te предоставляет все подробности о конечных точек по умолчанию, предоставляемые компанией феррамента – https://docs.spring.io/spring-boot/docs/2.4.1/actuator-api/htmlsingle/

Общие сведения о конфигурациях Spring Boot – важно, что вы понимаете, как настройки Spring Boot работают. Вот я написал этот | текст| .

Знакомьтесь JMX – текст, который родился в этом здесь, и которая содержит много понятий, которые вы должны знать. Читать здесь .

Documentaçao official do Spring Securityhttps://docs.spring.io/spring-security/site/docs/5.4.2/reference/html5/

Оригинал: “https://dev.to/loboweissmann/conhecendo-o-actuator-do-spring-boot-4f9h”