алексей машанов
TRANSCRIPT
![Page 1: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/1.jpg)
![Page 2: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/2.jpg)
Возможности scribeи его применение для сбора логов
scribe
FacebookFacebook
TwitterTwitter
Mail.RuMail.Ru
. . .. . .
ОтказоустойчивоОтказоустойчиво
Open SourceOpen Source
МасштабируемоМасштабируемо
БыстроБыстро
![Page 3: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/3.jpg)
Возможности scribeи его применение для сбора логов
Real TimeReal Time
многомного
Что такое
Сколько серверов
![Page 4: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/4.jpg)
Возможности scribeи его применение для сбора логов
Что такое scribe
scribedTCP
данные
HDD
данные
TCP
![Page 5: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/5.jpg)
Возможности scribeи его применение для сбора логов
коллектор
датацентр
серверЧто такое много scribe
scribe
app
scribe
app
scribe
app
scribe
app
scribe
scribe
scribe N x HDD
![Page 6: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/6.jpg)
Возможности scribeи его применение для сбора логов
Scribe?
Зачем?
![Page 7: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/7.jpg)
Возможности scribeи его применение для сбора логов
Сбор логов
Сервер 1
Лог N
Лог 1
Сервер N
Лог N
Лог 1
Коллектор
![Page 8: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/8.jpg)
Возможности scribeи его применение для сбора логов
По физическому
расположениюПо счетчику
Сбор статистики
Сервер 1
Счетчик 2
Счетчик 1
Сервер N
Счетчик 2
Счетчик 1
Агрегатор 1-1
Агрегатор 1-M
Агрегатор 2-1
Агрегатор 2-K
1
2
![Page 9: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/9.jpg)
Возможности scribeи его применение для сбора логов
Обработка очередей заданий
Воркер 1
Воркер 2
Воркер M
Воркер 3
Сервер 1
Очередь N
Очередь 1
Сервер N
Очередь N
Очередь 1
![Page 10: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/10.jpg)
Возможности scribeи его применение для сбора логов
Обработка очередей заданий 2
Сервер 1
Очередь N
Очередь 1
Сервер N
Очередь N
Очередь 1
файл
Менеджер
Воркер 1
Воркер 2
Воркер M
Воркер 3tail -F
![Page 11: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/11.jpg)
Возможности scribeи его применение для сбора логов
![Page 12: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/12.jpg)
Возможности scribeи его применение для сбора логов
Сообщение scribe, категоризация
entry
category
message
string
string
category — используется для логического разделения и роутинга сообщений
message — собственно текст сообщения
message
categorystore 1
store 2
store 3
store N
![Page 13: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/13.jpg)
Возможности scribeи его применение для сбора логов
Thread Thread
Логическая схема scribe
TCP Server
StoreQueue StoreStoreQueue Store
Thread
StoreQueue StoreStoreQueue Store
![Page 14: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/14.jpg)
Возможности scribeи его применение для сбора логов
Типы хранилищ
store file
network
buffermultibucket
std
hdfs
null
![Page 15: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/15.jpg)
Возможности scribeи его применение для сбора логов
/var/scribe/test
10.0.0.1:1465
type = file
type = network
![Page 16: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/16.jpg)
Возможности scribeи его применение для сбора логов
primary
secondary
type = buffer
![Page 17: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/17.jpg)
Возможности scribeи его применение для сбора логов
Буферизация на диск
scribedTCP
данные
HDD
данные
TCP
Буферизация на диск используется только в том случае, если приемник недоступен
![Page 18: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/18.jpg)
Возможности scribeи его применение для сбора логов
Самый простой вариант
Source Collector
filebuffernetwork
file
![Page 19: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/19.jpg)
Возможности scribeи его применение для сбора логов
На границе сетей
Source CollectorProxy
buffernetwork
file
buffernetwork
file
file
![Page 20: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/20.jpg)
Возможности scribeи его применение для сбора логов
store0
storeN
type = multi
store1
![Page 21: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/21.jpg)
Возможности scribeи его применение для сбора логов
Разделение данных
Source Logs Collector
Stat Collector
log-*
stat-*
file
file
network
network
log-*
stat-*
![Page 22: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/22.jpg)
Возможности scribeи его применение для сбора логов
bucket0
bucket(N-1)
type = bucket
bucket1
x % N = 0
x % N = 1
x % N = N - 1
Шардинг
![Page 23: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/23.jpg)
Возможности scribeи его применение для сбора логов
Версии scribe
Балансировка через zookeeperСжатие LZO при записи на
HDFSТэйлинг файлов
![Page 24: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/24.jpg)
Возможности scribeи его применение для сбора логов
ZooKeeper Service
Server Server ServerLeader
Client Client Client Client Client
![Page 25: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/25.jpg)
Возможности scribeи его применение для сбора логов
ZooKeeper/
scribe
10.0.0.1:1465
10.0.0.2:1465
10.0.0.4:1465
scribe10.0.0.1:1465
scribe10.0.0.2:1465
scribe10.0.0.3:1465
scribe10.0.0.4:1465
![Page 26: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/26.jpg)
Возможности scribeи его применение для сбора логов
Балансировка с помощью zookeeper
Source
HDFS Writer 1 HDFS Writer 2 HDFS Writer N
remote_host=zk://zk1.i:2181,zk2.i:2181,zk3.i:2181/hdfs-writer
zk_server=zk1.i:2181,zk2.i:2181,zk3.i:2181zk_registration_prefix=/hdfs-writer
![Page 27: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/27.jpg)
Возможности scribeи его применение для сбора логов
Сжатие LZO
HDFSscribed LZO
Уменьшение объема данныхУскорение дисковых операций
Высокая скорость упаковки и особенно распаковкиВозможность чтения с середины файла
![Page 28: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/28.jpg)
Возможности scribeи его применение для сбора логов
Запись данных из приложения
app
scribe:127.0.0.1:1465
scribe:collector.i
server = 127.0.0.1:1465
![Page 29: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/29.jpg)
Возможности scribeи его применение для сбора логов
Fallback при записи в scribe
app
scribe:127.0.0.1:1465
scribe:collector.i
primary: 127.0.0.1:1465secondary: zk://zk1.i:2181,zk2.i:2181,zk3.i:2181/fallback
scribe:x.x.x.x:1465
zk_server=zk1.i:2181,zk2.i:2181,zk3.i:2181zk_registration_prefix=/fallback
![Page 30: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/30.jpg)
Возможности scribeи его применение для сбора логов
tail -Ftail -F
![Page 31: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/31.jpg)
Возможности scribeи его применение для сбора логов
Logcp
logcpd
scribe
logmonitord
/var/log/*.log
/var/log/httpd/*.log
/var/tarantool/logs/*.log
inotify
statistics
![Page 32: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/32.jpg)
Возможности scribeи его применение для сбора логов
Что нужно учесть
httpd.log httpd.log.0rename
httpd.log
delete
httpd.log
truncate
![Page 33: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/33.jpg)
Возможности scribeи его применение для сбора логов
СборкаСобираем с последним thriftВерсия от twitter для джедаев — баги
Perl-клиент Scribe::Thrift::scribeThrift::BinaryProtocol заменяем на
Thrift::XS::BinaryProtocol
![Page 34: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/34.jpg)
Возможности scribeи его применение для сбора логов
Тюнинг параметров На источнике:
adaptive_backoff=yes check_interval=1 buffer_send_rate=10 max_size=1000000 max_write_interval=1 use_conn_pool=yes
На коллекторе:
ulimit -n 65535
ulimit -u 4096
num_thrift_server_threads=8
max_queue_size=300000000
max_write_interval=5
Все параметры прекрасно документированы на языке C++и в комментариях к коммитам в git
![Page 35: алексей машанов](https://reader037.vdocument.in/reader037/viewer/2022102902/557f1b1ed8b42aea318b4c20/html5/thumbnails/35.jpg)
Возможности scribeи его применение для сбора логов
Что получилось С кластера ~600 серверов ~6,5Тб логов ежесуточно В реальном времени На один сервер:
13 дисков, RAID5, в сумме 27Тб Бондинг 2Гб/с.