ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk

ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk

Lumela, habr.

Haeba motho a sebelisa tsamaiso hampe graphite-web mme o kopane le bothata ba tshebetso ya polokelo hoeshetsa (IO, sebaka sa disk se sebelisitsoeng), ebe monyetla oa hore ClickHouse e fetisetsoe e le sebaka se nkeloang sebaka o lokela ho ba o le mong. Polelo ena e fana ka maikutlo a hore ts'ebetsong ea motho oa boraro e se e sebelisoa e le daemon e amohelang metrics, mohlala. carbonwriter kapa go-carbon.

ClickHouse e rarolla mathata a hlalositsoeng hantle. Ka mohlala, ka mor'a ho fetisetsa 2TiB ea data ho tloha ho hoeshetsa, li kena ho 300GiB. Ha ke na ho bua ka papiso ka botlalo; ho na le lingoliloeng tse ngata tse mabapi le sehlooho sena. Ho phaella moo, ho fihlela morao tjena, hase ntho e 'ngoe le e' ngoe e neng e nepahetse ka polokelo ea rona ea ClickHouse.

Mathata a sebaka se jetsoeng

Ha u sheba ka lekhetlo la pele, ntho e 'ngoe le e' ngoe e lokela ho sebetsa hantle. Ho latela litokomane, theha tlhophiso bakeng sa sekema sa polokelo ea metrics (ho feta retention), ebe u theha tafole ho latela khothaletso ea "backend e khethiloeng bakeng sa graphite-web: carbon-clickhouse+graphite-clickhouse kapa graphhouse, ho itšetlehile ka hore na ho sebelisoa stack efe. Mme ... bomo ya nako e ya lla.

E le hore u utloisise hore na ke efe, u lokela ho tseba hore na ho kenya mosebetsi joang le tsela e tsoelang pele ea bophelo ea data litafoleng tsa enjine ea lelapa la *MergeTree ClickHouse (lichate tse nkiloeng ho lipuo Alexey Zatelepin):

  • Kenyelitsoe блок data. Tabeng ea rona, e ne e le metrics e fihlileng.
    ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk
  • Sebaka se seng le se seng se joalo se hlophisoa ho latela senotlolo pele se ngolloa ho disk. ORDER BYe boletsoeng ha ho etsoa tafole.
  • Ka mor'a ho hlophisoa, кусок (part) data e ngotsoe ho disk.
    ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk
  • Seva e hlokomela ka morao e le hore ho se be le likotoana tse ngata tse joalo, 'me e qala ka morao слияния (merge, ka mor'a moo kopanya).
    ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk
    ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk
  • Seva e emisa ho kopanya e le mong hang ha data e emisa ho phalla ka mafolofolo ho партицию (partition), empa o ka qala ts'ebetso ka letsoho ka taelo OPTIMIZE.
  • Haeba ho na le karolo e le 'ngoe feela e setseng karohanong, joale u ke ke ua khona ho kopanya ho sebelisa taelo e tloaelehileng; u tlameha ho e sebelisa. OPTIMIZE ... FINAL

