Часть 1. Принцип работы WSO2 API-M Analytics Server. Отправка данных.
Блоги
Навигационные полоски
В этом блоге хотел бы рассказать о том как происходит сбор и обработка аналитических данных по работе продукта WSO2 API Manager. В данном продукте, кроме прочих его достоинств, описанных ранее, происходит сбор и отображение аналитической информации. В отличие от WSO2 Enterprise Integrator, в составе этого продукта нет встроенного профиля аналитики и нужно скачивать и устанавливать его отдельно. О том как это сделать можно почитать тут - https://docs.wso2.com/display/AM260/Configuring+APIM+Analytics. В самом начале страницы говорится то, что WSO2 API-M Analytics является дистрибуцией WSO2 Stream Processor. Ниже привожу пошаговое объяснение как происходит отправка данных из WSO2 API Manager в WSO2 API-M Analytics.
- На первом шаге мы заглянем в файл настроек API-M:
https://github.com/wso2/carbon-apimgt/blob/6.x/features/apimgt/org.wso2.carbon.apimgt.core.feature/src/main/resources/config/api-manager.xml, где внутри тега <Analytics> мы найдём много полезной информации.
- С точки зрения публикации данных нас будет интересовать следующий класс: <PublisherClass>org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher</PublisherClass>
- Публикация аналитических данных о вызовах API происходит в следующем методе: https://github.com/wso2/carbon-apimgt/blob/release-6.4.50-x985/components/apimgt/org.wso2.carbon.apimgt.usage/org.wso2.carbon.apimgt.usage.publisher/src/main/java/org/wso2/carbon/apimgt/usage/publisher/APIMgtUsageDataBridgeDataPublisher.java#L145
- Сам класс публикатора можно посмотреть тут - https://github.com/wso2/carbon-analytics-common/blob/5.1.x/components/data-bridge/org.wso2.carbon.databridge.agent/src/main/java/org/wso2/carbon/databridge/agent/DataPublisher.java#L114. Из описания к конструктору видно, что параметр type должен содержать имя агента, а по-умолчанию будет использоваться Thrift и Binary.
- Об использовании Apache Thrift нам говорят и следующие настройки:
<StreamProcessorServerURL>{tcp://localhost:7622}</StreamProcessorServerURL> <!--StreamProcessorAuthServerURL>{ssl://localhost:7722}</StreamProcessorAuthServerURL--> <!-- Administrator username to login to the remote StreamProcessor server. --> <StreamProcessorUsername>${admin.username}</StreamProcessorUsername> <!-- Administrator password to login to the remote StreamProcessor server. --> <StreamProcessorPassword>${admin.password}</StreamProcessorPassword>
, которые находятся в файле api-manager.xml. Порты можно подсмотреть в логах сервера аналитики:
Также, в настройках api-manager.xml находятся имена и версии потоков, куда эти данные будут опубликованы на сервер аналитики. Например, для всех запросов публикация будет идти в поток со следующими именем и версией:
<Request> <Name>org.wso2.apimgt.statistics.request</Name> <Version>3.0.0</Version> </Request>
- Сервер аналитики получает это событие - за это отвечает следующий класс: https://github.com/wso2/carbon-analytics-common/blob/master/components/data-bridge/org.wso2.carbon.databridge.receiver.thrift/src/main/java/org/wso2/carbon/databridge/receiver/thrift/ThriftDataReceiver.java
- В рамках WSO2 Stream Processor вся логика работы с потоками описывается через скрипты Siddhi. В этом файле описывается поток получения данных о запросе API: https://github.com/wso2/analytics-solutions/blob/master/features/apim-analytics-feature/org.wso2.analytics.solutions.apim.analytics.feature/src/main/resources/siddhi-files/APIM_REQUEST_PROCESSOR.siddhi#L22. Тип источника wso2event соответствует Apache Thrift.
- Данные из входящего потока Apache Thrift переливаются в поток, находящийся в оперативной памяти: https://github.com/wso2/analytics-solutions/blob/master/features/apim-analytics-feature/org.wso2.analytics.solutions.apim.analytics.feature/src/main/resources/siddhi-files/APIM_REQUEST_PROCESSOR.siddhi#L22. Этот поток работает по модели publish-subscribe - все заинтересованные в этом событии подписаны на topic='APIM_REQUEST'.
- Одним из подписантов является другой скрипт Siddhi: https://github.com/wso2/analytics-solutions/blob/master/features/apim-analytics-feature/org.wso2.analytics.solutions.apim.analytics.feature/src/main/resources/siddhi-files/APIM_ACCESS_SUMMARY.siddhi#L22, в котром происходит отправка данных в реляционную БД: https://github.com/wso2/analytics-solutions/blob/master/features/apim-analytics-feature/org.wso2.analytics.solutions.apim.analytics.feature/src/main/resources/siddhi-files/APIM_ACCESS_SUMMARY.siddhi#L13. Таблица для записи описана выше в этом файле: https://github.com/wso2/analytics-solutions/blob/master/features/apim-analytics-feature/org.wso2.analytics.solutions.apim.analytics.feature/src/main/resources/siddhi-files/APIM_ACCESS_SUMMARY.siddhi#L100. Используемый data source настраивается в файле deployment.yaml: https://github.com/wso2/analytics-apim/blob/master/modules/distribution/carbon-home/conf/dashboard/deployment.yaml#L321
В этом блоге я подробно расписал логику отправки и обработки аналитических данных. В следующем расскажу о том, каким образом эти данные получает WSO2 API-M.
- 6.2 (12)
- 7.0 (12)
- activiti (14)
- apache camel (6)
- camel (11)
- devcon (6)
- devops (5)
- emdev (9)
- emdev limited (9)
- entaxy (13)
- esb (10)
- fuse (5)
- gartner (7)
- google apps (6)
- jboss (5)
- liferay (143)
- liferay 7.1 (11)
- liferay dxp (11)
- liferay7 (12)
- openshift (8)
- osgi (5)
- redhat (15)
- rest (6)
- wso2 (70)
- wso2 api-m (10)
- wso2 ei (8)
- wso2ei (5)
- wso2esb (7)
- wso2is (8)
- емдев (11)
Сайт использует файлы cookie. Они позволяют узнавать вас и получать информацию о вашем пользовательском опыте. Это нужно, чтобы улучшать сайт. Посещая страницы сайта и предоставляя свои данные, вы позволяете нам предоставлять их сторонним партнерам. Если вы согласны, продолжайте пользоваться сайтом. Если нет – установите специальные настройки в браузере или обратитесь в техподдержку.