Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk

в 8:09, , рубрики: alerting, big data, machine data, script, splunk, Блог компании TS Solution, загрузка данных, логи, Серверное администрирование, системное администрирование

Ранее мы писали, как можно загрузить логи в Splunk из каталога или с помощью syslog, рассказывали как забирать стандартные виндовые и линуксовые события, но что если нам необходимо получать более гранулярную информацию о работе наших систем?
В таком случае на помощь приходят скрипты!

Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 1

Когда, какие и как можно использовать скрипты в Splunk для получения данных — вы можете узнать под катом.

Типичные варианты использования

Скрипты зачастую используют в тех случаях, когда:

  • Необходим доступ к информации, которая не пишется в лог;
  • Нам нужны данные генерируемые посредством командной строки, например, с помощью vmstat или iostat;
  • Нам необходимы специфические данные или результаты работы баз данных, веб сервисов или API;
  • Данные нуждаются в предварительной обработке для более простого парсинга на события и поля;
  • Используются источники данных с медленными и ресурсоемкими процедурами запуска;
  • И др.

Для скрипта можно устанавливать интервал, с которым он будет воспроизводиться и передавать данные в Splunk.

В качестве сценариев можно использовать shell scripts, python scripts, командные файлы Windows, PowerShell или любые другие утилиты, которые могут формировать и передавать данные.

Пример

В рамках статьи мы рассмотрим пример загрузки данных с помощью скрипта.

Допустим, у нас есть файловый сервер и каталог, размер которого нам по некоторым причинам необходимо мониторить, а так же мы хотим чтобы он не превышал порогового значения (для теста в 45 мб). Давайте напишем скрипт, который будет считать размер этой директории c интервалом 30 секунд, а также сделаем алерт, который будет уведомлять нас о превышении порогового значения.
Размер папки будем считывать с помощью нижеприведенного скрипта, который на выходе даст временную метку, путь к папке и ее размер байтах.

import os
import time
from datetime import datetime
dir_path="///for_script"

def get_size(start_path = '.'):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(start_path):
        for f in filenames:
            fp = os.path.join(dirpath, f)
            total_size += os.path.getsize(fp)
    return total_size

time_of_event=datetime.strftime(datetime.now(), "%Y.%m.%d %H:%M:%S")
print time_of_event, dir_path, get_size(dir_path)

Подробнее загрузку данных с удаленных источников мы разбирали в предыдущих статьях (тут и тут). Поэтому обсудим сейчас это кратко.

Нам необходимы:

• Удаленная машина, на которой установлен Splunk Universal Forwarder
• Splunk-indexer, на котором мы создаем приложение send-to-indexer, переносим его в deployment-apps и настраиваем Forwarder management.

Также на Splunk indexer cоздаем приложение monitor_scripts, переносим его в папку deployment-apps. В приложении создаем папку local и в ней файл inputs.conf со следующим содержимым:

[script://./bin/scripts/foldersize.py]
disabled = false
index = test_script
interval = 30.0
sourcetype = test_script

Также добавляем туда наш скрипт в директорию /bin

Перезагружаем Deployment server
.../splunk/bin/splunk reload deploy-server

И… получаем данные!

Обработка данных и создание алерта

Splunk автоматически выбрал временную метку, но остальная информация осталась в виде сырых данных, поэтому необходимо выделить поля (О том как это сделать, мы писали в предыдущей статье) В данном случае мы выделили 2 поля: путь папки (folder_path) и размер (size)

Размер папки представлен в байтах, давайте переведем это число в Мб. (Это можно сделать и в скрипте, но мы покажем как сделать это в Splunk)

Создаем новое вычисляемое поле (Settings – Fields – Calculated fields – New)
Указываем source type наших данных, название нового поля и выражение для вычисления. Теперь к данным с указанным source type будет добавляться это вычисляемое поле.

Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 2

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

Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 3

Создаем алерт. Пусть, когда размер папки превысит 45 мб, Splunk отправит нам сообщение на электронную почту. Более подробно о том, как отправлять оповещение на электронную почту мы писали тут, а в Slack – тут.

Алерт будет основан на новом запросе, чтобы в сообщения можно было вставить поля из запроса.

Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 4

Сохраняем запрос как алерт и прописываем его условия:

Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 5
Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 6

И получаем письмо:

Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 7

В настройках алерта мы установили, что если размер папки не уменьшится в течение 15 минут, то оповещение придет вновь.

Заключение

На этом простом примере, мы показали принцип загрузки данных в Splunk через скрипты. Вы можете создать скрипт, который будет решать Вашу задачу: загружать необходимую информацию в Splunk и оперативно получать результат.

Надеемся, что эта информация будет полезна для Вас.

Мы рады ответить на все ваши вопросы и комментарии по данной теме. Также, если вас интересует что-то конкретно в этой области, или в области анализа машинных данных в целом — мы готовы доработать существующие решения для вас, под вашу конкретную задачу. Для этого можете написать об этом в комментариях или просто отправить нам запрос через форму на нашем сайте.

Мы являемся официальным Premier Партнером Splunk.

Splunk Scripted Input. Или как использовать скрипты для получения данных о работе систем и анализировать их в Splunk - 8

Автор: JuliaKoroleva

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js