molten
Readme in Chinese 中文
molten — это инструмент прозрачности для трассировки вызовов модулей в приложениях.
Он отслеживает основные вызовы PHP-приложений и выводит журналы трассировок в формате zipkin/opentracing.
Предоставляет функции, связанные с несколькими типами трассировки SAPI, несколькими типами выборки, статусом загрузки трассировки, управлением модулями и несколькими типами приёмников.
На основе PHP очень легко построить распределённую инфраструктуру трассировки систем, которая уже работает на тысячах экземпляров в производственной среде.
Всё, что вам нужно для установки molten на вашу систему.
phpize
./configure
make && make install
make install
копирует molten.so
в соответствующее место, но вам всё равно нужно включить модуль в файле конфигурации PHP. Для этого либо отредактируйте свой php.ini, либо добавьте файл molten.ini в /etc/php5/conf.d
со следующим содержимым: extension=molten.so
.
На этапе ./configure
вы также можете добавить --enable-zipkin-header=yes
, чтобы поддерживать заголовок zipkin B3.
Если вы хотите, чтобы molten поддерживал метод POST
, на этапе компиляции вы должны проверить, установлен ли libcurl-devel
.
cd example
sh run.sh
Откройте http://127.0.0.1:9411/zipkin/
в браузере, и вы увидите детали трассировки.
Если вам кажется, что это слишком просто, вы также можете сделать это.
cd example
sh complex.sh
Это круто, правда?
ВНИМАНИЕ
: если вы не видите трассировку, выберите EndTime +1 час.
molten.enable
устанавливает значение 1 для включения или значение 0 для отключения, по умолчанию 1
.
molten.service_name
используется для установки имени службы для метки приложения. Теперь мы поддерживаем добавление ini_set('molten.service_name', 'YOUR_PROJECT_NAME');
в код, чтобы отслеживать разные проекты, используя одну и ту же среду PHP.
molten.tracing_cli
устанавливается в 1
, чтобы включить трассировку CLI SAPI, 0
— не включать трассировку, а использовать только для модульного тестирования, по умолчанию — 0
.
molten.open_report
устанавливается в 1
для открытия отчёта об ошибке PHP, по умолчанию — 0
.
molent.sampling_type
выбирает тип выборки: выборка по скорости (1
) или запросу (2
), по умолчанию — 1
.
molten.sampling_request
определяет выборку по запросу, задаётся как количество запросов в минуту, по умолчанию — 1000
.
molten.sampling_rate
определяет, будет ли запрос выбран по скорости, по умолчанию — 64
.
molten.notify_uri
— это URI, который molten использует для уведомления менеджера.
Тип вывода модуля отчёта такой же, как у модуля приёмника.
molten.report_interval
— интервал вызова репортёра, по умолчанию — 60
.
molten.report_limit
— текущий предел списка ошибок, по умолчанию — 100
.
molten.sink_type
— тип приёмника, 1
— запись в журнал (путь зависит от molten.sink_log_path
), 2
— запись в стандартный вывод, 3
— запись в системный журнал, 4
— использование curl для отправки журнала трассировки (HTTP URI зависит от molten.sink_http_uri
).
molten.output_type
— вывод диапазонов в одной строке (1
) или один диапазон в одной строке (2
).
molten.sink_log_path
— путь к журналу.
molten.sink_http_uri
— HTTP URI журнала.
molten.sink_syslog_unix_socket
— преобразование журнала в системный журнал UDP Unix Domain Collector.
molten.span_format
— формат диапазона, можно выбрать zipkin
или zipkin_v2
или opentracing
для разных систем отслеживания.
molten_span_format()
— получает текущий формат диапазона и возвращает строку zipkin или opentraceing.
molten_get_traceid()
— получает текущий контекстный traceid и возвращает шестнадцатеричную строку.
molten_set_traceid($trace_id)
— устанавливает текущий контекстный traceid, возвращает void.
php -d extension=molten.so -d molten.enable=1 -d molten.sink_type=2 -d molten.tracing_cli=1 -d molten.sampling_rate=1 -r '$c=curl_init("http://localhost:12345");curl_exec($c);'
Вы можете увидеть вывод ниже:
В блоке Config выше вы можете увидеть, какие функции мы поддерживаем.
## Перехватчик
Мы перехватываем расширения curl, pdo, mysqli, redis, mongodb, memcached для построения информации о продолжительности выполнения. Для цепочек HTTP-запросов мы заменяем curl_exec, curl_setopt, curl_setopt_array, чтобы добавить заголовок трассировки HTTP-запроса (x-w-traceid, x-w-spanid и так далее).
Span_format — это способ настроить формат диапазона для двух популярных видов (zipkin и opentracing).
## Выборка
Различные типы выборки и изменение параметров для управления выборкой, скоростью или запросом.
## Приёмник
Приёмник — это вывод, который вы определяете. Molten поддерживает стандартные FD, файл, HTTP и другие (продолжение), таким образом, мы можем выбрать, куда выводить журнал трассировки.
## Управление
Используйте HTTP для управления нашей выборкой.
Чтобы увидеть статус molten, запросите `http://domain/molten/status` с помощью метода GET.
Вывод представлен ниже, он уже адаптирован под стиль [prometheus](https://prometheus.io).
molten_request_all %d
molten_request_capture %d
molten_sampling_type %d
molten_sampling_rate %d
molten_sampling_request %d
Измените выборку molten, запросив `http://domain/molten/status`, используя метод POST.
Тело в формате JSON, поле имеет то же значение, что и в конфигурации.
{"enable":1,"samplingType":2,"samplingRate":20,"samplingRequest":100}
## Отчёт
Отчёт основан на импортированной информации, которую мы не выбирали, например, список ошибок.
# Вклад
Добро пожаловать разработчикам, которые хотят сделать его лучше.
Список рассылки ниже вы можете использовать для обсуждения и улучшения дополнительных возможностей.
phobosw@gmail.com
silkcutbeta@gmail.com
Вы можете внести свой вклад следующими способами:
* [Перепостить проблемы и отзывы](https://github.com/chuan-yun/Molten/issues).
* Отправить исправления и функции через запрос на вытягивание.
# Лицензия
Apache License Version 2.0 см. http://www.apache.org/licenses/LICENSE-2.0.html
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )