በእውነተኛ ጊዜ የ PHP ስክሪፕቶች ስታቲስቲክስ እና ክትትል። ClickHouse እና Grafana ወደ ፒንባ እርዳታ ይሄዳሉ

በዚህ ጽሑፍ ውስጥ ከፒንባ_ኤንጂን እና ከፒንቦርድ ይልቅ ፒንባ በክሊክሃውስ እና በግራፋና እንዴት እንደሚጠቀሙ አሳያችኋለሁ።

በ php ፕሮጀክት ላይ፣ በአፈጻጸም ላይ ምን እየተፈጠረ እንዳለ ለመረዳት ፒንባ ብቸኛው አስተማማኝ መንገድ ሊሆን ይችላል። እውነት ነው, ፒንባ ብዙውን ጊዜ የሚተገበረው ችግሮች ሲታዩ ብቻ ነው እና "የት መቆፈር እንዳለበት" ግልጽ አይደለም.

ብዙውን ጊዜ ማንም ሰው በሰከንድ/ደቂቃ ምን ያህል ጊዜ እንደሚጠራ ማንም አያውቅም እና የበለጠ ምክንያታዊ ከሚመስሉት ቦታዎች ጀምሮ “በንክኪ” ማሻሻል ይጀምራሉ።

አንድ ሰው nginx ሎግዎችን ይመረምራል፣ እና የሆነ ሰው በመረጃ ቋቱ ውስጥ ቀርፋፋ መጠይቆችን ይመረምራል።

በእርግጥ ፒንባ እጅግ የላቀ አይሆንም፣ ግን እያንዳንዱ ፕሮጀክት ያልያዘበት በርካታ ምክንያቶች አሉ።

በእውነተኛ ጊዜ የ PHP ስክሪፕቶች ስታቲስቲክስ እና ክትትል። ClickHouse እና Grafana ወደ ፒንባ እርዳታ ይሄዳሉ

እና የመጀመሪያው ምክንያት መቼት ነው.

ከፒንባ መግቢያ ላይ ብዙ ወይም ባነሰ መልኩ አንድ ዓይነት "ማሟጠጥ" ለማግኘት ለመጨረሻዎቹ ደቂቃዎች ብቻ ሳይሆን ለረጅም ጊዜ (ከቀናት እስከ ወራቶች) መለኪያዎችን ማየት በጣም ተፈላጊ ነው.

ይህንን ለማድረግ የሚከተሉትን ያስፈልግዎታል:

  • የ php ቅጥያ ጫን (እና nginx ሞጁል ሊፈልጉ ይችላሉ)
  • ለ mysql ቅጥያ ማጠናቀር
  • ፒንቦርድን ይጫኑ እና ክሮን ያዘጋጁ

ስለ ፒንቢ ያለው መረጃ አነስተኛ በመሆኑ ብዙዎች በ php5 ላይ ብቻ እንደሰራ እና ለረጅም ጊዜ እንደጠፋ ይሰማቸዋል, ነገር ግን የበለጠ እንደምንመለከተው, ይህ እንደዛ አይደለም.

የመጀመሪያው እርምጃ ቀላሉ ነው, እርስዎ ማድረግ ያለብዎት ትዕዛዙን ማስኬድ ብቻ ነው:

apt install php-pinba

ማከማቻዎቹ እስከ php 7.3 ድረስ ያለው ቅጥያ አላቸው እና ምንም ነገር ማጠናቀር አያስፈልግዎትም።

የመጫኛ ትዕዛዙን ከፈፀምን በኋላ የእያንዳንዱን ስክሪፕት መለኪያዎች (የቆይታ ጊዜ ፣ ​​ማህደረ ትውስታ ፣ ወዘተ) በቅርጸት የሚሰበስብ እና የሚልክ ቀድሞውኑ የሚሰራ ቅጥያ እናገኛለን። ፕሮቶቡፍ በ udp እስከ 127.0.0.1:30002.

ማንም እነዚህን የ udp ጥቅሎች እስካሁን አልያዛቸዉም ፣ ነገር ግን ይህ የ php ስክሪፕቶችህን ፍጥነት ወይም መረጋጋት ላይ አሉታዊ ተጽዕኖ አያሳድርም።

