1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bboss-pinpoint-plugin-generate

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Данный текст написан на языке Java.

Это инструмент для создания плагина pinpoint, который имеет две функции:

  1. Генератор плагина gradle проекта.
  2. Сборка и архивация jar-файла плагина, конфигурационных файлов и образов.

На примере распределённой системы полнотекстового поиска Elasticsearch с клиентским фреймворком bboss elasticsearch (https://www.oschina.net/p/bboss-elastic) описывается метод создания и интеграции плагина для сбора журналов вызовов цепочки сервисов.

Необходимые для мониторинга компоненты класса bboss elasticsearch:

org.frameworkset.elasticsearch.client.ConfigRestClientUtil
org.frameworkset.elasticsearch.client.RestClientUtil

Глава 1. Обзор инструмента для создания плагинов pinpoint

pinpoint по умолчанию предоставляет большое количество универсальных компонентов и плагинов для сбора журналов вызовов сервисов. Если необходимо отслеживать классы приложений, которые поставляются вместе с системой, то требуется создать плагин agent самостоятельно. Это может быть сложным и привести к ошибкам. Мы разработали инструмент для быстрого создания плагина bboss pinpoint plugin generator tool.
С помощью инструмента bboss pinpoint plugin genertor можно выполнить простую настройку и быстро создать плагин для отслеживания классов приложений и соответствующую документацию по интеграции и развёртыванию. Кроме того, с помощью параметров конфигурации можно сохранить исходный код плагина Gradle.
Можно внести изменения и корректировки в исходный код на основе проекта, чтобы создать более мощный плагин для мониторинга.

Глава 2. Подготовка

Установить JDK 1.6+
Установить Gradle 4+, настроить переменные среды
Скачать исходный код инструмента

Глава 3. Создание и публикация инструмента с помощью Gradle После успешной сборки Gradle в каталоге build/distributions создаётся исполняемый zip-пакет. Распакуйте инструмент в каталог plugin-generator и перейдите в этот каталог.

Шаг 1. Настройка сценария создания плагина Измените файл plugin-generator/resource/plugin.properties:

# Файл описания свойств плагина, на основе которого инструмент генерирует плагин для мониторинга классов
## Определение автора плагина
plugin.author=yinbp

## Определение версии плагина
plugin.version=0.0.1
## Определение названия плагина
plugin.name=bbosselastic

## Определение имени сервиса плагина
plugin.serviceName=BBossElastic

## Определение пути к классу плагина
plugin.package=org.test.plugin.bbosselastic

## Тип перехватчика плагина: spanevent, если контекст не содержит trace, то журнал данных отбрасывается, а если содержит, то данные добавляются. spantrace используется для создания обычных плагинов сбора журналов. Также его можно использовать для создания плагинов, применяемых на стороне сервера.
plugin.interceptor.type=spantrace

## Определение типа сервиса плагина. Код типа сервиса должен быть согласован с командой разработчиков и должен быть уникальным. Он также должен быть коротким числом.
Значение пространства имён:
    UNDEFINED_CATEGORY((short)-1, (short)-1),
    PINPOINT_INTERNAL((short)0, (short)999),
    SERVER((short)1000, (short)1999),
    DATABASE((short)2000, (short)2999),
    LIBRARY((short)5000, (short)7999),
    CACHE_LIBRARY((short)8000, (short)8999, BaseHistogramSchema.FAST_SCHEMA),
    RPC((short)9000, (short)9999);
    
    ServiceType Code Pinpoint 团队给出的私有区域范围
    
    Тип  Диапазон
    Server  1900 ~ 1999
    DB Client   2900 ~ 2999
    Cache Client    8900 ~ 8999
    RPC Client  9900 ~ 9999
    Others  7500 ~ 7999
## Конфигурация типа
plugin.serviceType=1027

##
# plugin.interceptor.type установлен как spantrace, тогда необходимо указать тип события serviceType.
##
plugin.eventServiceType=1028

## Параметр AnnotationKey, должен быть согласован с командой разработчиков, должен быть уникальным и коротким числом
## Код поля AnnotationKey также является уникальным, диапазон Pinpoint команды разработчиков составляет 900–999.
plugin.argKeyCode=911
plugin.argKeyName=911.args

## Определить, следует ли включать плагин по умолчанию
profiler.enable=true

## Определить, собирать ли возвращаемые данные отслеживаемых методов, если данные содержат объекты, рекомендуется не включать сбор возвращаемых значений, что может серьёзно повлиять на производительность
profiler.recordResult=false

## Определить, нужно ли собирать параметры метода, если параметры содержат объекты, необходимо предоставить метод toString() объекта
profiler.recordArgs=true

## Определить отслеживаемые классы и методы, несколько классов разделяются пробелами
## Информация о методах класса добавляется после имени класса. Несколько методов разделяются запятыми, синтаксис определения метода включает две части: имя метода pattern и управляющий символ
# Имя метода pattern: за именем метода может следовать только * или ничего. Три сценария:
   send  полное имя метода
   send*  методы, начинающиеся с send
   *  все методы
Управляющий символ: два значения
           ~1  указывает, что метод должен быть перехвачен и журналы вызовов должны быть собраны
           ~0  указывает, что метод не должен быть перехвачен, журналы вызовов не собираются
# Пример:
 * Перехватить все методы, также можно указать специальные методы, которые не должны быть перехвачены
 *~1 Перехватить все методы, также можно указать специальные методы, которые не должны быть перехвачены
 *~0 Не перехватывать все методы, также можно указать специальные методы, которые должны быть перехвачены
 methodA Перехватить метод methodA
 methodB Перехватить метод methodB
 methodB* Перехватить методы, начинающиеся с methodB

 methodA~1 Перехватить метод methodA
 methodB~1 Перехватить метод methodB
 methodB*~1 Перехватить методы, начинающиеся с methodB

 methodA~0 Не перехватывать метод methodA
 methodB~0 Не перехватывать метод methodB
 methodB*~0 Не перехватывать методы, начинающиеся с methodB
Вышеупомянутое определение может быть объединено произвольно
Примечание: информация о классе и методе не должна иметь пробелов, поскольку пробелы используются для разделения разных классов.
## Пример определения отслеживаемого класса и метода
plugin.interceptor.classes=org.frameworkset.elasticsearch.client.ConfigRestClientUtil|*,discover~0 \                           
                           org.frameworkset.elasticsearch.client.RestClientUtil|*,discover~0

##
# Перехватчики Pinpoint могут перехватывать любые методы, поэтому между методами, которые были перехвачены, могут быть отношения вызова, что приведёт к дублированию сбора данных. Поэтому Pinpoint предоставляет функции Scope и ExecutionPolicy.
# В области действия Scope можно определить политику выполнения перехватчиков: всегда выполнять (ExecutionPolicy.ALWAYS),
# Выполнять, когда нет внешнего перехватчика (ExecutionPolicy.BOUNDARY),
# Или выполнять только при наличии внешнего перехватчика (ExecutionPolicy.INTERNAL)
# ALWAYS,
# BOUNDARY,
# INTERNAL
##
plugin.executionPolicy = BOUNDARY

## После создания плагина удалить ли исходный код проекта Gradle (на основе Gradle), true удалить, false не удалять
plugin.deleteFilesAfterGen=false

Шаг 2. Генерация плагина Выполните команду plugin-generator/startup.bat в Windows или plugin-generator/startup.sh в Linux, чтобы сгенерировать jar-файл плагина и документ по интеграции плагина.

Расположение jar-файла плагина: ## Плагин-генератор / dist / bbosselastic-0.0.1.jar

Каталог, в котором находится документация по интеграции плагина: plugin-generator / dist / plugin.config

Шаг 3: Интеграция плагина

Для интеграции плагина обратитесь к документации по интеграции, созданной автоматически и расположенной в файле plugin.config в каталоге plugin-generator/dist/.

Содержание файла plugin.config для интеграции плагина для распределённого полнотекстового поиска Elasticsearch-клиента bboss elasticsearch:

#1 Распространение пакета плагина

  • Распространите пакет плагина (bbosselastic-0.0.1.jar) в каталог развёртывания collector (/home/elk/apache-tomcat-8.0.42-collector/webapps/collector/WEB-INF/lib), затем перезапустите collector.

  • Распространите пакет плагина (bbosselastic-0.0.1.jar) в каталог веб-контрольной панели развёртывания (/home/elk/tomcat-7.0.57-web/webapps/ROOT/WEB-INF/lib) и перезапустите веб.

  • Распространите пакет плагина (bbosselastic-0.0.1.jar) в каталог агента развёртывания отслеживаемого приложения (/plugin), соответствующего плагину.

#2 Распространение изображений из папки dist/images в веб-консоль развёртывания

Скопируйте две картинки с логотипом плагина: большую картинку images/servermap/BBossElastic.png и маленькую картинку images/icons/BBossElastic.png. Имя изображения должно соответствовать значению plugin.serviceName. Например, BBossElastic.png.

Путь к маленькой картинке: /home/elk/tomcat-7.0.57-web/webapps/ROOT/images/icons/BBossElastic.png

Путь к большой картинке: /home/elk/tomcat-7.0.57-web/webapps/ROOT/images/servermap/BBossElastic.png

Добавьте имя сервиса и имя изображения в файл js /components/server-map2/jquery.ServerMap2.js в htIcons:

Then, add ServiceType name and the image file name to htIcons in /components/server-map2/jquery.ServerMap2.js

"htIcons": {

'BBossElastic': 'BBossElastic.png', },

Технический чат: 166471282

Официальный аккаунт WeChat: bbossgroup

GitHub Logo

Лицензия

Платформа BBoss выпущена под версией 2.0 Apache License.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bboss-pinpoint-plugin-generate.git
git@api.gitlife.ru:oschina-mirror/bboss-pinpoint-plugin-generate.git
oschina-mirror
bboss-pinpoint-plugin-generate
bboss-pinpoint-plugin-generate
master