SlideShare a Scribd company logo
1 of 36
Возможности scribe
и его применение для сбора логов



      Facebook                          Отказоустойчиво
                                        Отказоустойчиво


     Twitter                               Масштабируемо
                                           Масштабируемо
                               scribe
    Mail.Ru                                    Быстро
                                               Быстро



               ...                      Open Source
                                        Open Source
Возможности scribe
и его применение для сбора логов




 Что такое                   Real Time


           Сколько серверов              много
Возможности scribe
и его применение для сбора логов


                          Что такое scribe
                                                   данные
         данные
                                   scribed
                     TCP                     TCP



                                    HDD
Возможности scribe
и его применение для сбора логов


                     Что такое много scribe
    appсервер
            scribe

    app                       scribe
                                                коллектор
            scribe

                датацентр              scribe          N x HDD
    app
            scribe

    app                       scribe
            scribe
Возможности scribe
и его применение для сбора логов



Scribe?




                                   Зачем?
Возможности scribe
и его применение для сбора логов


                              Сбор логов
         Сервер 1
            Лог 1
            Лог N
                                           Коллектор
         Сервер N
            Лог 1
            Лог N
Возможности scribe
и его применение для сбора логов


                         Сбор статистики
    Сервер 1
   Счетчик 1                                1
                            Агрегатор 1-1       Агрегатор 2-1
   Счетчик 2
                                По
                            физическому         По счетчику
   Сервер N                расположению
   Счетчик 1
                           Агрегатор 1-M        Агрегатор 2-K
   Счетчик 2                                2
Возможности scribe
и его применение для сбора логов


              Обработка очередей заданий
         Сервер 1
                                     Воркер 1
         Очередь 1
        Очередь N                    Воркер 2

                                     Воркер 3
         Сервер N
         Очередь 1
                                     Воркер M
        Очередь N
Возможности scribe
и его применение для сбора логов


            Обработка очередей заданий 2
         Сервер 1
                                                 Воркер 1
         Очередь 1
        Очередь N                   файл         Воркер 2

                                       tail -F   Воркер 3
         Сервер N
         Очередь 1                 Менеджер
                                                 Воркер M
        Очередь N
Возможности scribe
и его применение для сбора логов
Возможности scribe
и его применение для сбора логов


           Сообщение scribe, категоризация
                 entry




                                             category
               category string
              message string                            store 1
                                                        store 2
  
      category — используется      message              store 3
      для логического разделения
      и роутинга сообщений
  
      message — собственно                              store N
      текст сообщения
Возможности scribe
и его применение для сбора логов


                   Логическая схема scribe
                       Thread                   Thread
                                   StoreQueue            Store

      TCP Server
                                                Thread
                                   StoreQueue            Store
Возможности scribe
и его применение для сбора логов


                          Типы хранилищ
        store                        file       std

                                   network      hdfs




       bucket              multi       buffer   null
Возможности scribe
и его применение для сбора логов




   type = file
                                   /var/scribe/test



   type = network
                                   10.0.0.1:1465
Возможности scribe
и его применение для сбора логов




   type = buffer

                                    primary




                                   secondary
Возможности scribe
и его применение для сбора логов


                     Буферизация на диск
          данные                                данные
                                   scribed
                     TCP                     TCP


                                    HDD


Буферизация на диск используется только в том случае,
             если приемник недоступен
Возможности scribe
и его применение для сбора логов


                   Самый простой вариант

             Source                    Collector

             buffer                        file
              network

                   file
Возможности scribe
и его применение для сбора логов


                         На границе сетей

       Source                      Proxy     Collector

       buffer                      buffer       file
       network                     network

            file                     file
Возможности scribe
и его применение для сбора логов




   type = multi
                                   store0


                                   store1


                                   storeN
Возможности scribe
и его применение для сбора логов


                      Разделение данных

          Source                            Logs Collector
                                   log-*
    log-*                                         file
         network

    stat-*                                  Stat Collector
                                   stat-*
         network                                  file