እስከ ቅርብ ጊዜ ድረስ፣ እነዚህን የ udp ጥቅሎች ለመያዝ እና ለማስኬድ እንደ መተግበሪያ፣ ብቻ ነበር። ፒንባ_ሞተር. መግለጫ "ቀላል እና አጭር» መጫኑ እንደገና የማንበብ እና የማወቅ ፍላጎትን ያዳክማል። በኪሎሜር ርዝመት ያለው የጥገኝነት ዝርዝሮች ሁለቱም የጥቅል ስሞች እና የፕሮግራም ስሞች እና ከተጫነባቸው ጋር ወደ ግለሰባዊ ገፆች አገናኞች አሉ እና እነዚያ ከሌሎች ጥገኛዎች ጋር የራሳቸው አገናኞች አሏቸው። ማንም ሰው ይህንን ብልግና ለመቋቋም ጊዜ ወይም ዝንባሌ የለውም።

የመጫን ሂደት pinba2 አላደረገም በተለይም ቀላል.

ምናልባት አንድ ቀን pinba10ን ከአንድ ወይም ሁለት ትዕዛዞች ጋር መጫን እና እንዴት ማድረግ እንዳለበት ለመረዳት ብዙ ቁሳቁሶችን ላለማነበብ ይቻል ይሆናል, ግን እስካሁን ድረስ ይህ አይደለም.

ፒንባ_ኤንጂን ከጫኑ፣ ያ ጦርነቱ ግማሽ ብቻ ነው። ከሁሉም በኋላ, ያለ ፒንቦርድ እራስዎን በመጨረሻዎቹ ጥቂት ደቂቃዎች ብቻ መወሰን አለቦት፣ ወይም ውሂቡን እራስዎ ማሰባሰብ፣ ማከማቸት እና በዓይነ ሕሊናዎ ማየት አለብዎት። ፒንቦርዱ ለመጠቀም ቀላል ከሆነ ጥሩ ነው። መጫኛ.

የሚመስለው ፣ ከ php ሁሉም መለኪያዎች ቀድሞውኑ በፕሮቶቡፍ ቅርጸት ወደ udp ወደብ የሚሄዱ ከሆነ እና የሚይዘው እና በአንድ ዓይነት ማከማቻ ውስጥ የሚያከማች መተግበሪያ መፃፍ ብቻ ከሆነ ለምን እንደዚህ አይነት መከራ ነው? በግልጽ ለማየት እንደሚቻለው, ይህን ሃሳብ ያመነጩት ገንቢዎች ወዲያውኑ ብስክሌቶቻቸውን ለመጻፍ ተቀምጠዋል, አንዳንዶቹም በጊትዩብ ላይ ጨርሰዋል.

የሚከተለው የአራት ክፍት ምንጭ ፕሮጀክቶች አጠቃላይ እይታ ነው መለኪያዎችን በማከማቻ ውስጥ ያከማቻሉ፣ ከነሱም ይህ መረጃ ለማግኘት እና ለማየት ቀላል ነው፣ ለምሳሌ grafanaን በመጠቀም።

olegfedoseev / pinba-አገልጋይ (ህዳር 2017)

በOpenTSDB ውስጥ መለኪያዎችን የሚያከማች udp አገልጋይ በሂደት ላይ ነው። ምናልባት OpenTSDB አስቀድሞ በፕሮጀክትዎ ላይ ጥቅም ላይ ከዋለ ይህ መፍትሄ እርስዎን ይስማማል ፣ አለበለዚያ እንዲያልፉ እመክራለሁ ።

olegfedoseev/pinba-influxdb (ሰኔ 2018)

udp አገልጋይ በጉዞ ላይ፣ ከተመሳሳይ habrauserበዚህ ጊዜ መለኪያዎችን በ InfluxDB ውስጥ የሚያከማች። ብዙ ፕሮጀክቶች ለክትትል InfluxDB ን ይጠቀማሉ፣ ስለዚህ ይህ መፍትሄ ለእነሱ ጥሩ ሊሆን ይችላል።

ምርቶች

  • InfluxDB ይህ ይፈቅዳል የተቀበሉትን መለኪያዎች ያዋህዱ እና ከተወሰነ ጊዜ በኋላ ዋናውን ይሰርዙ።

Cons:

ClickHouse-ኒንጃ/ፕሮቶን (ጥር 2019)

በ ClickHouse ውስጥ መለኪያዎችን የሚያስቀምጥ udp አገልጋይ በሂደት ላይ ነው። ይህ የጓደኛዬ መፍትሄ ነው። ፒንባ እና ክሊክ ሃውስን ለመውሰድ ጊዜው አሁን እንደሆነ የወሰንኩት ከእርሱ ጋር ከተዋውኩት በኋላ ነው።

