#append #splunk
#добавить #splunk
Вопрос:
У меня есть запросы, которые выглядят так:
source="/log/ABCD/cABCDXYZ/xyz.log" doSomeTasks| timechart partial=f span=1h count as "#XYZ doSomeTasks" | fillnull
source="/log/ABCD/cABCDXYZ/xyz.log" doOtherTasks| timechart partial=f span=1h count as "#XYZ doOtherTasks" | fillnull
Теперь я хочу получить эти два поиска на одном графике (я не хочу суммировать числа, которые я получаю за поиск, до одного значения).
Я видел, что есть возможность принять appendcols
, но мои попытки использовать эту команду не увенчались успехом.
Я пробовал это, но это не сработало:
source="/log/ABCD/cABCDXYZ/xyz.log" doSomeTasks|timechart partial=f span=1h count as "#XYZ doSomeTasks" appendcols [doOtherTasks| timechart partial=f span=1h count as "#XYZ doOtherTasks" | fillnull]
Комментарии:
1. В дополнительном поиске (внутри квадратных скобок) вы должны
search
явно использовать command .
Ответ №1:
Благодаря PM 77-1 проблема решена.
Эта команда работает:
source="/log/ABCD/cABCDXYZ/xyz.log" doSomeTasks|timechart partial=f span=1h count as "#XYZ doSomeTasks" | appendcols[search source="/log/ABCD/cABCDXYZ/xyz.log" doOtherTasks| timechart partial=f span=1h count as "#XYZ doOtherTasks" | fillnull]
Примечание: вам не нужно указывать источник во второй команде поиска, если это тот же источник, что и первый.
Ответ №2:
Общее решение
Сгенерируйте каждый столбец данных, используя дополнительный поисковый запрос в следующей форме:
|appendcols[search (myquery) |timechart count]
Дополнительные шаги
Списку одного или нескольких столбцов запроса должен предшествовать сгенерированный столбец, который устанавливает timechart
строки (и дает appendcols
что-то для добавления).
|makeresults |timechart count |eval count=0
Примечание: Строго не обязательно начинать с сгенерированного столбца, но я обнаружил, что это чистый и надежный подход. Примечательно, что это позволяет избежать проблем, которые могут возникнуть в частном случае «Результаты не найдены», которые в противном случае могут запутать визуализацию. Плюс это более единообразно и, как следствие, проще в работе.
Наконец, укажите каждый из fields
отображаемых в _time
качестве оси x:
|fields _time, myvar1, myvar2, myvar3
Полный пример
|makeresults |timechart span=5m count |eval count=0
|appendcols[search (myquery1) |timechart span=5m count as myvar1]
|appendcols[search (myquery2) |timechart span=5m count as myvar2]
|appendcols[search (myquery3) |timechart span=5m count as myvar3]
|fields _time, myvar1, myvar2, myvar3
Будьте осторожны, чтобы использовать одно и то же span
повсюду.
Другие подсказки
При сравнении разрозненных данных на одной диаграмме, возможно, для оценки их относительного времени, часто возникают различия в типе или масштабе, которые могут сделать наложенный результат практически бесполезным. В подобных случаях не пренебрегайте параметром формата «Журнал» для оси Y.
В некоторых случаях может быть даже целесообразно использовать взломы данных eval
, чтобы преобразовать значения в визуально сопоставимое состояние. Например, добавление |eval myvar1=if(myvar1=0,0,1)
дедуплицирует значения при использовании следующего timechart count
. Вот некоторые соответствующие документы:
Комментарии:
1. Может быть полезно управлять этим как панелью информационной панели — в частности, чтобы получить преимущество замены переменных для таких вещей, как
span
.2. Splunk — удивительный инструмент, но в некотором смысле он удивительно ограничен. Заставить диаграммы делать то, что вы хотите, может быть сложной задачей, а иногда и казаться невозможным. Например, я вижу временные несоответствия в
_time
значении между столбцами диаграммы (некоторые из них неверны). Аналогичный, очень воспроизводимый эффект возникает, когда вы пытаетесь использовать временные диаграммы с разнымиspan
значениями.appendcols
по-видимому, не гарантирует правильного размещения строк. Предостережение.3. Существуют интригующие, но невероятно сложные обходные пути: здесь и здесь . Например, за временной диаграммой будет следовать
|append [makeresults |timechart count span=1m |eval count=0] |timechart span=1m sum(count) as myvar
. Обратите внимание, что это частично основано на логике «сгенерированного столбца», приведенной выше.4. Создайте дополнительный столбец из математики в связанных столбцах, например
|eval myvar4=(myvar1 myvar2)
.