Возможности scribe
и его применение для сбора логов


                                   Шардинг
   type = bucket


                                             N =0      bucket0
                                        x%
                                        x%N=1
                                                       bucket1
                                   x%
                                        N=
                                             N-
                                                  1   bucket(N-1)
Возможности scribe
и его применение для сбора логов


                            Версии scribe
                                                     facebook

                                                       twitter

                              Балансировка через zookeeper
                              Сжатие LZO при записи на
                               HDFS
                              Тэйлинг файлов
Возможности scribe
и его применение для сбора логов




                            ZooKeeper Service
                                      Leader
        Server                   Server                  Server




  Client           Client          Client       Client       Client
Возможности scribe
и его применение для сбора логов



     scribe                            ZooKeeper
 10.0.0.1:1465                     /

     scribe                            scribe
 10.0.0.2:1465                                  10.0.0.1:1465
     scribe
 10.0.0.3:1465                                  10.0.0.2:1465
     scribe                                     10.0.0.4:1465
 10.0.0.4:1465
Возможности scribe
и его применение для сбора логов


        Балансировка с помощью zookeeper
remote_host=zk://zk1.i:2181,zk2.i:2181,zk3.i:2181/hdfs-writer

                                   Source



  HDFS Writer 1           HDFS Writer 2       HDFS Writer N

 zk_server=zk1.i:2181,zk2.i:2181,zk3.i:2181
 zk_registration_prefix=/hdfs-writer
Возможности scribe
и его применение для сбора логов


                             Сжатие LZO
   Высокая скорость упаковки и особенно распаковки
   Возможность чтения с середины файла


                scribed            LZO    HDFS

   Уменьшение объема данных
   Ускорение дисковых операций
Возможности scribe
и его применение для сбора логов


             Запись данных из приложения

            app               server = 127.0.0.1:1465



         scribe:                                  scribe:
     127.0.0.1:1465                              collector.i
Возможности scribe
и его применение для сбора логов


                Fallback при записи в scribe
                         primary: 127.0.0.1:1465
          app            secondary: zk://zk1.i:2181,zk2.i:2181,zk3.i:2181/fallback




       scribe:                                           scribe:
   127.0.0.1:1465                                       collector.i
                              scribe:
                           x.x.x.x:1465
zk_server=zk1.i:2181,zk2.i:2181,zk3.i:2181
zk_registration_prefix=/fallback
Возможности scribe
и его применение для сбора логов