ምርቶች

  • ክሊክሃውስ ለእንደዚህ አይነት ስራዎች ተስማሚ ነው, ውሂቡን ለመጭመቅ ስለሚያስችል ሁሉንም ጥሬ ውሂቦች ያለምንም ስብስቦች እንኳን ማከማቸት ይችላሉ.
  • ከተፈለገ የተቀበሉትን መለኪያዎች በቀላሉ ማሰባሰብ ይችላሉ።
  • ለግራፋና ዝግጁ የሆነ አብነት
  • የሰዓት ቆጣሪ መረጃን ይቆጥባል

Cons:

  • ገዳይ ጉድለት
  • የውሂብ ጎታውን እና የጠረጴዛዎችን ስም ፣ የአገልጋዩን አድራሻ እና ወደብ የሚያዘጋጁበት ምንም ውቅር የለም።
  • ጥሬ መረጃን በሚያስቀምጡበት ጊዜ፣ ረዳት መዝገበ ቃላት ሠንጠረዥ ገጽ እና ጎራ አድራሻዎችን ለማከማቸት ይጠቅማል፣ ይህም በኋላ ላይ ጥያቄዎችን ያወሳስበዋል።
  • ከመጀመሪያው ሲቀነስ የሚከተሉ ሌሎች ትናንሽ ነገሮች

pinba-አገልጋይ / pinba-አገልጋይ (ኤፕሪል 2019)

በ php ውስጥ የ udp አገልጋይ በ ClickHouse ውስጥ መለኪያዎችን ይቆጥባል። ይህ የእኔ መፍትሔ ነው፣ ይህም ከፒንባ፣ ClickHouse እና ፕሮቶቡፍ ጋር የመተዋወቅ ውጤት ነው። ከዚህ አጠቃላይ ስብስብ ጋር እየተነጋገርኩ እያለ “የፅንሰ-ሀሳብ ማረጋገጫ” ጻፍኩኝ ፣ ለእኔ ባልተጠበቀ ሁኔታ ፣ ጉልህ ሀብቶችን አልበላም (30 ሜባ ራም እና ከስምንቱ ፕሮሰሰር ኮሮች ውስጥ ከ 1% ያነሰ) ፣ ስለዚህ እኔ ለህዝብ ለማካፈል ወስኗል።

Pluses - ከቀዳሚው መፍትሄ ጋር ተመሳሳይ ነው፣ እኔም ከዋናው የፒንባ_ኤንጂን የተለመዱ ስሞች ተጠቀምኩ። መለኪያዎችን ወደ ተለያዩ ሰንጠረዦች ለማስቀመጥ በአንድ ጊዜ ብዙ pinbaserver ምሳሌዎችን እንዲያሄዱ የሚያስችልዎትን ውቅረት ጨምሬያለሁ - ከ php ብቻ ሳይሆን ከ nginxም መረጃ ለመሰብሰብ ከፈለጉ ይህ ጠቃሚ ነው።
Cons - " ገዳይ እንከን " እና እነዚያ በግል የማይስማሙ ትንንሽ ነገሮች, ግን የእኔ መፍትሔ "እንደ ሸርተቴ ቀላል" እና 100 ያህል የኮድ መስመሮችን ብቻ ያቀፈ ነው, ስለዚህ ማንኛውም ፒኤችፒ ገንቢ የማይወደውን መለወጥ ይችላል. ሁለት ደቂቃዎች.

እንዴት እንደሚሰራ

በ udp port ላይ ማዳመጥ 30002. ሁሉም ገቢ ፓኬቶች በፕሮቶቡፍ እቅድ መሰረት ዲኮድ ተደርገው ተቀምጠዋል። በደቂቃ አንድ ጊዜ፣ የጠቅታ ቤት ባች በpinba.requests ሠንጠረዥ ውስጥ ይገባል። (ሁሉም መለኪያዎች በ ውስጥ ተዋቅረዋል። አዋቅር)

ስለ ክሊክ ሃውስ ትንሽ

Clickhouse የተለያዩ የማከማቻ ሞተሮችን ይደግፋል። በብዛት ጥቅም ላይ የዋለው MergeTree ነው.

