ሜትሪክ ማከማቻ፡ ከግራፋይት+ዊስፐር ወደ ግራፋይት+ክሊክ ሃውስ እንዴት እንደተንቀሳቀስን::

ሰላም ሁላችሁም! በእሱ ውስጥ የመጨረሻ ጽሑፍ ለጥቃቅን አገልግሎት አርክቴክቸር ሞጁል የክትትል ሥርዓት ስለማደራጀት ጽፌ ነበር። ምንም የቆመ ነገር የለም፣ ፕሮጀክታችን ያለማቋረጥ እያደገ ነው፣ እና የተከማቹ መለኪያዎችም እንዲሁ። በከፍተኛ ጭነት ሁኔታዎች ውስጥ ከግራፋይት + ሹክሹክታ ወደ ግራፋይት + ClickHouse የሚደረገውን ሽግግር እንዴት እንዳደራጀን ፣ ከእሱ ስለሚጠበቀው ነገር እና በመቁረጥ ስር ስላለው የስደት ውጤቶች ያንብቡ።

ሜትሪክ ማከማቻ፡ ከግራፋይት+ዊስፐር ወደ ግራፋይት+ክሊክ ሃውስ እንዴት እንደተንቀሳቀስን::

መለኪያዎችን በግራፋይት + ሹክሹክታ ወደ ግራፋይት + ክሊክ ሃውስ እንዴት እንደምናከማች ከመንገርዎ በፊት እንደዚህ አይነት ውሳኔ ለማድረግ ምክንያቶች እና ለረጅም ጊዜ አብረውን ስለኖሩት የሹክሹክታ ጉዳቶች መረጃ መስጠት እፈልጋለሁ።

ግራፋይት+ የሹክሹክታ ችግሮች

1. በዲስክ ንዑስ ስርዓት ላይ ከፍተኛ ጭነት

በሽግግሩ ጊዜ በግምት 1.5 ሚሊዮን ሜትሪክ በደቂቃ ወደ እኛ በረረ። በዚህ ፍሰት ፣ በአገልጋዮቹ ላይ የዲስክ አጠቃቀም ~ 30% ነበር። በአጠቃላይ, በጣም ተቀባይነት ያለው ነበር - ሁሉም ነገር በተረጋጋ ሁኔታ ይሠራል, በፍጥነት ተጽፏል, በፍጥነት ይነበባል ... አንዱ የልማት ቡድን አዲስ ባህሪን አውጥቶ በደቂቃ 10 ሚሊዮን ሜትሪክስ መላክ እስኪጀምር ድረስ. የዲስክ ንኡስ ስርዓት የተጠናከረው በዚያን ጊዜ ነበር, እና 100% አጠቃቀምን አየን. ችግሩ በፍጥነት ተፈትቷል, ነገር ግን ደለል ቀረ.

2. የማባዛት እና ወጥነት ማጣት

ምናልባትም፣ ልክ እንደ ግራፋይት + ሹክሹክታ የሚጠቀም/የሚጠቀም ማንኛውም ሰው፣ ስህተት መቻቻልን ለመፍጠር አንድ አይነት የመለኪያ ዥረት ለብዙ ግራፋይት አገልጋዮች በአንድ ጊዜ አፍስሰናል። እና በዚህ ላይ ምንም ልዩ ችግሮች አልነበሩም - ከአገልጋዮቹ አንዱ በሆነ ምክንያት እስካልወደቀበት ጊዜ ድረስ። አንዳንድ ጊዜ የወደቀውን አገልጋይ በበቂ ፍጥነት ማምጣት ችለናል፣ እና ካርቦን-ሲ-ሪሌይ ከመሸጎጫው ውስጥ በመለኪያዎች መሙላት ችለናል፣ እና አንዳንዴም አይደለም። እና ከዚያ በመለኪያዎች ውስጥ ቀዳዳ ነበር, ይህም በ rsync ሸፍነናል. ሂደቱ በጣም ረጅም ነበር. ይህ በጣም አልፎ አልፎ በመከሰቱ ብቻ ነው የተቀመጠው። እንዲሁም የዘፈቀደ መለኪያዎችን በየጊዜው ወስደን ከሌሎች ተመሳሳይ የክላስተር አንጓዎች ጋር አወዳድረን ነበር። በ 5% ከሚሆኑት ጉዳዮች, ብዙ እሴቶች ይለያያሉ, ይህም በጣም ደስተኛ አላደረገንም.

