Logging В данный момент каждый сервис сам пишет логи в logstash (logstash:5044 UDP). logstash дальше шлет логи в elasticsearch. На каждый день создается новый индекс с именем - <название сервиса>_logs-YYYY-MM-DD. Очистка происходит с помощью ILM в Elasticsearch, через 14 дней, индекс будет удален
Формат: JSON, * - обязательный поля
{
"index_name": "service name", // * Имя сервиса, Должно быть константным.
"log_level": "debug", // *
"message": "Log message", // * Рекомендуемая длина сообщения - не более 255 символов.
"context": '{"token": "123"}', // Любые данные в виде строки (зачастую JSON)
"lifecycle_token": "123214231324",
"parent_lifecycle_token": "2134423432",
"timestamp": "2020-04-15T10:10:40.231Z",
// date in ISO format, если нету timestamp, logstash сам подставит его.
// Примеры:
// 2020-05-22T13:21:57Z - seconds
// 2020-05-22T13:21:57.129Z - milis
// 2020-05-22T13:21:57.123456Z - micros
"priority": 3, // число 1-7, соответствует уровню лога
}
Уровни логов:
- emergency - программа дальше не может работать Например - автозакупка не может перейти на страницу, и падает
- alert - оповещение пользователей по поводу каких то событий Например - Та же автозакупка не смогла купить какой то из товаров, потому что он закончился. Отправить уведомление менеджеру
- critical - произошло что-то ужасное, но программа может продолжать выполнение. Например - msrp для у разных поставщиков разное(хотя должно быть одинаковое)
- error - чтото не смогло выполнится. Например - какая то запись не смогла записаться в датастор
- warning - Метрика деградации сервиса Например - pu api вернул exception(ошибку), такое бывает, и если это происходит не часто, это можно пропускать. Тоесть при каждой событии, пишем метрику, и если метрика начинает зашкаливать, включаем дебаг, и ищем проблему.
- info - Метрика нормальной работы программы, используется в аналитических целях Например - количество запросов на сервис(тоесть, каждый раз когда приходит запрос на сервис, отправляется сообщение в метрики)
- notice - Не срочное уведомление (возможно метрика)
- debug - по умолчанию дебаг логи мы не пишем, их включаем только если необходимо отловить проблему в работающем приложении.
Именования логов
- MySQL - bd с названием сервиса, таблица логов - logs
- Elasticsearch - индекс с форматом - <название_сервиса>_logs- example - (service_logs-2020-01-01)
- Logstash - index_name в теле лога