Агрегирование статистики из старых и новых событий

Мы хотели бы передать журналы CDN в Graphite и агрегировать числа, найденные там (количество различных кодов состояния HTTP, средний ответ размеры, средний коэффициент попадания в кеш и т. д.)

Однако журналы загружаются к нам только изредка, а иногда даже не по порядку - время от времени утренний журнал может загружаться вечером, через несколько часов после того, как дневной журнал был загружен. загружено и обработано. Кроме того, поскольку сеть CDN (очевидно) имеет несколько серверов и центров обработки данных, разные журналы могут охватывать перекрывающиеся периоды.

Это означает, что любой агрегатор должен поддерживать доступ ко всей предыдущей статистике, чтобы иметь возможность увеличивать агрегаты при обработке нового журнала ...

Что - если что-нибудь - может сделай это? И как мне настроить logstash для подачи в него? Спасибо!

1
задан 23 June 2017 в 07:03
1 ответ

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

Загрузка журналов - это то, что делает Logstash. Для этого есть файл {} плагин ввода :

input {
  file {
    path => [ '/opt/export/cdn_logs/*.csv'
    tags => [ 'cdnlogs' ]
  }
}

И фильтр csv {} для облегчения приема данных CSV. .

filter {
  if 'cdnlogs' in [tags] {
    csv {
      source => "message"
      columns => [
        'cdndate',
        'host_server',
        [...]
        'response_time' ]
    }
  }
}

Если у вас нет данных CSV, возможно, эти строки находятся в довольно нормальном формате Apache, еще не все потеряно. Вероятно, вам нужно будет провести время с Grok. Это само по себе.

Упорядочивание дат - меньшая проблема, если вы позаботитесь о сохранении своих временных меток и не используете , который явно не сохраняет их. Если вы еще этого не сделали, Logstash может взять дату в файле журнала и сделать ее меткой даты / времени события.

filter {
  date {
    match => [ "cdndate", "ISO8601" ]
  }
}

Это получает метку даты / времени в строке журнала в качестве метки времени события. . Круто, теперь давайте перейдем к чему-нибудь полезному.

Стандартным хранилищем данных для Logstash является , который Elastic (компания) пытается выставить счет так же хорошо, как и хранилище таймсерий, как и цель -встроенные инструменты, такие как InfluxDB или OpenTSDB. Может быть, хотя, по моему опыту, специализированные работают лучше. Все они могут, если вы введете их правильно, сохранить неупорядоченные события в правильном порядке, чтобы последующие запросы могли ассимилировать новую информацию.

Вывод graphite {} из Logstash сохранит временные метки, который позволяет вам использовать графит в качестве резервного хранилища, если вы хотите.

Существуют плагины вывода Infxdb {} и opentsdb {} , которые будут преобразовывать ваши данные в истинный база данных временных рядов.

Отсюда агрегирование / резюмирование краткосрочных данных (через несколько дней после вашего объяснения) должно выполняться во время запроса. Такой инструмент, как , может работать с несколькими из этих хранилищ данных и упрощает отображение. После того, как вы выйдете из зоны риска для поступления журналов, вы можете запустить более поздний процесс ETL для создания агрегатов / суммирований в базе данных на основе полного набора данных . А затем очистите полные журналы по мере необходимости.

Вкратце, метод:

  1. Загрузка файлов с помощью Logstash.
  2. Использует фильтрацию для извлечения полей из файлов журнала CDN.
  3. Использует ] дата {} фильтр для вставки отметки времени журнала в отметку времени события.
  4. Экспорт данных во что-то (эластичная, графитовая или другая база данных временных рядов)
  5. Отображение инструменты используют агрегацию в реальном времени запросы для отображения данных потребителям, по крайней мере, для краткосрочных данных.
  6. По прошествии определенного периода времени, вероятно, пары дней, сценарий или другой автоматизированный процесс генерирует агрегаты и входные данные. их в хранилище данных.
  7. По прошествии некоторого времени данные с полным разрешением удаляются, оставляя только агрегированные данные.
2
ответ дан 3 December 2019 в 20:21

Теги

Похожие вопросы