3. ከፍተኛ መጠን ያለው ቦታ ተይዟል

በግራፋይት ውስጥ የምንጽፈው መሠረተ ልማትን ብቻ ሳይሆን የቢዝነስ መለኪያዎችን (እና አሁን ደግሞ ከኩበርኔትስ መለኪያዎች) ስለሆነ ብዙውን ጊዜ በመለኪያው ውስጥ ጥቂት እሴቶች ያሉበት ሁኔታ እናገኛለን እና የ .wsp ፋይል የሚፈጠረው እየወሰደ ነው ። ሙሉውን የማቆያ ጊዜ ግምት ውስጥ በማስገባት ቀድሞ የተመደበውን ቦታ ይወስዳል፣ ይህም ~ 2 ሜባ ነበርን። ችግሩ ከጊዜ ወደ ጊዜ ብዙ እንደዚህ ያሉ ፋይሎች በመኖራቸው እና በእነሱ ላይ ሪፖርቶችን በሚገነቡበት ጊዜ ባዶ ነጥቦችን ማንበብ ብዙ ጊዜ እና ሀብቶችን ይወስዳል።

ከላይ የተገለጹት ችግሮች በተለያዩ ዘዴዎች እና በተለያዩ የውጤታማነት ደረጃዎች ሊፈቱ እንደሚችሉ ከወዲሁ ማስተዋል እፈልጋለሁ፣ ነገር ግን ብዙ መረጃዎችን መቀበል በጀመሩ ቁጥር እየተባባሱ ይሄዳሉ።

ከላይ የተጠቀሱትን ሁሉ (የቀድሞውን ከግምት ውስጥ በማስገባት) መጣጥፎች), እንዲሁም የተቀበሉት መለኪያዎች የማያቋርጥ ጭማሪ, ሁሉንም መለኪያዎች ወደ 30 ሰከንድ የማከማቻ ክፍተት ለማስተላለፍ ፍላጎት. (አስፈላጊ ከሆነ እስከ 10 ሰከንድ ድረስ)፣ ግራፋይት+ክሊክ ሃውስን እንደ ዊስፐር ተስፋ ሰጪ አማራጭ ለመሞከር ወስነናል።

ግራፋይት+ክሊክሃውስ። የሚጠበቁ

ከ Yandex ብዙ የወንዶች ስብሰባዎችን ጎበኘ ፣ አንብቦ ስለ Habré ሁለት መጣጥፎች, በሰነዶቹ ውስጥ አልፈን እና ClickHouseን በግራፋይት ስር ለማሰር ጤናማ አካላትን አግኝተን እርምጃ ለመውሰድ ወስነናል!

የሚከተሉትን ማግኘት ይፈልጋሉ:

  • የዲስክ ንዑስ ስርዓት አጠቃቀምን ከ 30% ወደ 5% ይቀንሱ;
  • ከ 1 ቴባ ወደ 100 ጊባ የተያዘውን ቦታ ይቀንሱ;
  • ለአገልጋዩ በደቂቃ 100 ሚሊዮን ሜትሪክስ መቀበል መቻል;
  • ከሳጥኑ ውስጥ የውሂብ ማባዛት እና የስህተት መቻቻል;
  • በዚህ ፕሮጀክት ላይ ለአንድ አመት አይቀመጡ እና ለአንዳንድ ጤናማ ጊዜዎች ሽግግር ያድርጉ;
  • ያለማቋረጥ መቀየር.

ቆንጆ ምኞት ፣ አይደል?