በአንድ ወቅት የተዋሃደ ውሂብን ለማከማቸት ከወሰኑ እና ጥሬ ውሂብ ለመጨረሻ ጊዜ ብቻ ለማከማቸት ከወሰኑ ፣ ከዚያ በመቧደን ተጨባጭ እይታን መፍጠር እና ከጊዜ ወደ ጊዜ ዋናውን የ pinba.requests ሠንጠረዥ ማጽዳት ይችላሉ ፣ ሁሉም መረጃዎች በ ውስጥ ይቀራሉ። ቁሳዊ እይታ. ከዚህም በላይ የpinba.requests ሠንጠረዥን ሲፈጥሩ "ሞተር = ኑል" ን መግለጽ ይችላሉ, ከዚያ ጥሬው መረጃ በዲስክ ላይ አይቀመጥም, እና በተመሳሳይ ጊዜ, አሁንም ወደ ተጨባጭ እይታ ውስጥ ይወድቃል እና የተዋሃደ ሆኖ ይቆያል. ይህንን እቅድ ለ nginx ሜትሪክስ እጠቀማለሁ፣ ምክንያቱም በ nginx ላይ ከphp ይልቅ 50 እጥፍ ተጨማሪ ጥያቄዎች አሉኝ።

ስለዚህ ረጅም መንገድ ሄዳችሁ በግማሽ መንገድ ልተወው አልፈልግም ስለዚህ የሚከተለው የኔ የመፍትሄ አፈጣጠር እና አወቃቀሩ ዝርዝር መግለጫ እና የሚፈልጉትን ሁሉ እንዲሁም ከአንድ በላይ መርከብ የተከሰከሱትን ጉድጓዶች ይዘረዝራል። አጠቃላይ የመጫን ሂደቱ ለኡቡንቱ 18.04 LTS እና ሴንቶስ 7 ተገልጿል፣ በሌሎች ስርጭቶች እና ስሪቶች ላይ ሂደቱ ትንሽ ሊለያይ ይችላል።

ቅንብር

ሁሉንም አስፈላጊ ትዕዛዞች አስገባሁ Dockerfile መመሪያዎችን እንደገና ማባዛትን ለማመቻቸት. ወጥመዶች ብቻ ከዚህ በታች ይብራራሉ.

php pinba

ከተጫነ በኋላ ሁሉም አማራጮች በ /etc/php/7.2/fpm/conf.d/20-pinba.ini ፋይል ውስጥ ያልተሰጡ መሆናቸውን ያረጋግጡ። በአንዳንድ ስርጭቶች (ለምሳሌ ሳንቲም) አስተያየት ሊሰጣቸው ይችላል።

extension=pinba.so
pinba.enabled=1
pinba.server=127.0.0.1:30002

ጠቅታ ቤት

በመጫን ጊዜ ክሊክ ሃውስ ለነባሪ ተጠቃሚ የይለፍ ቃል እንዲያዘጋጁ ይጠይቅዎታል። በነባሪ ፣ ይህ ተጠቃሚ ከሁሉም ip ይገኛል ፣ ስለዚህ በአገልጋዩ ላይ ፋየርዎል ከሌለዎት ለእሱ የይለፍ ቃል ማዘጋጀትዎን ያረጋግጡ። ይህ በ /etc/clickhouse-server/users.xml ፋይል ውስጥ ከተጫነ በኋላ ሊከናወን ይችላል።

በተጨማሪም ክሊክ ሃውስ 9000 ን ጨምሮ በርካታ ወደቦችን እንደሚጠቀም ልብ ሊባል የሚገባው ነው። ይህንን ወደብ አስቀድመው የሚጠቀሙ ከሆነ በ /etc/clickhouse-server/config.xml ፋይል ውስጥ ወደ ሌላ መቀየር ይችላሉ.

grafana ከክሊክ ሃውስ ተሰኪ ጋር

ግራፋናን ከጫኑ በኋላ የመግቢያ አስተዳዳሪን እና የይለፍ ቃል አስተዳዳሪን ይጠቀሙ። መጀመሪያ ሲገቡ ግራፋና አዲስ የይለፍ ቃል እንዲያዘጋጁ ይጠይቅዎታል።

በመቀጠል ወደ ሜኑ "+" -> አስመጣ ይሂዱ እና ለማስገባት የዳሽቦርዱን ቁጥር ይግለጹ 10011. ይህን ዳሽቦርድ አዘጋጅቼ ሰቅዬው አንተ ራስህ እንደገና እንዳትሠራው።

ግራፋና ከክሊክ ሃውስ ጋር በሶስተኛ ወገን ፕለጊን መስራትን ይደግፋል፣ ለሶስተኛ ወገን ተሰኪዎች ግን ግራፋና ማንቂያዎች የሉትም (የዚህ ትኬት ለብዙ አመታት ሲመዘን ቆይቷል)።

pinba-አገልጋይ

ፕሮቶቡፍ እና ነፃነትን መጫን አማራጭ ነው፣ ግን የፒንባ አገልጋይ አፈጻጸምን ያሻሽላል። ፒንባ-ሰርቨርን ከ/opt ሌላ ፎልደር ከጫኑ፣እንግዲያውስ ማስተካከልም ያስፈልግዎታል systemd ስክሪፕት ፋይል።

