The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Facebook открыл код системы мониторинга osquery

29.10.2014 21:29

Facebook объявил об открытии исходных текстов проекта osquery, в рамках которого развивается необычный инструмент низкоуровневого мониторинга за состоянием операционной системы. Своеобразность проекта заключается в том, что все отслеживаемые ресурсы отражены в форме виртуальной базы данных, обращение к которой производится через отправку SQL-запросов. Код написан на языке C++ и доступен под лицензией BSD. Из операционных систем поддерживаются OS X и Linux.

Через SQL-запросы можно достаточно подробно анализировать состояние системы, например, как с SQL-таблицами можно работать со списками выполняемых процессов, загружаемыми модулями ядра, списками пользователей, открытыми сетевыми соединениями, таблицами маршрутизации. Каждый запрос отражает текущее состояние в данный момент времени. Несмотря на то, что в рамках проекта развивается подготовлена подборка готовых ресурсов для мониторинга, при желании можно легко добавлять собственные уровни абстрации с поддержкой новых ресурсов и подключать их в форме плагинов.

SQL-запросы можно передавать через стандартный вход в утилиту osquery или использовать специально подготовленный интерактивный интерфейс командной строки. Синтаксис запросов совместим с SQLite. Для планирования опроса состояния систем на разных хостах подготовлен специальный фоновый процесс osqueryd, который может использоваться для создания распределённой инфраструктуры мониторинга, охватывающей несколько серверов. Кроме опроса текущего состояния разных систем, osqueryd занимается накоплением статистики изменений параметров систем, агрегирует имеющуюся статистику и ведёт лог изменений состояния.

В качестве примера, демонстрирующего удобство предлагаемого подхода, приводится запрос для вывода имён, идентификаторов и прикреплённых портов для всех процессов, слушающих сетевые соединения на указанном сетевом интерфейсе:



   SELECT DISTINCT 
     process.name, listening.port, process.pid
     FROM processes AS process
     JOIN listening_ports AS listening
     ON process.pid = listening.pid
     WHERE listening.address = '0.0.0.0';

