Пример использование Splunk для анализа логов

    Splunk — это система хранения и анализа логов. В двух словах принцип работы можно описать так: есть сервер Splunk, который хранит, индексирует и позволяет анализировать логи, и есть рабочие машины (сервера), которые эти логи создают и передают на сервер Splunk. Сервер Splunk в свою очередь может быть кластером из нескольких физических машин, между которыми распределяется хранение информации, и которые используются для ее обработки по технологии MapReduce. Способов передавать логи с рабочих машин очень много: через специальную программу forwarder, которая умеет быстро и эффективно отсылать изменения логов на сервер, через технологии типа NFS/SMB, или SNMP, можно самостоятельно отсылать данные в Splunk по TCP/IP (например, вместо того, чтобы писать в файл). Под Windows Splunk умеет брать данные из Windows Events, Performance Counters или Реестра.

    Для Splunk логи — это текстовая информация, разбитая на строки. В процессе индексирования строки логов разбиваются на поля, например «имя=значение», хотя это настраиваемо. Далее с помощью специального языка запросов SPL можно работать с этими полями: сортировать, агрегировать, создавать вычисляемые поля, формировать таблицы, обращаться ко внешним словарям, например, из SQL-базы, и, конечно, строить разнообразные графики. SPL работает не только с одиночными строками, но и позволяет группировать, «сжимать» логически в одну строку многострочные куски.

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

    Еще Splunk называет себя «Google для логов», но оставим это высказывание без комментариев на их собственный откуп.

    Интерфейс Splunk — веб. Можно создавать панели (dashboard'ы), из которых формировать свое собственное Splunk-приложение. У Splunk есть магазин приложений (хотя большинство из них бесплатны), где есть море уже готовых конфигураций для анализа популярных систем, например, UNIX syslog, логи Apache, Microsoft Exchange и т.д.

    Программный комплекс Splunk можно бесплатно скачать с официального сайта. Лицензирование происходит на основе дневного объема прокачиваемых через систему логов. Для ознакомления есть минимальный бесплатный объем, которого прекрасно хватает для освоения системы.

    Для быстрого ознакомления рекомендую книгу Exploring Splunk от создателей этого продукта. Пролистав ее, вы получите неплохое начальное понимание, что можно делать в Splunk, суть языка запросов SPL и т.д.

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

    Пример будет необычным. Традиционно, логи используются для анализа исторической информации. Но ничто не мешает извлекать ее по ходу появления и создавать «живые» индикаторы на ее основе. Соглашусь, мой пример немного искусственен, но я хочу показать, как быстро и просто можно «накидывать» данные в Спланк, формализовать их и строить на их основе динамический пользовательский интерфейс

    Вот простой скрипт, который в течение минуты будет записывать в лог сообщения, содержащие процентный показатель (от 0 до 100%).

    require 'date'
    
    duration = 60*1
    update_period = 0.5
    i = 0
    while i <= duration do
      progress = i * 100.0 / duration
      msg = "%s progress=%05.2f\n" % [DateTime.now, progress]
      puts msg
      open("logs/my.log", 'a') { |f| f << msg }
      i = i + update_period
      sleep update_period
    end
    

    Лог будет выглядеть примерно вот так:

    2012-11-23T15:58:54+00:00 progress=45.00
    2012-11-23T15:58:55+00:00 progress=45.83
    2012-11-23T15:58:55+00:00 progress=46.67
    2012-11-23T15:58:56+00:00 progress=47.50
    2012-11-23T15:58:56+00:00 progress=48.33
    2012-11-23T15:58:57+00:00 progress=49.17
    2012-11-23T15:58:57+00:00 progress=50.00
    

    Наша цель создать dashboard (панель просмотра) в Спланке, которая отображала бы процесс выполнения скрипта в форме красивого индикатора, беря при этом данные из лога.

    Для простоты мы будет все делать на одной машине, и Спланк будет брать лог просто из указанного файла.

    Итак, вы уже установили Спланк, и если зайти на "http://localhost:8000", то вы увидите рабочую страницу Спланка, где можно залогиниться пользователем «admin».

    Далее идем по меню: «Manager -> Data Inputs -> Add data -> A file or directory or files». Тут мы указывает имя файла или каталога, где лежат наши логи (в данном случае это будет одиночный файл).



    Подтверждаем создание так называемого источника логов (source type). Как я уже говорил, логи в Спланк могут поступать различными путями. Каждый такой источник логов именован и может обрабатываться независимо.



    Итак, лог добавлен. Мы видим, что Спланк «подцепил» файл и уже разобрал строки на поля. Спланк понимает огромное количество форматов даты и времени, но и это настаиваемо.



    Далее мы даем имя нашему источнику логов — «test_logging», и сохраняем настройки.



    Возвращаемся на главную страницу и строке Search вводим наш первый запрос на языке SPL (в красном):

    sourcetype=«test_logging» | table progress as float

    Перевожу: взять логи из источника «test_logging», сформировать таблицу, в которую добавить колонку со значением из поля «progress», попутно преобразовав его в тип float. Внизу (в синем) мы видим результат выполнения запроса (в логе уже есть данные). В SPL работает принцип UNIX pipes (|), когда результат одной операции передается на вход следующей.



    Итак, таблица есть. Теперь сделаем ей графическое представление. Так как у нас всего одно поле, показывающее процент выполнения от 0 до 100, то, например, можно использовать вид спидометра, стрелка которого будет демонстрировать текущее значение. Кликаем на «Formatting options» (в синем) и выбираем тип элемента (Chart type) «radial gauge» (в красном). Появляется вот такой красивый спидометр.



    Первый виджет готов. Теперь ради эксперимента создадим еще один. Он тоже будет показывать значения поля progress, но в виде горизонтального индикатора (progress bar), двигаясь слева направо. Запрос в этом случае будет таким:

    sourcetype=«test_logging» | table _time progress | head 1

    Что значит: по данным из источника «test_logging» создать таблицу из двух полей, "_time" и «progress», из которой брать только первую строку. Сортировка по умолчанию по полю "_time" по убыванию. Внизу (в зеленом) мы видим результат этого запроса.



    Далее кликаем на «Formatting options», выбираем тип «bar» (в зеленом), для оси Y задаем интервал от 0 до 100. Почему-то тут ось X идет по вертикали (там будет отображаться поле "_time"), а ось Y по горизонтали (там будет отображаться поле «progress»). Так как запрос на предыдущей картинки показывал значение 100, то и наш горизонтальный индикатор полностью закрашен.



    Я пропустил это для первого виджета, спидометра, но отлаженный запрос и его визуальное представление можно сохранить в виде «Dashboard panel». Для это кликаем на «Create» и «Dashboard panel...» (в красном) и сохраняем настройки. Назовем первый наш виджет «Speedometer», и второй «Progress bar».



    При сохранение первого виджета будет предложено также создать панель (dashboard), назовем ее «Test logging». При сохранении второго виджета добавим его уже созданную панель.

    После создания панели можно кликнуть на «Dashboards & Views», выбрать ее по имени «Test logging». Внешний вид будет примерно таким:



    Пока данных нет, поэтому панели пустые. Мы видим название панели (в красном), названия виджетов (в желтом), кнопку активации панели (в зеленом) и кнопки «Edit» (в синем), которой можно налету подправить запрос или визуальное представление. Перед запуском скрипта надо через кнопку «Edit» зайти в каждый из виджетов и указать интервал времени обновления в одну секунду: от «rt-1s» (real time — 1s), до «rt» (текущее время).

    Итак, все! Зажимаем на «On» и запускаем наш скрипт.

    Видео как это работает:



    Все!

    Заключение



    Конечно, пример очень простой, но надеюсь, мне удалось передать хотя бы минимальное ощущение, как работает Спланк.

    Скажу, мы в компании недавно начали использовать этот продукт и пока довольны. В этом году я был на конференции SplunkLive, где выступали люди из весьма солидных контор типа British Telecom. С помощью Splunk одни обрабатывают гигабайты логов ежедневно.

    Увы, даже у крупных контор не всегда есть желание разрабатывать подсистему для обработки логов, так что Спланк может прийтись очень кстати.
    Метки:
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 59
    • +9
      только вот стоит этот Splunk как реактивный самолет.
      • +1
        Отнюдь. По сравнению с конкурентами (HP-Arcsight Logger, IBM QRadar Logger, LogLogic и т.п.) Splunk стоит весьма недорого.
        • 0
          есть опенсорс альтернативы, см мой комментарии ниже.
          • 0
            Я в курсе. Отлично, что они существуют и удовлетворяют чьим-то запросам. Увы, им еще очень далеко до профессиональных инструментов. Как по количеству «понимаемых» форматов и поддерживаемых транспортов, так и по возможностям аналитики, как ретроспективной, так и перспективной. Я уж молчу, если вдруг потребуется тегирование и макро-корреляция. Ну и если «пять килобаксов» это считается уже дорого, то лучше и не знать, сколько стоят мною названные инструменты :)
            • 0
              да 5 килобаксов дорого за нескольго гигабайт, особенно когда нужно сотни гигабайт в день.
              Я и слов то таких не знаю, тегирование и макро-корреляция. Обьясните пожалуйста что это такое.
              • 0
                Нельзя о стоимости таких вещей рассуждать бытовыми категориями, не домой же покупать. Исключительно пользой для бизнеса, в терминах ROI и TCO, как бы банально это ни звучало. Эппл обрабатывает Спланком около 120Тб/сутки, например, представь себе ценник.
                • 0
                  opensource продукты ничем не хуже коммерческих а иногда даже и лучще.

                  Хотелось бы посмотреть на white-paper про Apple как они это делают, какие плагины используют и сколько железа на это тратится. Я предполагаю что на таких обьемах у них чтото посерьезнее должно быть типа Hadoop и MapReduce.
                  • 0
                    Никто не говорит, что вообще все опенсорц решения хуже. Довольно часто бывает наоборот. Речь про данную конкретную тему и инструменты.
                    Да и вообще, довольно глупо спорить opensource vs commercial, потому что это отнюдь не противоборствующие стороны. Сегодня это чаще симбиоз.
                    Взять тот же спланк. Там 96% системы — питоновские скрипты и как раз тот самый map reduce. Закрыто только небольшое ядро. Такой вот «опенсорц».
                    • 0
                      конечно, взять опенсорс и дописать чтото своё и продавать.
                      • 0
                        я помню знаменитый симбиос freebsd и win98 tcp/ip stack. Наверно самый красноречивый из тех что я знаю
                        • 0
                          ах да еще.
                          симбиоз подразумевает взаимовыгодное сотрудничество, хотел бы я знать, что дал Splunk обратно комьюнити.
                          Получается както симбиоз в одну сторону.
                          • 0
                            Откуда мне знать, что Splunk кому отдал? Спроси у них.
                            Твой сарказм совсем не по адресу и выдает в тебе либо незрелого школьника с еще нерастраченным максимализмом, либо просто человека с узким мышлением и взглядами.
                            Начнем с того, что коммерческие компании пллатят деньги людям, которые потом в свободное (а чаще еще и в рабочее) пишут opensouce-приложения.
                            Продолжим с конкретным примером — linux kernel. Кто же коммитит в ядро? Есть отчет от Linux Foundation за 2012 год, в котором сказано:
                            It is worth noting that, even if one assumes that all of the “unknown” contributors were working on their own time, over 75% of all kernel development is demonstrably done by developers who are being paid for their work.

                            Общий вклад «чистых» энтузиастов, которые просто писали код в свободное время составляет 17.9%. Всё остальное в linux-ядре написано коммерческими компаниями. Почитай отчет, там интересно много написано.
                            • 0
                              я все не могу избавится от ощущения что пил с Вами на бруденшафт.
                              Пойду уроки учить чтоли, пока чтото во мне еще не выдало Вам чегото.
                              • 0
                                Кто такой бруденшафт? По Русскому точно неуд стабильно, судя по всему :)
                                • 0
                                  стыдно дяденька такого не знать.
                                  ru.wikipedia.org/wiki/%D0%91%D1%80%D1%83%D0%B4%D0%B5%D1%80%D1%88%D0%B0%D1%84%D1%82
                                  стыдно
                                  • 0
                                    опечатка извиняюсь
                                    • 0
                                      А вот это действительно стыдно. Нет, не опечатка, конечно же.
                                      • 0
                                        у вас случайно нет профайла на линкедин. Я вам пришлю приглашение, договоримся и продолжим наш спор за бутылочкой вина. Вы кстати какое предпочитаете?
                                        • 0
                                          Есть. Свои Имя-Фамилию я не скрываю, все написано в профиле. Алкоголь не употребляю.
                                          • 0
                                            я вам отправил приглашение через линкедин
                                            • 0
                                              accepted
                                              • 0
                                                как оказывается я совсем не школьник, вернее школьник но не совсем Ж)
                                                • 0
                                                  Однако закомплексованность подростковая еще не отпускает, суд по всему ) Я не верю, что у твоего работодателя нет возможность приобрести коммерческое решение под задачу. Тут несколько вариантов:
                                                  1) Задача реально не интересна никому, кроме тебя и, может, пары коллег. Печаль. Но понятно.
                                                  2) Задача интересна руководству/бизнесу, но ты не нашел в себе силы пойти и убедить, что нужен такой-то продукт за столько денег. Даже не попытался, посчитал на калькуляторе, разделил на свою ЗП и испугался. Нарыл опенсурц и ковырял его неделями, вроде взлетело, ты и успокоился. Печаль.
                                                  3) Задача интересна руководству/бизнесу, но ты не сумел их убедить, что нужно купить. Грубо говоря, был послан и ушел искать «альтернативы». Далее см. п2.
                                                  • 0
                                                    Я устал с вами спорить, удачного дня.
                                                    • 0
                                                      Просто выбери вариант или предложи свой. Это несложно.
                            • 0
                              Можно иронизировать сколько угодно, особенно основываясь на неверных фактах и слухах. Только вот смысла в этом немного.
                              • 0
                                спасибо почитал с большим интересом. где я могу почитать про реализацию спланка для эппл, ведь такое количество логов не шутка анализировать. И что спланк вернул обратно в опенсорс комьюнити в рамках " симбиоза"?
                                • 0
                                  Про реализацию спланка для эппл спроси у спланка. Ты умеешь читать? Я уже написал, что я не сотрудник спланка, вообще не имею к этой компании никакого отношения. Просто знаком с их продуктом по роду деятельности.
                                  • 0
                                    удивительное совпадение, я тоже знаком. Вот потому и говорю, что хороший продукт, но дорогой ИМХО. И написал какие есть опенсорс альтернативы, может кому полезно будет посмотреть альтернативные решения. А вот теперь тут в коментах сначала небольшой холиварчик получился, уже даже на личности перешли. Мне это даже нравится в силу моего незаконченного среднего образования и тоннельного видения вместе с недалеким умом.
                                    • 0
                                      Что скажешь про ядро linux? Тут и туннельного хватит, чтобы увидеть, кмк.
                                      • 0
                                        тунельное зрение говорит: опенсорс хорошо, спланк дорого.
                                        • 0
                                          Ты продолжаешь судить о стоимости, исходя из личных бытовых соображений. Для кого дорого? Для каких задач дорого? Сколько будет «недорого»? Сколько будет «охренеть как дорого»? Основы рыночной экономики еще не проходили? Закон спроса и предложения, например?
                                          • 0
                                            нету у меня бытовых соображений. один шкурный интерес
                                            • 0
                                              Ты владелец компании и считаешь, что с точки зрения возврата инвестиций, вложения в коммерческий продукт Splunk имеют неоправданные риски? Выскажи наконец свои соображения, мне интересно послушать.
                                              Пока же это выглядит так:
                                              — 5 килобаксов, ололо, это ж 10 айфонов! Это ж почти лада гранта! За какой-то софт! Да я за винду 140 баксов не отдам никогда и игрушку на телефон не куплю за 3 бакса, можно ж скачать с трекера или 4pda! Какой дурак покупает, не знаю.
                    • 0
                      я в свое время делал некоторое исследование, splunk выглядит как вылизанный продукт, и казалось бы решение out-of-the-box, хотя и своими особенностями. Решено было не идти на поводу и построить все вокруг elasticsearch ибо комьюнити и все достаточно прозрачно. Именно комьюнити не хватает коммерческим продуктам особенно дорогим, вы бы посмотрели форумы где ребята общаются по поводу BigIP F5.
                      • 0
                        Вот уж чем не является спланк, так это out-of-the-box продуктом. Это платформа, на базе которой уже можно строить что угодно, от BI до SIEM. Ну и насчет community у дорогих и коммерческих тоже мимо. Посмотри на коммьюнити Cisco или MS. Да даже у оракла нехилое коммьюнити. И у спланка оно есть, народ весьма активно обменивается парсерами, кастомными виджетами, и вообще, помогает друг дружке. У того же Arcsight, который один из самых старых и дорогих из всех, тоже есть отличное коммьюнити. Просто эти community скрыты от не-пользователей, вход только для клиентов, поэтому оценить ты их, увы, не сможешь. Это не есть гуд, но это не повод говорить, что их не существует. Пример с F5 не показателен, ну что там можно обсуждать у балансировщика? Да и у коммерческих продуктов бОльшая часть «обсуждений» скрыта в базах знаний и переписке саппорта Tier1-2-3 и наружу не выносится, за ненадобностью.
                        • 0
                          нет, почему.
                          У меня есть на спланк комьюнити аккаунт, работал я с ним. Конечно не Яблоко, но тоже было что в спланк засунуть, знаю про что говорю. Вы меня/других убеждаете что это не так, но позвольте с вами не согласится.
                          У вас хороший продукт качественный, платформа, но комьюнити любого коммерческого продукта проигрывает к сожалению. Обсуждения не имеет смысла скрывать, если только там непрофессионализм и решения костыль на костыле. Коммерческий продукт не гарантирует безопасность и качество, к сожалению.
                          • 0
                            У меня нет никакого продукта, ты меня с кем-то путаешь. Я просто поболтать зашел и к спланку не имею никакого отношения.
                            Никто не гарантирует безопасность. А вот качество и, что важнее, качественную поддержку в рамках четких SLA, может обеспечить только коммерческая компания.
                            Кроме того, у коммерческих компаний простая и понятная общая цель — зарабатывание бабла. Поэтому и стимулы другие. И поэтому же коммерческая компания с большей вероятностью выберет коммерческое ПО от другой коммерческой компании, чем доверит свой бизнес энтузиастам. Так устроен сегодняшний мир.
                            • 0
                              извиняюсь, подумал что Вы както связаны с компанией.
                • 0
                  кажется, до 500 тыс. строк в день — бесплатно.
                  и это не значит, что оно игнорирует дальше. просто останавливается и говорит «продолжу завтра».
                  многим хватит.
                • +2
                  Занятная компания Splunk. Собеседовался я туда не так давно. Если кому интересно, могу рассказать.
                  • +1
                    о! очень интересно, расскажите пожалуйста

                    я просто смотрю на рынок, какое то ненормальное ценообразование… как у Splunk так и конкурентов…
                    • 0
                      Расскажите, конечно. Интервью — это всегда полезно.
                      • 0
                        Что не так с ценообразованием?
                        • 0
                          >Splunk Enterprise pricing in North America starts at U.S. $6,000 for a 500 megabyte-per-day perpetual license, including first year support,
                          у меня больше от 500 до 800 мегов в день логов
                          сжатыми от 80 до 150 в день… но splunk не считает сжатые логи

                          откуда столько? ну поскольку у меня не миллионы пользователей но и не 100 в сутки -)
                          я хочу парсить access.log и парсить debug application log и еще кучу error логов

                          у меня реально нет 6000 баксов… и раньше был на сайте ценник который говорил что для моего объема логов мне понадобится чуть ли не 15000 баксов…

                          >or U.S. $2,000 per year for a term license including support.
                          понимаете, я могу платить максимум 50-100 баксов в месяц за сервис который принесет мне.КОНКРЕТНУЮ прибыль
                          но не 200 баксов в месяц… хотя, пока писал пост, подумал, да фиг с ним… надо ставить уже и платить бабос =)
                          • 0
                            Какая задача стоит? Может Спланк и ему подобные и не нужен вовсе?

                            Кстати, у HP-Arcsight бесплатная версия Logger'а позволяет 750Мб/сутки обрабатывать. Это если нужен лог-менеджмент для гетерогенных сред.
                            Если нужен SIEM, то можно начать с opensource-версии AlienVault . Он и лог-менеджмент, и зачатки SIEM имеет. У них есть и платная версия, с сильно расширенными возможностями.
                              • 0
                                задач пока на самом деле всего две
                                1) трекинг ошибок и alert'ы
                                2) дебаг логов по саппорт тикетам

                                спасибо на ссылку на AlienVault не знал про него
                                • 0
                                  а о каких системах идет речь? Ошибки и алерты от кого? Какие логи дебажить?
                                  • 0
                                    у меня не SIEM ;)
                                    1) трекинг ошибок это error log от php и django в который сливаются ВСЕ ошибки
                                    2) алерты это когда ошибок с определенными сигнатурами становится больше чем сколько то за определенный период

                                    3) дебаг логов это достаточно детальные логи записи действий пользователя на сайте… со стороны приложения
                                    • 0
                                      Понятно, что не SIEM у тебя ) Он строится поверх log management'а.
                                      Под твои задачи Splunk подходит отлично, надо сказать. Попробуй с ними пообщаться, у спланка есть целых три русскоговорящих сотрудника. Правда сидят они все в Лондоне. Они сейчас начинают бурную активность на российском рынке, им нужны пополнять портфель реализованных проектов, а это значит, что можно рассчитывать на скидку, 15-20%, думаю, не меньше. Ну и подумай, покупая перманентную лицензию платишь один раз, она потом навсегда с тобой. Дальше сам считай, за какое время окупится это вложение, тебе виднее изнутри.
                                      Параллельно никто не мешает потестить указанные выше AlienVault и бесплатный Арксайт, также как и опенсорцные утилиты, указанные ниже.
                                      • 0
                                        logstash у меня валится после 1-2 дней работы стабильно…
                                        мне это не нравится =)

                                        splunk для меня действительно самое лучшее решение =)
                                        но уперлось в трафик

                                        если бы перманентная лицензия просто считалась бы как 1к баксов за 1гиг логов в день, это было бы очень круто… а там какая то экспотенциальная зависимость которая меня как жадного российского халявщика пугает =)

                                        я четко понимаю что для банка например или для телекома в миллионном городе цены которые озвучивает спланк подъемны вполне
                                        • 0
                                          Так зависимость не прямая, а обратная. Больше логов — ниже цена за гиг.
                      • 0
                        Вы не могли бы вы рассказать как вы используете Splunk у себя на проекте?
                        • 0
                          Мы делаем банковский софт. В Спланке мы сделали мониторинг здоровья системы для оператора (текущая нагрузка, состояние критических для онлайна подсистем) и, конечно, исторический анализ (разного рода статистика, audit trail, и т.д.).
                        • 0
                          Кто, мы? Мы не используем.
                          • +1
                            Древовидная структура комментариев яростно намекает, что вопрос про использование относится к автору топика.
                          • 0
                            О, шит. Простите, не заметил.
                            • 0
                              Если кому интересно есть опегсорс альтернативы.
                              Погуглите по поводу связки logstash+ elasticsearch+kibana или graylog + elastiucsearch.
                              Также есть вариант напрямую писать туда из syslog, omelasticsearch называется.

                              Надеюсь этот комментарий будет полезен, особенно у кого нет 5кбаксов за несколько гигабайт логов в день.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.