የፒንባ ሞጁል በ nginx ስር

ሞጁሉን ለማጠናቀር ቀድሞውንም በአገልጋዩ ላይ የተጫነው የ nginx ተመሳሳይ ስሪት ምንጮች እና ተመሳሳይ የማጠናቀር አማራጮች ያስፈልጉዎታል ፣ ካልሆነ ግን ግንባታው ስኬታማ ይሆናል ፣ ግን ሞጁሉን ሲያገናኙ ስህተት ይፈጠራል "ሞጁሉ ሁለትዮሽ ተኳሃኝ አይደለም" የማጠናቀር አማራጮች የ nginx -V ትእዛዝን በመጠቀም ሊታዩ ይችላሉ።

የህይወት ጠለፋዎች

ሁሉም የእኔ ጣቢያዎች በ https ላይ ብቻ ነው የሚሰሩት. የሼማ መስኩ ትርጉም የለሽ ይሆናል፣ ስለዚህ ድሩ/ኮንሶሉን ለመለየት እጠቀማለሁ።

ከድር ላይ በሚገኙ ስክሪፕቶች ውስጥ፣ እኔ እጠቀማለሁ፡-

if (ini_get('pinba.enabled')) {
    pinba_schema_set('web');
}

እና በኮንሶል ውስጥ (ለምሳሌ፣ ክሮን ስክሪፕቶች)፡-

if (ini_get('pinba.enabled')) {
    pinba_schema_set('console');
}

የእኔ ግራፋና ዳሽቦርድ ስታቲስቲክስን በተናጠል ለማየት የድር/ኮንሶል ማብሪያ / ማጥፊያ አለው።

እንዲሁም የራስዎን መለያዎች ወደ pinbu መላክ ይችላሉ፣ ለምሳሌ፡-

pinba_tag_set('country', $countryCode);

ይኼው ነው.

በአንቀጹ ስር ያሉትን ምርጫዎች ለመመለስ ትልቅ ጥያቄ።

በሀብር የግል መልእክቶች እና ማህበራዊ አውታረ መረቦች እንደማልመክር እና እንደማልረዳ በትውፊት አስጠነቅቃለሁ።

በ github ላይ ትኬት ይፍጠሩ።

እንዲሁም እባክዎን በመውደዶች ይደግፉ እንግሊዝኛ ስሪት ይህ ዓምድ Reddit ላይ.

በዳሰሳ ጥናቱ ውስጥ የተመዘገቡ ተጠቃሚዎች ብቻ መሳተፍ ይችላሉ። ስግን እንእባክህን።

በአገልጋዩ ላይ የትኛውን ስርዓተ ክወና እየተጠቀሙ ነው?

  • ኡቡንቱ

  • CentOS

  • ደቢያን

  • Gentoo

  • ቀይ ኮፍያ

  • Fedora

  • አውቶSESEን ይክፈቱ

  • ሱኢ.ኤስ.

  • ዩኒክስ

  • የ Windows

  • ሌላ

114 ተጠቃሚዎች ድምጽ ሰጥተዋል። 11 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

በአገልጋዩ ላይ የምትጠቀመው የትኛውን የ php ስሪት ነው?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • ሌላ

105 ተጠቃሚዎች ድምጽ ሰጥተዋል። 17 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ፒንባን ተጠቅመህ ታውቃለህ?

  • አዎ

  • አይደለም፣ ግን እፈልጋለሁ

  • አይደለም እና አልፈልግም

  • አይ, እሷን አልሰማም

100 ተጠቃሚዎች ድምጽ ሰጥተዋል። 14 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

የትኛውን የፒንባ አገልጋይ ስሪት መሞከር ይፈልጋሉ?

  • ፒንባ_ኤንጂን (mysql ሞተር)

  • pinba2 (mysql ሞተር)

  • ፒንቦርድ (php + mysql)

  • olegfedoseev/pinba-አገልጋይ (ሂድ + OpenTSDB)

  • olegfedoseev/pinba-influxdb (ሂድ + influxdb)

  • ፒንባ አገልጋይ/ፒንባ አገልጋይ (ሂድ + ጠቅታ ቤት)

  • ፒንባ አገልጋይ/ፒንባ አገልጋይ (php + clickhouse)

  • የራሴን ጻፍ

  • ሌላ

39 ተጠቃሚዎች ድምጽ ሰጥተዋል። 47 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ምንጭ: hab.com

አስተያየት ያክሉ