tail -F
Возможности scribe
и его применение для сбора логов


                                   Logcp
                                   inotify
       /var/log/*.log                        logcpd




                                             statistics
   /var/log/httpd/*.log                                     scribe


/var/tarantool/logs/*.log                                 logmonitord
Возможности scribe
и его применение для сбора логов


                         Что нужно учесть
                                   rename
     httpd.log                                        httpd.log.0
                                            de
                                              let
                                                  e
     httpd.log
                               truncate

                              httpd.log
Возможности scribe
и его применение для сбора логов



                       Сборка
                        Собираем с последним thrift
                        Версия от twitter для джедаев — баги

                       Perl-клиент Scribe::Thrift::scribe
                        Thrift::BinaryProtocol заменяем на
                         Thrift::XS::BinaryProtocol
Возможности scribe
и его применение для сбора логов


                       Тюнинг параметров
 
     На источнике:                  На коллекторе:
     −   adaptive_backoff=yes          ulimit -n 65535
     −   check_interval=1              ulimit -u 4096
     −   buffer_send_rate=10           num_thrift_server_threads=8
     −   max_size=1000000              max_queue_size=300000000
     −   max_write_interval=1          max_write_interval=5
     −   use_conn_pool=yes
          Все параметры прекрасно документированы на языке C++
                     и в комментариях к коммитам в git
Возможности scribe
и его применение для сбора логов


                          Что получилось
 
     С кластера ~600 серверов
 
     ~6,5Тб логов ежесуточно
 
     В реальном времени
 
     На один сервер:
     −   13 дисков, RAID5, в сумме 27Тб
     −   Бондинг 2Гб/с.
Спасибо!
      Алексей Машанов
Программист, Мой Мир@mail.ru
   a.mashanov@corp.mail.ru

More Related Content

More from kuchinskaya (20)

Kharkov
KharkovKharkov
Kharkov
 
Balashov
BalashovBalashov
Balashov
 
Zamyakin
ZamyakinZamyakin
Zamyakin
 
Panfilov
PanfilovPanfilov
Panfilov
 
Platov
PlatovPlatov
Platov
 
Rabovoluk
RabovolukRabovoluk
Rabovoluk
 
Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)
 
Smirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforumSmirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforum
 
Zacepin
ZacepinZacepin
Zacepin
 
Zagursky
ZagurskyZagursky
Zagursky
 
Haritonov
HaritonovHaritonov
Haritonov
 
Chudov
ChudovChudov
Chudov
 
Bubnov
BubnovBubnov
Bubnov
 
A.pleshkov
A.pleshkovA.pleshkov
A.pleshkov
 
Zenovich
ZenovichZenovich
Zenovich
 
Romanenko
RomanenkoRomanenko
Romanenko
 
Perepelitsa
PerepelitsaPerepelitsa
Perepelitsa
 
Osipov
OsipovOsipov
Osipov
 
Kubasov
KubasovKubasov
Kubasov
 
Kalugin balashov
Kalugin balashovKalugin balashov
Kalugin balashov
 

алексей машанов

  • 1.
  • 2. Возможности scribe и его применение для сбора логов Facebook Отказоустойчиво Отказоустойчиво Twitter Масштабируемо Масштабируемо scribe Mail.Ru Быстро Быстро ... Open Source Open Source
  • 3. Возможности scribe и его применение для сбора логов Что такое Real Time Сколько серверов много
  • 4. Возможности scribe и его применение для сбора логов Что такое scribe данные данные scribed TCP TCP HDD
  • 5. Возможности scribe и его применение для сбора логов Что такое много scribe appсервер scribe app scribe коллектор scribe датацентр scribe N x HDD app scribe app scribe scribe
  • 6. Возможности scribe и его применение для сбора логов Scribe? Зачем?
  • 7. Возможности scribe и его применение для сбора логов Сбор логов Сервер 1 Лог 1 Лог N Коллектор Сервер N Лог 1 Лог N
  • 8. Возможности scribe и его применение для сбора логов Сбор статистики Сервер 1 Счетчик 1 1 Агрегатор 1-1 Агрегатор 2-1 Счетчик 2 По физическому По счетчику Сервер N расположению Счетчик 1 Агрегатор 1-M Агрегатор 2-K Счетчик 2 2
  • 9. Возможности scribe и его применение для сбора логов Обработка очередей заданий Сервер 1 Воркер 1 Очередь 1 Очередь N Воркер 2 Воркер 3 Сервер N Очередь 1 Воркер M Очередь N
  • 10. Возможности scribe и его применение для сбора логов Обработка очередей заданий 2 Сервер 1 Воркер 1 Очередь 1 Очередь N файл Воркер 2 tail -F Воркер 3 Сервер N Очередь 1 Менеджер Воркер M Очередь N
  • 11. Возможности scribe и его применение для сбора логов
  • 12. Возможности scribe и его применение для сбора логов Сообщение scribe, категоризация entry category category string message string store 1 store 2  category — используется message store 3 для логического разделения и роутинга сообщений  message — собственно store N текст сообщения
  • 13. Возможности scribe и его применение для сбора логов Логическая схема scribe Thread Thread StoreQueue Store TCP Server Thread StoreQueue Store
  • 14. Возможности scribe и его применение для сбора логов Типы хранилищ store file std network hdfs bucket multi buffer null
  • 15. Возможности scribe и его применение для сбора логов type = file /var/scribe/test type = network 10.0.0.1:1465
  • 16. Возможности scribe и его применение для сбора логов type = buffer primary secondary
  • 17. Возможности scribe и его применение для сбора логов Буферизация на диск данные данные scribed TCP TCP HDD Буферизация на диск используется только в том случае, если приемник недоступен
  • 18. Возможности scribe и его применение для сбора логов Самый простой вариант Source Collector buffer file network file
  • 19. Возможности scribe и его применение для сбора логов На границе сетей Source Proxy Collector buffer buffer file network network file file
  • 20. Возможности scribe и его применение для сбора логов type = multi store0 store1 storeN
  • 21. Возможности scribe и его применение для сбора логов Разделение данных Source Logs Collector log-* log-* file network stat-* Stat Collector stat-* network file
  • 22. Возможности scribe и его применение для сбора логов Шардинг type = bucket N =0 bucket0 x% x%N=1 bucket1 x% N= N- 1 bucket(N-1)
  • 23. Возможности scribe и его применение для сбора логов Версии scribe facebook twitter Балансировка через zookeeper Сжатие LZO при записи на HDFS Тэйлинг файлов
  • 24. Возможности scribe и его применение для сбора логов ZooKeeper Service Leader Server Server Server Client Client Client Client Client
  • 25. Возможности scribe и его применение для сбора логов scribe ZooKeeper 10.0.0.1:1465 / scribe scribe 10.0.0.2:1465 10.0.0.1:1465 scribe 10.0.0.3:1465 10.0.0.2:1465 scribe 10.0.0.4:1465 10.0.0.4:1465
  • 26. Возможности scribe и его применение для сбора логов Балансировка с помощью zookeeper remote_host=zk://zk1.i:2181,zk2.i:2181,zk3.i:2181/hdfs-writer Source HDFS Writer 1 HDFS Writer 2 HDFS Writer N zk_server=zk1.i:2181,zk2.i:2181,zk3.i:2181 zk_registration_prefix=/hdfs-writer
  • 27. Возможности scribe и его применение для сбора логов Сжатие LZO Высокая скорость упаковки и особенно распаковки Возможность чтения с середины файла scribed LZO HDFS Уменьшение объема данных Ускорение дисковых операций
  • 28. Возможности scribe и его применение для сбора логов Запись данных из приложения app server = 127.0.0.1:1465 scribe: scribe: 127.0.0.1:1465 collector.i
  • 29. Возможности scribe и его применение для сбора логов Fallback при записи в scribe primary: 127.0.0.1:1465 app secondary: zk://zk1.i:2181,zk2.i:2181,zk3.i:2181/fallback scribe: scribe: 127.0.0.1:1465 collector.i scribe: x.x.x.x:1465 zk_server=zk1.i:2181,zk2.i:2181,zk3.i:2181 zk_registration_prefix=/fallback
  • 30. Возможности scribe и его применение для сбора логов tail -F
  • 31. Возможности scribe и его применение для сбора логов Logcp inotify /var/log/*.log logcpd statistics /var/log/httpd/*.log scribe /var/tarantool/logs/*.log logmonitord
  • 32. Возможности scribe и его применение для сбора логов Что нужно учесть rename httpd.log httpd.log.0 de let e httpd.log truncate httpd.log
  • 33. Возможности scribe и его применение для сбора логов Сборка Собираем с последним thrift Версия от twitter для джедаев — баги Perl-клиент Scribe::Thrift::scribe Thrift::BinaryProtocol заменяем на Thrift::XS::BinaryProtocol
  • 34. Возможности scribe и его применение для сбора логов Тюнинг параметров  На источнике: На коллекторе: − adaptive_backoff=yes ulimit -n 65535 − check_interval=1 ulimit -u 4096 − buffer_send_rate=10 num_thrift_server_threads=8 − max_size=1000000 max_queue_size=300000000 − max_write_interval=1 max_write_interval=5 − use_conn_pool=yes Все параметры прекрасно документированы на языке C++ и в комментариях к коммитам в git
  • 35. Возможности scribe и его применение для сбора логов Что получилось  С кластера ~600 серверов  ~6,5Тб логов ежесуточно  В реальном времени  На один сервер: − 13 дисков, RAID5, в сумме 27Тб − Бондинг 2Гб/с.
  • 36. Спасибо! Алексей Машанов Программист, Мой Мир@mail.ru a.mashanov@corp.mail.ru