ግራፋይት+ክሊክሃውስ። አካላት

በ Graphite ፕሮቶኮል በኩል መረጃ ለመቀበል እና ወደ ClickHouse ለመጻፍ መረጥኩኝ። ካርቦን-ክሊክ ሃውስ (ጎላንግ)።

የመጨረሻው የ ClickHouse የተለቀቀው የተረጋጋ ስሪት 1.1.54253 የጊዜ ተከታታይን ለማከማቸት እንደ ዳታቤዝ ተመርጧል። ከእሱ ጋር በሚሰሩበት ጊዜ ችግሮች ነበሩ-የስህተት ተራራ ወደ ምዝግብ ማስታወሻዎች ፈሰሰ, እና በእነሱ ላይ ምን ማድረግ እንዳለበት ሙሉ በሙሉ ግልጽ አልነበረም. ጋር በመወያየት ላይ ሮማን ሎሞኖሶቭ (የካርቦን-ክሊክ ሃውስ ደራሲ, ግራፋይት-ክሊክ ሃውስ እና ሌሎች ብዙ) አሮጌው ተመርጧል መልቀቅ 1.1.54236. ስህተቶች ጠፍተዋል - ሁሉም ነገር በባንግ መስራት ጀመረ.

ከ ClickHouse ውሂብ ለማንበብ ተመርጧል ግራፋይት-ክሊክ ቤት (ጎላንግ)። እንደ ኤፒአይ ለግራፋይት - ካርቦናፒ (ጎላንግ)። በሠንጠረዦች መካከል ማባዛትን ለማደራጀት፣ ClickHouse ጥቅም ላይ ውሏል የሚወጡትና. ለመዘዋወር መለኪያዎች፣ የምንወደውን ትተናል ካርቦን-ሲ-ማስተላለፊያ (ሐ) (የቀድሞውን ጽሑፍ ይመልከቱ).

ግራፋይት+ክሊክሃውስ። የጠረጴዛ መዋቅር

"ግራፋይት" ለክትትል ጠረጴዛዎች የፈጠርነው የውሂብ ጎታ ነው.

“graphite.metrics” ReplicatedReplacingMergeTree ሞተር (የተባዛ) ያለው ሠንጠረዥ ነው። MergeTreeን በመተካት።). ይህ ሰንጠረዥ የመለኪያዎችን ስሞች እና ወደ እነርሱ የሚወስዱትን መንገዶች ያከማቻል።

CREATE TABLE graphite.metrics ( Date Date, Level UInt32, Path String, Deleted UInt8, Version UInt32 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.metrics', ‘r1’, Date, (Level, Path), 8192, Version);

“graphite.data” የተባዛው ግራፋይት ሜርጌትሬ ሞተር ያለው ሠንጠረዥ ነው (የተባዛ GraphiteMergeTree). ይህ ሰንጠረዥ ሜትሪክ እሴቶችን ያከማቻል።

CREATE TABLE graphite.data ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32 ) ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/replicator/graphite.data', 'r1', Date, (Path, Time), 8192, 'graphite_rollup')

"graphite.date_metrics" በተባዛ የሚተካMergeTree ሞተር በሁኔታ የተሞላ ሠንጠረዥ ነው። ይህ ሰንጠረዥ በቀን ውስጥ ያጋጠሙትን ሁሉንም ልኬቶች ስሞች ይዟል። የፍጥረት ምክንያቶች በክፍሉ ውስጥ ተገልጸዋል "ችግሮች" በዚህ ጽሑፍ መጨረሻ ላይ.

CREATE MATERIALIZED VIEW graphite.date_metrics ( Path String,  Level UInt32,  Date Date) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.date_metrics', 'r1', Date, (Level, Path, Date), 8192) AS SELECT toUInt32(length(splitByChar('.', Path))) AS Level, Date, Path FROM graphite.data

