Upload
kuchinskaya
View
694
Download
0
Tags:
Embed Size (px)
Citation preview
Возможности scribeи его применение для сбора логов
scribe
FacebookFacebook
TwitterTwitter
Mail.RuMail.Ru
. . .. . .
ОтказоустойчивоОтказоустойчиво
Open SourceOpen Source
МасштабируемоМасштабируемо
БыстроБыстро
Возможности scribeи его применение для сбора логов
Real TimeReal Time
многомного
Что такое
Сколько серверов
Возможности scribeи его применение для сбора логов
Что такое scribe
scribedTCP
данные
HDD
данные
TCP
Возможности scribeи его применение для сбора логов
коллектор
датацентр
серверЧто такое много scribe
scribe
app
scribe
app
scribe
app
scribe
app
scribe
scribe
scribe N x HDD
Возможности scribeи его применение для сбора логов
Scribe?
Зачем?
Возможности scribeи его применение для сбора логов
Сбор логов
Сервер 1
Лог N
Лог 1
Сервер N
Лог N
Лог 1
Коллектор
Возможности scribeи его применение для сбора логов
По физическому
расположениюПо счетчику
Сбор статистики
Сервер 1
Счетчик 2
Счетчик 1
Сервер N
Счетчик 2
Счетчик 1
Агрегатор 1-1
Агрегатор 1-M
Агрегатор 2-1
Агрегатор 2-K
1
2
Возможности scribeи его применение для сбора логов
Обработка очередей заданий
Воркер 1
Воркер 2
Воркер M
Воркер 3
Сервер 1
Очередь N
Очередь 1
Сервер N
Очередь N
Очередь 1
Возможности scribeи его применение для сбора логов
Обработка очередей заданий 2
Сервер 1
Очередь N
Очередь 1
Сервер N
Очередь N
Очередь 1
файл
Менеджер
Воркер 1
Воркер 2
Воркер M
Воркер 3tail -F
Возможности scribeи его применение для сбора логов
Возможности scribeи его применение для сбора логов
Сообщение scribe, категоризация
entry
category
message
string
string
category — используется для логического разделения и роутинга сообщений
message — собственно текст сообщения
message
categorystore 1
store 2
store 3
store N
Возможности scribeи его применение для сбора логов
Thread Thread
Логическая схема scribe
TCP Server
StoreQueue StoreStoreQueue Store
Thread
StoreQueue StoreStoreQueue Store
Возможности scribeи его применение для сбора логов
Типы хранилищ
store file
network
buffermultibucket
std
hdfs
null
Возможности scribeи его применение для сбора логов
/var/scribe/test
10.0.0.1:1465
type = file
type = network
Возможности scribeи его применение для сбора логов
primary
secondary
type = buffer
Возможности scribeи его применение для сбора логов
Буферизация на диск
scribedTCP
данные
HDD
данные
TCP
Буферизация на диск используется только в том случае, если приемник недоступен
Возможности scribeи его применение для сбора логов
Самый простой вариант
Source Collector
filebuffernetwork
file
Возможности scribeи его применение для сбора логов
На границе сетей
Source CollectorProxy
buffernetwork
file
buffernetwork
file
file
Возможности scribeи его применение для сбора логов
store0
storeN
type = multi
store1
Возможности scribeи его применение для сбора логов
Разделение данных
Source Logs Collector
Stat Collector
log-*
stat-*
file
file
network
network
log-*
stat-*
Возможности scribeи его применение для сбора логов
bucket0
bucket(N-1)
type = bucket
bucket1
x % N = 0
x % N = 1
x % N = N - 1
Шардинг
Возможности scribeи его применение для сбора логов
Версии scribe
Балансировка через zookeeperСжатие LZO при записи на
HDFSТэйлинг файлов
Возможности scribeи его применение для сбора логов
ZooKeeper Service
Server Server ServerLeader
Client Client Client Client Client
Возможности 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
Возможности 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
Возможности scribeи его применение для сбора логов
Сжатие LZO
HDFSscribed LZO
Уменьшение объема данныхУскорение дисковых операций
Высокая скорость упаковки и особенно распаковкиВозможность чтения с середины файла
Возможности scribeи его применение для сбора логов
Запись данных из приложения
app
scribe:127.0.0.1:1465
scribe:collector.i
server = 127.0.0.1:1465
Возможности 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
Возможности scribeи его применение для сбора логов
tail -Ftail -F
Возможности scribeи его применение для сбора логов
Logcp
logcpd
scribe
logmonitord
/var/log/*.log
/var/log/httpd/*.log
/var/tarantool/logs/*.log
inotify
statistics
Возможности scribeи его применение для сбора логов
Что нужно учесть
httpd.log httpd.log.0rename
httpd.log
delete
httpd.log
truncate
Возможности scribeи его применение для сбора логов
СборкаСобираем с последним thriftВерсия от twitter для джедаев — баги
Perl-клиент Scribe::Thrift::scribeThrift::BinaryProtocol заменяем на
Thrift::XS::BinaryProtocol
Возможности 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
Возможности scribeи его применение для сбора логов
Что получилось С кластера ~600 серверов ~6,5Тб логов ежесуточно В реальном времени На один сервер:
13 дисков, RAID5, в сумме 27Тб Бондинг 2Гб/с.