Другой пример, показывает как найти выполняемые процессы, исполняемых файлов которых уже нет в файловой системе (например, для выявления вредоносного ПО):


   SELECT name, path, pid FROM processes WHERE on_disk = 0;


  1. Главная ссылка к новости (https://code.facebook.com/post...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/40964-monitoring
Ключевые слова: monitoring, sql, osquery
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (27) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, гость (?), 21:36, 29/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Это SDM. Sql-driven monitoring
     
     
  • 2.7, LionSoft (ok), 22:54, 29/10/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это BDSM. BaseData SQL Monitoring :)

    Давайте файловую систему в SQL уже допилим, а то всё никак, ни у кого не доходят руки :)

     
     
  • 3.13, Аноним (-), 00:53, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Bobby Tables обещал переименовать файл с своим hello world.
     
  • 3.18, Аноним (-), 07:44, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    открой для себя примеры в berkley db 5.x там был пример файловой системы и журнала в bd.
    А если хорошо посмотришь - то файловая система это такая большая база данных из нескольких таблиц key<>value и очень быстрая.
     
     
  • 4.20, LionSoft (ok), 08:34, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Только доступа по SQL запросам к файловой системе что-то не видать. Т.е. ФС key<>value есть и SQL базы есть, а полнофункционально ФС с SQL нет. BDB 5.x с примером считать полнофункцилнальной ФС полагаю не следует. А вообще смысла нет в такой ФС в целом, это как танк и самолет в единое целое совместить - получится и не танк и не самолет.
    Но вообще, тут как-бы ирония по поводу SQL.
     
     
  • 5.28, Аноним (-), 07:50, 31/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    чем не пример? bdb предоставляет контейнер с транзакциями - таблица аллоцированых инод, таблица аллоцированых блоков, и стопка таблиц с именами inode id, где-то поблочно данные, где-то записи директорий.

    реализовать тоже самое на SQLite, за нефик делать. И будет sql доступ.

    А вот и вообще готовое - http://oracle-base.com/articles/11g/dbfs-11gr2.php
    http://search.cpan.org/dist/sqlfs-perl/bin/sqlfs.pl

    это не доступ через sql к FS ?

     
  • 3.21, PK6 (?), 09:03, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Назад к AS/400?
     
     
  • 4.24, анон (?), 12:57, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда уж вперед к system i
     
  • 3.25, Аноним (-), 17:23, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    это BSDM)))
     
  • 3.29, gus_ak (?), 10:46, 31/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Было мнение, что zfs и есть некое подобие SQL.
     
     
  • 4.30, Аноним (-), 15:55, 31/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    8-o
    Впрочем мнение местных Ыгспердов как обычно основанно на НЕЗНАНИИ и SQL и ZFS :)
    Пройдите в сад!(С)
     

  • 1.2, Нанобот (ok), 22:03, 29/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    необычный инструмент - согласен. а вот есть ли от него какая-то практическая польза - сложно сказать
     
     
  • 2.3, Черный властелин (?), 22:26, 29/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Высокая производительность, низкое потребление ресурсов.
    Простота вывода в внешние системы мониторинга посредством SQL запросов.
     
     
  • 3.8, YetAnotherOnanym (ok), 23:08, 29/10/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Много есть систем мониторинга, получающих инфу через SQL-запросы? И что, SNMP по сравнению с SQL сильно тяжёлый и переусложнённый язык? (Если считать языком определение MIB'ов)
     
  • 3.11, all_glory_to_the_hypnotoad (ok), 23:50, 29/10/2014 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Высокая производительность, низкое потребление ресурсов.

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

     
     
  • 4.16, Crazy Alex (ok), 06:57, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Еще как помогает, если альтернатива - дикая смесь ps, grep и тому подобного.

    Может, SQL - и не лучший выбор (черт, да он даже для баз данных - ни хрена не лучший выбор), но идея получения хорошо структурированного ответа на запрос, не разорваный по десяти утилитам - отличная.

     
     
  • 5.23, Нанобот (ok), 10:43, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >Еще как помогает, если альтернатива - дикая смесь ps, grep и тому подобного

    да ну его нафиг такие альтернативы

     
  • 5.27, Andrew (??), 18:51, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > он даже для баз данных - ни хрена не лучший выбор

    А что для баз данных лучше?

     
  • 2.10, all_glory_to_the_hypnotoad (ok), 23:45, 29/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    профит заключается в возможности делать хитрые запросы для анализа. В обычных системах, например, нет интерфейся для произвольных запросов и их приходится кодить как-то руками. Это в теории, хз насколько хорошо это сделано в топике.
     
     
  • 3.12, Anonymous1 (?), 00:33, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Похоже, появились люди, называющие себя "администраторами" и кодящие на языке HTML и SQL...
    Чем более убоги пользователи, тем сильнее приходится под них прогибаться.
    Вот точно так же убогие скудоумцы, не осилившие пайпы из grep, awk, tail, ... ликуют от предлагаемых им в systemd бинарных логов с SQL интерфейсом...  
     
     
  • 4.17, Crazy Alex (ok), 06:59, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, вообще все эти грепы с авками хороши для чего-то однократного или нетребовательного к ресурсам, иначе - SQL рулит. Что не отменяет полного идиотизма РЕАЛИЗАЦИИ этого дела в systemd. Ибо можно было получить все преимущества, не теряя совместимости с класическими текстовыми логами.
     

  • 1.9, Аноним (9), 23:21, 29/10/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Портировали оффтопиковый WQL ?
     
     
  • 2.14, давно тут (?), 03:35, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Портировали оффтопиковый WQL ?

    скорее WMI

     
     
  • 3.15, давно тут (?), 03:37, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    а не, все верно WMI Query Language == WQL
     
  • 3.19, shinanca (?), 08:08, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Откройте глаза. WMI это слизанный формат CIM. В котором это все давно.
     
  • 2.22, _KUL (ok), 09:15, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Саму возможность делать WQL с linux чтобы получить инфу с windows тачки, давно сделали http://www.aldeid.com/wiki/Wmic-linux

    Но это же не полноценные рычаги управления системой, это так, только статистику с нужным колонками получить. Вот если бы сделали полноценную систему управления хостом из консоли/через утилитку запросами
    INSERT INTO etc.passwd (username,password) VALUES ("_KUL", "12345");
    это бы админы оценили!
    p.s. Лучше бы разработчики systemd эту идею развили, меньше врагов имели бы.

     
     
  • 3.26, gred (ok), 18:50, 30/10/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Саму возможность делать WQL с linux чтобы получить инфу с windows тачки,
    > давно сделали http://www.aldeid.com/wiki/Wmic-linux
    > Но это же не полноценные рычаги управления системой, это так, только статистику
    > с нужным колонками получить. Вот если бы сделали полноценную систему управления
    > хостом из консоли/через утилитку запросами
    > INSERT INTO etc.passwd (username,password) VALUES ("_KUL", "12345");
    > это бы админы оценили!
    > p.s. Лучше бы разработчики systemd эту идею развили, меньше врагов имели бы.

    это частично реализует любая scm... (Ansible, Puppet, Chef, cdist)
    там, конечно не sql, но оно там и не надо

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру