1. Введение
В предыдущей статье мы внедрили мониторинг одного экземпляра службы. Конечно, в реальных приложениях данные мониторинга одного экземпляра не очень ценны. Нам нужно больше, так это информация о мониторингах системы кластерной системы. В настоящее время нам нужно представить турбину. Turbine может собирать информацию мониторинга и предоставлять агрегированную информацию на панели панели Hystrix для централизованного отображения и мониторинга.
2. Строительница мониторинга бюро и услуг
2.1 Общая структура и подготовка
Инженерная реализация этой статьи основана на проекте предыдущей статьи. Внедряя турбину, она объединяет информацию о мониторинге службы обслуживания-бобовых и выводит ее на панель панели Hystrix для отображения. Поскольку нам нужна инструментальная панель для нескольких сервисов, мы создадим кластер с сервисными оправами, и нам необходимо создать новый проект сервис-турбина для агрегирования информации и отображения ее. Окончательная общая структура заключается в следующем:
2.2 Создать сервис-турбин
Создайте новый Spring Boot Project с именем Service-Turbine и импортируйте необходимые зависимости в pom.xml:
<? 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"> <dolidyversion> 4.0.0 </modelversion> <groupid> com.dan </GroupD> </artifactid> artifactid> artifactid> artifactid> artifactid> artifactid> <//artifactid> <//artifactid> <//artifactid> <//modelversion> <groupid> com.dan </artifactid> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-turbine</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-Поиск родителя от репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.Report.Outputencoding> utf-8 </project.Reporting.outputencoding> <java.version> 1,8 </javionsioning> <java. <spring-cloud.version>Edgware.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <StrifactId> Spring-Cloud-Netflix-turbine </artifactid> </dependency> <depervice> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-actuator </artifactid> </jepertive> <dehyed> <groupd> org.sprimeramework.boot> </gypect> <gespected> <groupid> org.sprimework.boot> <artifactid> spring-boot-starter-test </artifactid> <crapope> test </scope> </depertive> </degy Dependencies> <DegependencyManagement> <DepeCope> <Depective> <groupid> org.springframework.cloud </GroupId> <artifactid> spring-cloud-dependences </artifactid> <версии> $ {spring-croud. <Weps> pom </type> <cerpope> import </scope> </dependency> </dependencies> </dependencymanagement> <buld> <blicins> <blicin> <groupid> org.springframework.boot </GroupId> <stritfactid> build-maven-progin </artifactid> </plugin> </plugins> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин> <//плагин>. Добавьте аннотацию @EnableTurbine в класс запуска проекта и включите турбину. Аннотация уже содержит аннотацию @enabledIscOveryClient, то есть служба регистрации была включена:
@Springbootapplication @enableturbine public Class serviceturbineapplication {public static void main (string [] args) {springapplication.run (Serviceturbineapplication.class, args); }} Добавить конфигурации, связанные с эврикой и турбиной в приложение.
spring.application.name = service-turbine server.port = 8766 security.basic.enabled = false eureka.client.serviceurl.defaultzone = http: // localhost: 8761/eureka turbine.aggregator. turbine.cluster-name-expression = "default" turbine.combine-host-port = true
В приведенной выше конфигурации параметр Turbine.App-config настраивает список ServiceID в Eureka, чтобы указать, какие службы контролируются; Параметр Turbine.cluster-name-expression указывает имя кластера по умолчанию. Когда есть большое количество услуг, можно начать несколько турбинных сервисов, чтобы создать различные кластеры агрегации. Этот параметр может быть использован для различения этих различных кластеров агрегации. В то же время значение параметра может использоваться для поиска различных кластеров агрегации на приборной панели Hystrix. Просто укажите параметр кластера в URL -адресе потока Hystrix; Параметр турбины. По умолчанию различные сервисы будут различать Host, что сделает различные услуги на локальной машине агрегировать в одну услугу для статистики во время отладки.
3. Кластерный мониторинг
Начните проект Eureka-Server с номером порта 8761;
Начните проект Eureka-Client с номерами портов 8762 и 8763;
Начните проект с сервисным управлением с номерами портов 8764 и 8765;
Начните проект Service-Turbine с номером порта 8766.
Посетите http: // localhost: 8766/turbine.stream, чтобы увидеть:
Посетите http: // localhost: 8765/hystrix, введите поток мониторинга http: // localhost: 8766/turbine.stream, чтобы увидеть:
Как вы можете видеть на рисунке, хотя мы запустили два обслуживания, страница мониторинга все еще показывает только диаграмму мониторинга. Тем не менее, мы можем обнаружить, что атрибут хостов в области отчетности кластера на рисунке отличается от того, что они раньше пытались автономный мониторинг, но, поскольку эти два случая являются одной и той же услугой, и для кластера мы обеспокоены высокой доступностью сервисного кластера, поэтому турбина будет просматривать ту же услугу, что и целый, и суммируем его в диаграмму мониторинга.
Конечно, если вы действительно хотите увидеть две диаграммы мониторинга, вы можете установить Spring.Application.Name одного из экземпляров сервисного болота на другое имя, чтобы после запуска появились две разные диаграммы мониторинга.
4. В сочетании с брокером сообщений
Когда Spring Cloud инкапсулирует турбину, она также инкапсулирует реализацию коллекции на основе Message Broker. Таким образом, мы можем вывести всю информацию о мониторингах, которую необходимо собирать в брокера сообщения, а затем служба турбины получит эту информацию мониторинга асинхронно от брокера сообщения, и, наконец, агрегировать и вывести их на панель инструментов Hystrix. Представляя брокер сообщений, архитектура мониторинга, реализованная нашей панелью турбины и Hystrix, может быть изменена на структуру, показанную на рисунке ниже:
Во-первых, создайте новый Spring Boot Project с именем Service-Turbine-AMQP и введите Spring-Cloud-Starter-Turbine-AMQP и зависимости от Spring-Boot-Starter-Actuator. Видя, что это просто внедряет эти две зависимости, потому что пружина-клуб-звездный-турбин-AMQP фактически завершает трюн-трюртер-транс-трюк-трюк-трюн и трэндс-трэндс-rabbit.
<? 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"> <dolidayversion> 4.0.0 </modelversion> <groupid> com.dan </GroupId> <ArtFactId> Service-TuriFID-MERIFID-MERIFID- <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-turbine-amqp</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <RELAIDYPATH/> <!-Поиск родителя от репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceEncoding> <Project.Report.OutputEncoding> utf-8 </project.Reproting.outputing> <Spring-cloud.version> edgware.sr1 </spring-cloud.version> </свойства> <Depertiencies> <depertion> <groupid> org.springframework.cloud </GroupId> <artifactid> spring-cloud-starter-turbine-amqp </artifactid> </зависимость> <зависимость> <group-starter-turbine-amqp </artifactid> </зависимость> <DegyBerty> org.spring <ArtifactId> Spring-Boot-Starter-Actuator </artifactid> <cracpope> тест </scope> </depervice> </depervice> </depervice> <Degy Devilentmanagement> <Depective> <Dependency> <groupId> org.springframework.cloud </GroupD> <ratifactid> spring-cloud-dependencies </artifactid> </Groupid> <ratifactid> spring-clouddendions </artifactid> </Groupid> <ratifactid> spring-clouddendions </artifactid> <serse> $ {Spring-cloud.version} </version> <sype> pom </type> <cracpe> import </scope> </depertion> </depervice> </degencymanagement> <buld> <blicins> <bricin> <groupid> org.springframework.boot </GroupId> <ratifactid> spring-maven-plugin </build> </project> Используйте аннотацию @enableturbinestream в основном классе, чтобы включить конфигурацию потока турбины:
@Springbootapplication @enableturbinestream @enablediscoveryclient public class serviceturbineamqpapplication {public static void main (string [] args) {SpringApplication.run (ServiceTurbineamQpapplication.class, args); }}Затем настройте файл Application.properties:
spring.application.name = service-turbine-amqp server.port = 8766 eureka.client.serviceurl.defaultzone = http: // localhost: 8761/eureka
Конфигурация турбины была завершена. Следующее необходимо внести некоторые изменения в сервисную службу, чтобы его информация по мониторингу могла быть выведена в RabbitMQ. Эта модификация также очень проста. Просто добавьте зависимость от Spring-Cloud-Netflix-Hystrix-AMQP в pom.xml, следующим образом:
<Depective> <groupid> org.springframework.cloud </GroupId> <ArtifactId> Spring-Cloud-Netflix-Hystrix-AMQP </artifactid> </gethyse>
После завершения вышеуказанной конфигурации запустите все необходимые проекты, посетите http: // localhost: 8765/hystrix, введите поток мониторинга http: // localhost: 8766/turbine.stream, и мы можем увидеть тот же результат, что и раньше, за исключением того, что сбор информации о мониторингах здесь реализуется с помощью посредства послания.
Скачать исходный код: https://github.com/lingd3/springcloudlearning/tree/master/chapter8
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.