“graphite.data_stat” ከተባዛው አግሬጋቲንግ ሜርጌትሬ ሞተር (የተባዛ) ያለው ሁኔታዊ ሠንጠረዥ ነው። የመሰብሰቢያ ሜርጌት). ይህ ሰንጠረዥ ወደ 4 የመክተቻ ደረጃዎች የተከፋፈሉትን የገቢ መለኪያዎች ብዛት ይመዘግባል።

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 የሚደረገው ሽግግር ያለማቋረጥ መሆን አለበት፣ እንደቅደም ተከተላቸው፣ የእኛን የክትትል ስርዓታችንን እንደምንም በተቻለ መጠን ግልጽ በሆነ መንገድ ለተጠቃሚዎቻችን ወደ አዲሱ ማከማቻ መቀየር ነበረብን።
በዚህ መንገድ አደረግን.

  • ተጨማሪ የመለኪያ ዥረት ወደ ካርቦን-ክሊክ ሃውስ ለመላክ ደንብ ወደ ካርቦን-ሲ-ሪሌይ ታክሏል።

  • ትንሽ የፓይቶን ስክሪፕት ጻፍን ፣ በሹክሹክታ-ዱምፕ ቤተ-መጽሐፍት ፣ ሁሉንም የ.wsp ፋይሎች ከማከማቻችን አንብበን እና ይህንን መረጃ በ 24 ክሮች ውስጥ ወደተገለጸው ወደ ካርቦን-ክሊክ ቤት ልከናል። በካርቦን-ክሊክ ሃውስ ውስጥ ተቀባይነት ያላቸው የሜትሪክ እሴቶች ብዛት 125 ሚሊዮን / ደቂቃ ደርሷል ፣ እና ClickHouse እንኳን ላብ አላደረገም።

  • በነባር ዳሽቦርዶች ውስጥ ጥቅም ላይ የዋሉ ተግባራትን ለማረም በ Grafana ውስጥ የተለየ ዳታ ምንጭ ፈጠርን። የተጠቀምንባቸውን ባህሪያት ዝርዝር አሳይተዋል ነገር ግን በካርቦናፒ ውስጥ አልተተገበሩም። እነዚህን ተግባራት ጨርሰናል፣ እና PRs ወደ ካርቦናፒ ደራሲዎች ልከናል (ለእነርሱ ልዩ ምስጋና)።

  • የንባብ ጭነቱን በተመጣጣኝ ቅንብሮች ውስጥ ለመቀየር፣ የመጨረሻ ነጥቦችን ከgraphite-api (API interface for Graphite+Whisper) ወደ ካርቦናፒ ቀይረናል።

ግራፋይት+ክሊክሃውስ። ውጤቶች

  • የዲስክ ንዑስ ስርዓት አጠቃቀምን ከ 30% ወደ 1% ቀንሷል;

    ሜትሪክ ማከማቻ፡ ከግራፋይት+ዊስፐር ወደ ግራፋይት+ክሊክ ሃውስ እንዴት እንደተንቀሳቀስን::

  • ከ 1 ቴባ ወደ 300 ጂቢ የተያዘውን ቦታ መጠን ቀንሷል;
  • በደቂቃ 125 ሚሊዮን ሜትሪክስ በአገልጋይ የመቀበል አቅም አለን (በስደት ጊዜ ከፍተኛ);
  • ሁሉንም መለኪያዎች ወደ ሠላሳ ሰከንድ የማከማቻ ክፍተት አስተላልፈዋል;
  • የተቀበለው የውሂብ ማባዛት እና ስህተት መቻቻል;
  • ያለማቋረጥ መቀየር;
  • ለሁሉም ነገር 7 ሳምንታት ወስዷል.

ግራፋይት+ክሊክሃውስ። ችግሮች

