ProHoster > Blog > Идораи > Нигоҳдории метрика: чӣ гуна мо аз Graphite+Whisper ба Graphite+ClickHouse гузаштем
Нигоҳдории метрика: чӣ гуна мо аз Graphite+Whisper ба Graphite+ClickHouse гузаштем
Салом ба ҳама! Дар худ мақолаи охирин Ман дар бораи ташкили системаи мониторинги модулии меъмории микросервис навишта будам. Ҳеҷ чиз боқӣ намемонад, лоиҳаи мо мунтазам афзоиш меёбад ва шумораи ченакҳои захирашуда низ меафзояд. Чӣ гуна мо гузаришро аз Graphite+Whisper ба Graphite+ClickHouse дар шароити сарбории баланд ташкил кардем, дар бораи интизориҳо аз он ва натиҷаҳои муҳоҷират дар зери буриш хонед.
Пеш аз он ки ба шумо бигӯям, ки мо гузаришро аз нигоҳдории метрика дар Graphite+Whisper ба Graphite+ClickHouse ташкил кардем, ман мехоҳам дар бораи сабабҳои қабули чунин қарор ва дар бораи камбудиҳои Whisper, ки мо муддати тӯлонӣ бо он зиндагӣ мекардем, маълумот диҳам.
Мушкилоти Графит + Пичиррос
1. Сарбории баланд ба зерсистемаи диск
Дар замони гузариш ба мо дар як дақиқа тақрибан 1.5 миллион метрӣ ворид мешуд. Бо чунин ҷараён, истифодаи диск дар серверҳо ~ 30% буд. Дар маҷмӯъ, ин комилан қобили қабул буд - ҳама чиз мӯътадил кор мекард, зуд навишта шуд, зуд хонда шуд... То он даме, ки яке аз гурӯҳҳои таҳиякунанда хусусияти навро паҳн кард ва ба мо дар як дақиқа 10 миллион метрика фиристодан оғоз кард. Он вақт зерсистемаи диск пурзӯр шуд ва мо 100% истифодаро дидем. Мушкилот зуд ҳал шуд, аммо боқимонда боқӣ монд.
2. Набудани такрор ва пайвастагӣ
Эҳтимол, мисли ҳар касе, ки Graphite+Whisper-ро истифода мебарад/истифода мекунад, мо як ҷараёни ченакҳоро якбора ба якчанд серверҳои Graphite рехтем, то таҳаммулпазирии хатогиҳоро эҷод кунем. Ва дар ин бора ягон мушкилоти махсус вуҷуд надошт - то лаҳзае, ки яке аз серверҳо бо ягон сабаб суқут кард. Баъзан мо тавонистем сервери афтодаро ба қадри кофӣ зуд бигирем ва карбон-с-релей тавонист метрикаро аз кэши он ба он бор кунад, аммо баъзан не. Ва он гоҳ дар метрика сӯрохе пайдо шуд, ки мо онро бо rsync пур кардем. Тартиб хеле дароз буд. Файзи ягонаи наҷотбахш ин буд, ки ин хеле кам рух медод. Мо инчунин давра ба давра маҷмӯи тасодуфии ченакҳоро гирифтем ва онҳоро бо дигар намудҳои якхела дар гиреҳҳои ҳамсояи кластер муқоиса кардем. Тақрибан дар 5% ҳолатҳо, якчанд арзишҳо гуногун буданд, ки мо аз он чандон хурсанд набудем.
3. Пойгоҳи калон
Азбаски мо дар Graphite на танҳо инфрасохтор, балки ченакҳои тиҷорӣ низ менависем (ва ҳоло инчунин ченакҳо аз Kubernetes), мо аксар вақт вазъиятеро ба даст меорем, ки дар он метрика танҳо чанд арзишро дар бар мегирад ва файли .wsp бо назардошти ҳама нигоҳдорӣ сохта мешавад. давра, ва миқдори пешакӣ ҷудошударо ишғол мекунад, ки барои мо ~ 2 МБ буд. Мушкилот аз он сабаб боз ҳам бадтар мешавад, ки бо мурури замон шумораи зиёди файлҳои шабеҳ пайдо мешаванд ва ҳангоми таҳияи гузоришҳо аз рӯи онҳо, хондани нуқтаҳои холӣ вақт ва захираҳои зиёдро талаб мекунад.
Ман мехоҳам фавран қайд намоям, ки мушкилоти дар боло тавсифшуда метавонанд бо истифода аз усулҳои гуногун ва дараҷаҳои гуногуни самаранокӣ ҳал карда шаванд, аммо ҳар қадаре, ки шумо маълумоти бештар гиред, ҳамон қадар онҳо бадтар мешаванд.
CREATE MATERIALIZED VIEW graphite.data_stat ( Date Date, Prefix String, Timestamp UInt32, Count AggregateFunction(count)) ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/replicator/graphite.data_stat', 'r1', Date, (Timestamp, Prefix), 8192) AS SELECT toStartOfMonth(now()) AS Date, replaceRegexpOne(Path, '^([^.]+.[^.]+.[^.]+).*$', '1') AS Prefix, toUInt32(toStartOfMinute(toDateTime(Timestamp))) AS Timestamp, countState() AS Count FROM graphite.data GROUP BY Timestamp, Prefix
Дар мо бошад, баъзе норасоихо чой доштанд. Ин аст он чизе ки мо пас аз гузариш дучор шудем.
ClickHouse на ҳамеша конфигуратсияҳоро зуд аз нав мехонад; баъзан он бояд аз нав оғоз карда шавад. Масалан, дар сурати тавсифи кластери зоопарк дар конфигуратсияи ClickHouse, он то он даме, ки клик-сервер бозоғоз карда нашавад, истифода нашуд.
Контейнерҳои ба таври динамикӣ сохташуда дар кубернетҳо миқдори зиёди ченакҳоро бо мӯҳлати кӯтоҳ ва тасодуфӣ мефиристанд. Барои чунин ченакҳо нуқтаҳо зиёд нестанд ва дар фазо мушкилот вуҷуд надорад. Аммо ҳангоми сохтани пурсишҳо, ClickHouse миқдори зиёди ҳамин нишондиҳандаҳоро аз ҷадвали "метрикаҳо" мегирад. Дар 90% ҳолатҳо, дар бораи онҳо берун аз тиреза (24 соат) маълумот мавҷуд нест. Аммо барои ҷустуҷӯи ин маълумот дар ҷадвали 'маълумот' вақт сарф мешавад ва дар ниҳоят ба вақти тамомшавӣ мегузарад. Барои ҳалли ин мушкилот, мо ба нигоҳ доштани назари алоҳида бо маълумот дар бораи ченакҳое, ки дар давоми рӯз дучор омада буданд, оғоз кардем. Ҳамин тариқ, ҳангоми сохтани ҳисоботҳо (графикҳо) барои контейнерҳои динамикӣ сохташуда, мо танҳо он ченакҳоеро, ки дар як равзанаи додашуда дучор омадаанд, дархост мекунем, на дар тӯли тамоми вақт, ки сохтани гузоришҳоро дар онҳо ба таври назаррас суръат мебахшад. Барои ҳалли дар боло тавсифшуда, ман ҷамъоварӣ кардам graphite-clickhouse (форк), ки иҷрои кор бо ҷадвали date_metrics -ро дар бар мегирад.
Graphite+ClickHouse. Тегҳо
Бо версияи 1.1.0 Graphite расмӣ шуд барчаспҳои дастгирӣ. Ва мо фаъолона дар бораи он фикр мекунем, ки чӣ гуна ва чӣ гуна бояд ин ташаббусро дар стек графит + кликхаус дастгирӣ кунем.
Graphite+ClickHouse. Детектори аномалия
Дар асоси инфрасохтори дар боло тавсифшуда, мо як прототипи детектори аномалияро амалӣ кардем ва он кор мекунад! Аммо бештар дар бораи ӯ дар мақолаи навбатӣ.
Обуна шавед, тирчаи болоро пахш кунед ва хушбахт бошед!