Агрегированные журналы сборки Jenkins, хранящиеся в ElasticSearch - PullRequest
0 голосов
/ 12 ноября 2018

Я храню свои журналы сборки Jenkins в ElasticSearch с помощью плагина Jenkins Logstash.

Моя конфигурация выглядит примерно так:

Logstash config

Эта часть прекрасно работает, но я хотел бы просмотреть полный журнал в Kibana.

Плагин пошагово отправляет результаты в ES и разрывается на каждой новой строке.Это означает, что длинный журнал в Кибане может выглядеть примерно так:

Log as seen in Kibana

Где каждая строка - это массивный JSON-вывод, содержащий тонны полей. Мне все равнооколо.Я действительно беспокоюсь только о поле сообщения.

Я сейчас читаю о агрегаторах , которые, похоже, являются тем, что мне нужно, но мои результаты не соответствуют желаемому.

curl -X GET "localhost:9200/_search" -H 'Content-Type: application/json' -d'
{
    "aggs" : {
        "buildLog" : {
            "terms" : {
                "field" : "data.url"
            }
        }
    }
}'

Распечатывает большой шар json, который не имеет того, что мне нужно.

В идеальном мире я хотел бы объединить каждое поле сообщения из каждого data.urlи извлеките его.

В SQL отдельный запрос для этого может выглядеть примерно так:

SELECT message FROM jenkins-logstash WHERE data.url='job/playground/36' ORDER BY ASC

Где 'job / plays / 36' является одним примером каждого data.url.

Как я могу это сделать?

1 Ответ

0 голосов
/ 07 декабря 2018

Обновление: лучший ответ, чем раньше.

Я все еще использовал FileBeat, но с ELK v6.5. + У Kibana есть пользовательский интерфейс логов! https://www.elastic.co/guide/en/kibana/current/logs-ui.html

Конфигурация по умолчанию из FileBeat прекрасно с ней работает.

__

Старый ответ:

Я решил решить эту проблему, используя FileBeat для сбора всех журналов, а затем с помощью Kibana Log Viewer для просмотра каждого из них. Я отфильтровал на основе source и затем использовал путь, по которому должен был находиться журнал.

...