SlideShare a Scribd company logo
алексей машанов
Возможности 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

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

  • 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