በእኛ ሁኔታ, አንዳንድ ወጥመዶች ነበሩ. ከሽግግሩ በኋላ ያጋጠመን ነው።

  1. ClickHouse ሁልጊዜ በበረራ ላይ ውቅሮችን እንደገና አያነብም፣ አንዳንድ ጊዜ እንደገና መጫን አለበት። ለምሳሌ፣ በ ClickHouse ውቅር ውስጥ ያለው የአራዊት ጠባቂ ክላስተር ገለፃ፣ የጠቅታ ሃውስ-ሰርቨር እንደገና እስኪጀመር ድረስ አልተተገበረም።
  2. ምንም ትልቅ የ ClickHouse ጥያቄዎች አልነበሩም፣ ስለዚህ በእኛ የግራፍ-ክሊክ ቤት፣ የ ClickHouse ግንኙነት ሕብረቁምፊ ይህን ይመስላል።
    url = "http://localhost:8123/?max_query_size=268435456&max_ast_elements=1000000"
  3. ClickHouse ብዙ ጊዜ የተረጋጉ የተለቀቁትን አዳዲስ ስሪቶችን ይለቀቃል፣ ድንቆችን ሊይዙ ይችላሉ፡ ይጠንቀቁ።
  4. በ kubernetes ውስጥ በተለዋዋጭ የተፈጠሩ ኮንቴይነሮች አጭር እና የዘፈቀደ የህይወት ጊዜ ያላቸው ብዙ ሜትሪክስ ይልካሉ። በእንደዚህ አይነት መለኪያዎች መሰረት ብዙ ነጥቦች የሉም, እና በቦታው ላይ ምንም ችግሮች የሉም. ነገር ግን መጠይቆችን በሚገነቡበት ጊዜ ClickHouse እጅግ በጣም ብዙ የሆኑ ተመሳሳይ መለኪያዎችን ከ'ሜትሪክስ' ሰንጠረዥ ያነሳል። በ 90% ከሚሆኑት ጉዳዮች, ከመስኮቱ ውጭ ለእነሱ ምንም መረጃ የለም (24 ሰዓቶች). ነገር ግን ይህን ውሂብ በ'ውሂብ' ሠንጠረዥ ውስጥ ለመፈለግ የጠፋው ጊዜ አልፏል፣ እና በመጨረሻም በጊዜ ማብቂያ ላይ ነው። ይህንን ችግር ለመፍታት በቀን ውስጥ ያጋጠሙትን መለኪያዎች መረጃ የያዘ የተለየ እይታ መያዝ ጀመርን. ስለዚህ, በተለዋዋጭ ሁኔታ ለተፈጠሩ መያዣዎች ሪፖርቶችን (ግራፎችን) በሚገነቡበት ጊዜ, በተጠቀሰው መስኮት ውስጥ ያጋጠሙትን መለኪያዎች ብቻ እንመረምራለን, እና ለጠቅላላው ጊዜ አይደለም, ይህም በእነሱ ላይ ሪፖርቶችን መፍጠርን በእጅጉ ያፋጥናል. ከላይ ለተጠቀሰው መፍትሄ ተሰብስቧል ግራፋይት-ክሊክ ቤት (ሹካ), ከ date_metrics ሰንጠረዥ ጋር አብሮ የመስራትን ትግበራ ያካትታል.

ግራፋይት+ክሊክሃውስ። tags

ከስሪት 1.1.0 ጀምሮ ግራፋይት ይፋ ሆኗል። የድጋፍ መለያዎች. እና ይህንን ተነሳሽነት በግራፋይ + ክሊክ ቤት ውስጥ ለመደገፍ ምን እና እንዴት ማድረግ እንዳለብን በንቃት እያሰብን ነው።

ግራፋይት+ክሊክሃውስ። Anomaly ማወቂያ

ከላይ በተገለጹት መሠረተ ልማቶች ላይ በመመስረት, የፕሮቶታይፕ አኖማሊ ማወቂያን ተግብረናል, እና ይሰራል! ግን ስለ እሱ - በሚቀጥለው ርዕስ ውስጥ.

ለደንበኝነት ይመዝገቡ, ወደ ላይ ያለውን ቀስት ይጫኑ እና ደስተኛ ይሁኑ!

ምንጭ: hab.com

አስተያየት ያክሉ