2014-09-30 2 views
0

Мы используем стек ELK (ElasticSearch + Logstash + Kibana) для управления журналом, но проблема в том, что kibana показывает статистику каждого компонента отдельно. Я хочу, чтобы корреляция событий в нескольких компонентах, например, исключение на сервере tomcat, приводила к HTTP 404 для клиента.Корреляция событий журнала в распределенной среде

Просьба предложить, как это может быть достигнуто. Если это невозможно с помощью ELK, предложите другое решение с открытым исходным кодом.

ответ

1

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

PHP

Вы можете использовать mod_unique_id создать уникальный идентификатор запроса, созданного на сервере Apache. Этот идентификатор может использоваться в вашей среде PHP для ведения журнала ($_SERVER['UNIQUE_ID']). Смотрите также [1]

Java

Если вы используете Java, я предпочитаю несколько иной подход. Создайте идентификатор запроса в приложении, который используется для идентификации конкретного запроса. Вы можете добавить идентификатор запроса в свой MDC (контекстный диагностический контекст). MDC может быть представлен различными GELF-коннекторами вместе с сообщениями журнала в логсташе. Используйте идентификатор запроса также в ответе HTTP как заголовок для Apache. Вы можете зарегистрировать заголовок ответа в своем журнале доступа к Apache. См. [2] для части Java.

В целом, если ваша среда состоит из более чем сервера Apache и Application, стоит передать RequestId (и, возможно, SessionId) для всех вызовов в ваших системах. Таким образом, вы можете соотнести всю деятельность в запросе/сеансе.

Ссылки