Kahoo, metrics ea pele e fihla. Mme ba nka sebaka se itseng. Liketsahalo tse latelang li ka fapana ho latela lintlha tse ngata:

  • Senotlolo sa ho arola se ka ba se senyenyane haholo (letsatsi) kapa se seholo haholo (likhoeli tse 'maloa).
  • Tokiso ea ho boloka e kanna ea lekana likarolo tse 'maloa tsa bohlokoa tsa ho kopanya lintlha ka har'a karolo e sebetsang (moo ho rekotiloeng lipalo), kapa mohlomong che.
  • Haeba ho na le lintlha tse ngata, likotoana tsa pele, tseo ka lebaka la ho kopana ha morao li ka 'na tsa se li le khōlō (haeba u khetha senotlolo sa ho arola hantle), li ke ke tsa ikopanya le likotoana tse nyenyane tse ncha.

Mme e fela ka ho tshwana. Sebaka se hapiloeng ke metrics ho ClickHouse se eketseha ha feela:

  • se ke oa sebetsa OPTIMIZE ... FINAL ka letsoho kapa
  • se ke oa kenya data ho li-partitions tsohle ka mokhoa o tsoelang pele, e le hore kapele kapa hamorao ho kopanya bokamorao ho tla qala

Mokhoa oa bobeli o bonahala o le bonolo ka ho fetisisa ho o kenya ts'ebetsong, ka hona, ha oa nepahala 'me o ile oa lekoa pele.
Ke ngotse script e bonolo ea python e neng e romella metrics ea dummy bakeng sa letsatsi le leng le le leng bakeng sa lilemo tse fetileng tsa 4 mme ke matha cron hora e 'ngoe le e 'ngoe.
Kaha ts'ebetso eohle ea ClickHouse DBMS e ipapisitse le taba ea hore sistimi ena haufinyane e tla etsa mosebetsi oohle oa morao-rao, empa ha e tsejoe hore na ke neng, ha kea khona ho emela nako eo likotoana tse kholo tsa khale li qalang ho kopana le tsona. tse ntjha tse nyane. Ho ile ha totobala hore re hloka ho batla mokhoa oa ho iketsetsa lintlafatso tse qobelloang.

ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk

Lintlha ho litafole tsa sistimi ea ClickHouse

Ha re shebeng sebopeho sa tafole tsamaiso.likarolo. Ena ke tlhaiso-leseling e felletseng mabapi le karolo ka 'ngoe ea litafole tsohle ho seva sa ClickHouse. E na le, har'a tse ling, likholomo tse latelang:

  • db lebitso (database);
  • lebitso la tafole (table);
  • lebitso la karohano le ID (partition & partition_id);
  • ha sekotoana se entsoe (modification_time);
  • bonyane le letsatsi le phahameng ka ho fetesisa (karohano e etsoa ka letsatsi) (min_date & max_date);

Ho boetse ho na le tafole tsamaiso.graphite_retentions, ka likarolo tse latelang tse khahlisang:

  • db lebitso (Tables.database);
  • lebitso la tafole (Tables.table);
  • lilemo tsa metric ha ho lokela ho sebelisoa kakaretso e latelang (age);

E le:

  1. Re na le tafole ea likotoana le tafole ea melao ea aggregation.
  2. Re kopanya mateano a bona mme re fumana litafole tsohle *GraphiteMergeTree.
  3. Re batla li-partitions tsohle tseo ho tsona:
    • karolo e fetang bonngwe
    • kapa nako e fihlile ea ho sebelisa molao o latelang oa aggregation, le modification_time moholo hofeta motsotso ona.

Ts'ebetsong

Kopo ena

SELECT
    concat(p.database, '.', p.table) AS table,
    p.partition_id AS partition_id,
    p.partition AS partition,
    -- Самое "старое" правило, которое может быть применено для
    -- партиции, но не в будущем, см (*)
    max(g.age) AS age,
    -- Количество кусков в партиции
    countDistinct(p.name) AS parts,
    -- За самую старшую метрику в партиции принимается 00:00:00 следующего дня
    toDateTime(max(p.max_date + 1)) AS max_time,
    -- Когда партиция должна быть оптимизированна
    max_time + age AS rollup_time,
    -- Когда самый старый кусок в партиции был обновлён
    min(p.modification_time) AS modified_at
FROM system.parts AS p
INNER JOIN
(
    -- Все правила для всех таблиц *GraphiteMergeTree
    SELECT
        Tables.database AS database,
        Tables.table AS table,
        age
    FROM system.graphite_retentions
    ARRAY JOIN Tables
    GROUP BY
        database,
        table,
        age
) AS g ON
    (p.table = g.table)
    AND (p.database = g.database)
WHERE
    -- Только активные куски
    p.active
    -- (*) И только строки, где правила аггрегации уже должны быть применены
    AND ((toDateTime(p.max_date + 1) + g.age) < now())
GROUP BY
    table,
    partition
HAVING
    -- Только партиции, которые младше момента оптимизации
    (modified_at < rollup_time)
    -- Или с несколькими кусками
    OR (parts > 1)
ORDER BY
    table ASC,
    partition ASC,
    age ASC

e khutlisetsa e 'ngoe le e 'ngoe ea likarolo tsa tafole tsa *GraphiteMergeTree tseo ho kopanngoa ha tsona ho lokelang ho lokolla sebaka sa disk. Ntho feela e setseng ho etsoa ke ho feta ho tsona kaofela ka kopo OPTIMIZE ... FINAL. Ts'ebetsong ea ho qetela e boetse e ela hloko taba ea hore ha ho hlokahale ho ama likaroloana ka ho rekota ka mafolofolo.

Sena ke sona hantle seo morero o se etsang graphite-ch-optimizer. Basebetsi-'moho le bona ba pele ba Yandex.Market ba ile ba e leka ka tlhahiso, sephetho sa mosebetsi se ka bonoa ka tlase.

ClickHouse + Graphite: mokhoa oa ho fokotsa haholo tšebeliso ea sebaka sa disk

Haeba o tsamaisa lenaneo ho seva ka ClickHouse, e tla qala ho sebetsa ka mokhoa oa daemon. Hang ka hora kopo e tla etsoa, ​​​​ho hlahloba hore na likarolo tse ncha tsa khale ho feta matsatsi a mararo li hlahile tse ka ntlafatsoang.

Merero ea rona ea hanghang ke ho fana ka bonyane liphutheloana tsa deb, 'me haeba ho khoneha, le rpm.

Ho e-na phetheha

Likhoeling tse 9+ tse fetileng ke bile ka har'a k'hamphani ea ka Lipapali tsa InnoGames o qetile nako e ngata a ntse a thella mateanong a ClickHouse le graphite-web. E ne e le phihlelo e ntle, e ileng ea fella ka phetoho e potlakileng ho tloha ho hoeshetsa ho ea ho ClickHouse e le polokelo ea metrics. Ke ts'epa hore sengoloa sena ke qalo ea letoto la lintlafatso tseo re li entseng likarolong tse fapaneng tsa stack ena, le se tla etsoa nakong e tlang.

Lilithara tse 'maloa tsa biri le matsatsi a admin li ile tsa sebelisoa ho nts'etsapele kopo, hammoho le v0diabolo, tseo ke batlang ho mo leboha ka tsona. Hape bakeng sa ho hlahloba sengoloa sena.

Leqephe la morero ho github

Source: www.habr.com

Eketsa ka tlhaloso