Реализация , обеспечение и сервисов, балансеров и внутренней инфраструктуры
как много текста
мониторинга
отказоустойчивости
наблюдаемости
0
даня
олег
лера
сережа
привет
мониторинга
отказоустойчивости
наблюдаемости
1
мониторинг
отказоустойчивости
наблюдаемости
выявление аномалии
1
алерты
сбор телеметрии
мониторинг
отказоустойчивости
наблюдаемость
1
алерты
метрики
логи
выявление аномалии
графики
сбор телеметрии
мониторинг
отказоустойчивость
наблюдаемость
1
алерты
метрики
логи
выявление аномалии
графики
высокая доступность
минимизация убытков
быстрое восстановление
сбор телеметрии
Цель
Спроектировать и реализовать инфраструктуру мониторинга
И
Задачи
- Сбор требований у команды разработки
- Выбор технологий
- Проектирование архитектуры и пайплайнов
- Заведение инструментов для мониторинга
- Настройка инструментов и написание конфигов
- Написание инструкций для подключения к инфраструктуре мониторинга
- Выбор метрик и настройка алертов
2
3
Функциональные требования
- Минимизация возможности возникновения простоев продуктовых сервисов и сервисов по сбору телеметрии
- Минимизация времени простоя
- Анализ телеметрии
- Автоматизированное определение аномалий и ошибок
- Оповещение об аномалиях и ошибках
- Просмотр логов по конкретному пользовательскому запросу
- Единый формат логов для всех приложений
- Охват как можно большего числа элементов системы
Нефункциональные требования
- Инструменты по сбору, хранению и обработки логов и метрик должны выдерживать высокую нагрузку
- Просты в использовании и подробно описаны
- Удовлетворять требованиям СИБ
- Удобное внедрение новых сервисов
4
Стек
Сбор
- Filebeat
- Unified Agent
- pushclient
- MDB
- Datadog
Зоопарк
Обработка
- Logstash
- Logbroker
- YT
Хранение
- ElasticSearch
- Clickhouse
- Solomon
- MDB
- YASM
Визуализация
- Kibana
- Datalens
- Monitoring
- YASM
Поиск
- Kibana
- YQL
- Yandex Deploy
Алерты
- Juggler
- Monitorado
Архитектура
ELB

ILB
APPS

5
Логи
ELB

ILB
APPS

6

и их формат
[accesslog <::status:200::> <::module:proxy::> <::reason:success::>
[report u:service_total
[cookie_policy u:service_total
[meta awacs-logs <::env_type:unknown::> <::namespace:bookmate.yandex.net::>
[regexp default [h100 [cutter
[icookie <::iproc:CAMQAYABAYgBAcoBNTNBNPIBEzQ5MTI5OTMzMjE2Nzk1MTI0ODQ=::> <::yashr:::>
[antirobot [sub_antirobot [report u:antirobot [balancer [balancer
[proxy prod-antirobot-yp-sas-15.sas.yp-c.yandex.net:13512 1618/554 0/sc=200 succ 200]]]] not_robot]
[sub_search [log_headers <::X-Request-Id:::>
<::X-Yandex-Ja4:::>
<::User-Agent:::>
<::X-Yandex-Ja3:::>
[regexp default [regexp_host api.bookmate.ru [meta awacs-logs <::domain:api.bookmate.ru::>
[regexp bookmate-nginx-api-stable [meta awacs-logs <::upstream:bookmate-nginx-api-stable::>
[report u:bookmate-nginx-api-stable [balancer
[report u:requests_bookmate-nginx-api-stable_to_sas [balancer
[proxy bivu3ks2xdormd23.sas.yp-c.yandex.net:80 0.031247s/0.031522s/connect=0.000000s 571/216 0/sc=200 succ 200]]]]]]]]]]]]]
<::iresp:CANAAQ==::>]]]]]]]]
Raw data
Таблица в Clickhouse
ELB

ILB
APPS

7

и их формат
Логи
[accesslog <::status:200::> <::module:proxy::> <::reason:success::>
[report u:service_total
[cookie_policy u:service_total
[meta awacs-logs <::env_type:unknown::> <::namespace:bookmate.yandex.net::>
[regexp default [h100 [cutter
[icookie <::iproc:CAMQAYABAYgBAcoBNTNBNPIBEzQ5MTI5OTMzMjE2Nzk1MTI0ODQ=::> <::yashr:::>
[antirobot [sub_antirobot [report u:antirobot [balancer [balancer
[proxy prod-antirobot-yp-sas-15.sas.yp-c.yandex.net:13512 1618/554 0/sc=200 succ 200]]]] not_robot]
[sub_search [log_headers <::X-Request-Id:::>
<::X-Yandex-Ja4:::>
<::User-Agent:::>
<::X-Yandex-Ja3:::>
[regexp default [regexp_host api.bookmate.ru [meta awacs-logs <::domain:api.bookmate.ru::>
[regexp bookmate-nginx-api-stable [meta awacs-logs <::upstream:bookmate-nginx-api-stable::>
[report u:bookmate-nginx-api-stable [balancer
[report u:requests_bookmate-nginx-api-stable_to_sas [balancer
[proxy bivu3ks2xdormd23.sas.yp-c.yandex.net:80 0.031247s/0.031522s/connect=0.000000s 571/216 0/sc=200 succ 200]]]]]]]]]]]]]
<::iresp:CANAAQ==::>]]]]]]]]
Raw data
Таблица в Clickhouse
Метрики
ELB

ILB
APPS

8
YASM
mem_usage, cpu_usage, net_usage
http_4xx, http_5xx, timings
ELB

ILB
APPS

9
ELB

ILB
APPS

10

Логи
и их формат
{
"@timestamp": "2015-08-21T12:27:16.81",
"message": "your lovely message",
"@fields": {
// your context, may be nested
},
"stackTrace": "Some error",
"loggerName": "name-of-the-logger",
"threadName": "main",
// check ch.qos.logback.classic.Level for
//level string representation
"levelStr": "INFO",
"level": 20000
}
Формат строчки лога приложения
Ее представление в ES
ELB

ILB
APPS

11

Логи
и их формат
{
"@timestamp": "2015-08-21T12:27:16.81",
"message": "your lovely message",
"@fields": {
// your context, may be nested
},
"stackTrace": "Some error",
"loggerName": "name-of-the-logger",
"threadName": "main",
// check ch.qos.logback.classic.Level for
//level string representation
"levelStr": "INFO",
"level": 20000
}
Формат строчки лога приложения
Ее представление в ES
ELB

ILB
APPS

12

Метрики
ELB

ILB
APPS

13
ELB

ILB
APPS

14


15

Визуализация
Kibana

YASM

Monitoring
Алерты
Monitorado
juggler_checks_defaults:
namespace: bookmate
tags: [sre, bookmate]
flaps:
stable: 180
critical: 0
boost: 0
settings_defaults:
abc: media_books
deploy:
objects:
deploy_unit:bookmate-nginx-stable.assets: default
alertsets:
default:
alerts:
cpu_usage:
signal: '%cpu_perc(99)'
warn: 70
crit: 80Juggler

config
config
YASM
Solomon
16
17
Уже сделано (~95%):
- Спроектирована архитектуры
- Заведены и настроены инструменты для сбора и хранения телеметрии
- Выбраны пул отслеживаемых метрик
Осталось:
- Ревью алертов
- Раскатывание мониторингов на оставшиеся сервисы
И написать диплом...
diploma 1.0
By superpupervlad
diploma 1.0
- 99