තත්‍ය කාලීනව PHP ස්ක්‍රිප්ට් සංඛ්‍යාලේඛන සහ අධීක්ෂණය. ClickHouse සහ Grafana පින්බාගේ උදව්වට එනවා

pinba_engine සහ pinboard වෙනුවට clickhouse සහ grafana සමඟ pinba භාවිතා කරන්නේ කෙසේදැයි මෙම ලිපියෙන් මම ඔබට කියමි.

PHP ව්‍යාපෘතියක, කාර්ය සාධනය සමඟ සිදුවන්නේ කුමක්ද යන්න තේරුම් ගැනීමට ඇති එකම විශ්වාසදායක ක්‍රමය pinba විය හැකිය. ඇත්ත, පින්බා සාමාන්‍යයෙන් ක්‍රියාත්මක වන්නේ ගැටළු දැනටමත් නිරීක්ෂණය වී ඇති විට සහ "හාරා ගත යුත්තේ කොතැනද" යන්න පැහැදිලි නැති විට පමණි.

මෙම හෝ එම ස්ක්‍රිප්ට් එක තත්පරයකට/විනාඩියකට කී වතාවක් හඳුන්වන්නේ දැයි බොහෝ විට කිසිවෙකුට අදහසක් නොමැති අතර ඔවුන් වඩාත් තාර්කික යැයි පෙනෙන ස්ථාන වලින් පටන් ගෙන “ස්පර්ශයෙන්” ප්‍රශස්ත කිරීමට පටන් ගනී.

සමහරු nginx ලඝු-සටහන් විශ්ලේෂණය කරන අතර අනෙක් අය මන්දගාමී දත්ත සමුදා විමසුම් විශ්ලේෂණය කරයි.

ඇත්ත වශයෙන්ම, පින්බා අතිරික්ත නොවනු ඇත, නමුත් සෑම ව්යාපෘතියකටම එය නොමැති වීමට හේතු කිහිපයක් තිබේ.

තත්‍ය කාලීනව PHP ස්ක්‍රිප්ට් සංඛ්‍යාලේඛන සහ අධීක්ෂණය. ClickHouse සහ Grafana පින්බාගේ උදව්වට එනවා

සහ පළමු හේතුව ස්ථාපනයයි.

පින්බා ක්‍රියාත්මක කිරීමෙන් යම් ආකාරයක “පිටාර” අඩු හෝ වැඩි වශයෙන් ලබා ගැනීම සඳහා, අවසාන මිනිත්තු සඳහා පමණක් නොව, දිගු කාලයක් (දින සිට මාස දක්වා) ප්‍රමිතික දැකීම ඉතා යෝග්‍ය වේ.

මේ සඳහා ඔබට අවශ්‍ය වන්නේ:

  • php සඳහා දිගුව ස්ථාපනය කරන්න (සහ ඔබට nginx සඳහා මොඩියුලයක් අවශ්‍ය විය හැක)
  • mysql සඳහා දිගුව සම්පාදනය කරන්න
  • පින්බෝඩ් ස්ථාපනය කර ක්‍රෝන් වින්‍යාස කරන්න

Pinba ගැන කුඩා තොරතුරු ප්‍රමාණයක් නිසා එය PHP5 මත පමණක් ක්‍රියාත්මක වූ බවත් බොහෝ කලක සිට අතීතයට ගොස් ඇති බවත් බොහෝ දෙනාගේ අදහසයි, නමුත් පසුව අපට පෙනෙන පරිදි එය එසේ නොවේ.

පළමු පියවර සරලම වේ, ඔබ කළ යුත්තේ විධානය ක්‍රියාත්මක කිරීමයි:

apt install php-pinba

මෙම දිගුව php 7.3 දක්වා සහ ඇතුළුව ගබඩාවල ඇති අතර ඔබට කිසිවක් සම්පාදනය කිරීමට අවශ්‍ය නොවේ.

ස්ථාපන විධානය ක්‍රියාත්මක කිරීමෙන් පසු, අපට වහාම ක්‍රියාකාරී දිගුවක් ලැබෙනු ඇති අතර එය ආකෘතියේ එක් එක් ස්ක්‍රිප්ට් (ධාවන කාලය, මතකය, ආදිය) සඳහා ප්‍රමිතික එකතු කර යවයි. protobuf udp හරහා 127.0.0.1:30002 දක්වා.

මෙතෙක් කිසිවකු මෙම UDP පැකට් අල්ලා හෝ සකස් කර නැත, නමුත් මෙය ඔබගේ PHP ස්ක්‍රිප්ට් වල වේගයට හෝ ස්ථායීතාවයට කිසිදු ආකාරයකින් අහිතකර ලෙස බලපාන්නේ නැත.

මෑතක් වන තුරු, මෙම UDP පැකට් අල්ලා ගැනීමට සහ සැකසීමට හැකි එකම යෙදුම විය පින්බා_එන්ජිම. විස්තර "සරල හා සංක්ෂිප්තස්ථාපනය නැවත කියවීමට සහ ගැඹුරින් සොයා බැලීමට ඇති ආශාව අධෛර්යමත් කරයි. කිලෝමීටර්-දිග පරායත්ත ලැයිස්තුවේ පැකේජවල නම් සහ වැඩසටහන් වල නම් සහ ඒවායේ ස්ථාපනය සමඟ තනි පිටු වෙත සබැඳි යන දෙකම අඩංගු වන අතර ඒවාට වෙනත් පරායත්තතා සඳහා තමන්ගේම සබැඳි ඇත. මේ ජරාව සමඟ කටයුතු කිරීමට කිසිවෙකුට වෙලාවක් හෝ උවමනාවක් නැත.

ස්ථාපන ක්‍රියාවලිය පින්බා2 කළේ නැහැ විශේෂයෙන් පහසුයි.

සමහර විට කවදා හෝ විධාන එකක් හෝ දෙකක් සමඟ pinba10 ස්ථාපනය කිරීමට හැකි වනු ඇති අතර එය කරන්නේ කෙසේද යන්න තේරුම් ගැනීමට ද්‍රව්‍ය පොකුරක් කියවීමට අවශ්‍ය නොවනු ඇත, නමුත් දැනට මෙය එසේ නොවේ.

ඔබ pinba_engine ස්ථාපනය කරන්නේ නම්, මෙය සටනෙන් අඩක් පමණි. සියල්ලට පසු, තොරව පින්බෝඩ් ඔබට අවසන් මිනිත්තු කිහිපයේ දත්ත වලට පමණක් සීමා වීමට සිදු වනු ඇත, නැතහොත් ඔබට දත්ත එකතු කිරීමට, ගබඩා කිරීමට සහ දෘශ්‍යමාන කිරීමට සිදු වනු ඇත. පින්බෝඩ් භාවිතා කිරීම තරමක් සරල වීම හොඳය ස්ථාපන.

php හි ඇති සියලුම ප්‍රමිතික දැනටමත් protobuf ආකෘතියෙන් udp port වෙත යවා ඇත්නම් සහ ඔබට අවශ්‍ය වන්නේ ඒවා අල්ලා යම් ආකාරයක ගබඩාවක තැබීමට යෙදුමක් ලිවීම පමණක් නම් එවැනි දුක් විඳින්නේ මන්ද? පෙනෙන විදිහට, මෙම අදහස ඉදිරිපත් කළ සංවර්ධකයින් වහාම ඔවුන්ගේම අදහස් ලිවීමට වාඩි වූ අතර සමහර ඒවා GitHub මත අවසන් විය.

පහත දැක්වෙන්නේ ගබඩාවේ ප්‍රමිතික සුරකින විවෘත මූලාශ්‍ර ව්‍යාපෘති හතරක දළ විශ්ලේෂණයක් වන අතර, මෙම දත්ත පහසුවෙන් ලබා ගත හැකි සහ දෘශ්‍යමාන කළ හැකි, උදාහරණයක් ලෙස, ග්‍රැෆානා භාවිතයෙන්.

olegfedoseev/pinba-server (නොවැම්බර් 2017)

udp සේවාදායකය OpenTSDB වෙත ප්‍රමිතික සුරකියි. සමහර විට ඔබ දැනටමත් ඔබේ ව්‍යාපෘතියේ OpenTSDB භාවිතා කරන්නේ නම්, මෙම විසඳුම ඔබට ගැලපේ, එසේ නොමැතිනම් මම එය සම්මත කිරීමට නිර්දේශ කරමි.

olegfedoseev/pinba-influxdb (ජුනි 2018)

udp server on go, එකෙන්ම habrowser, මෙවර ප්‍රමිතික InfluxDB හි ගබඩා කරයි. බොහෝ ව්‍යාපෘති දැනටමත් නිරීක්ෂණය සඳහා InfluxDB භාවිතා කරයි, එබැවින් මෙම විසඳුම ඔවුන් සඳහා පරිපූර්ණ විය හැකිය.

වාසි:

  • InfluxDB එය ඉඩ ලැබුණු ප්‍රමිතික එකතු කරන්න, සහ නියමිත වේලාවට පසුව මුල් පිටපත මකන්න.

එය:

ClickHouse-Ninja/Proton (ජනවාරි 2019)

ක්ලික්හවුස් හි ප්‍රමිතික සුරකින udp සේවාදායකය යන ගමන්. මේ මගේ මිතුරාගේ විසඳුමයි. දැන හැඳින ගත්තට පස්සෙ තමයි තීරණය කළේ පින්බුයි ක්ලික් හවුස් එකයි ගන්න කාලෙ හරි කියලා.

වාසි:

  • ක්ලික්හවුස් එවැනි කාර්යයන් සඳහා වඩාත් සුදුසු ය; එය ඔබට දත්ත සංකෝචනය කිරීමට ඉඩ සලසයි, එමඟින් ඔබට සියලු අමු දත්ත එකතු කිරීමකින් තොරව ගබඩා කළ හැකිය.
  • අවශ්‍ය නම්, ඔබට පහසුවෙන් ලැබෙන ප්‍රමිතික එකතු කළ හැක
  • Grafana සඳහා සූදානම් කළ සැකිල්ල
  • ටයිමර් මත තොරතුරු සුරකියි

එය:

  • මාරාන්තික දෝෂය
  • ඔබට දත්ත සමුදායේ සහ වගු වල නම, සේවාදායකයේ ලිපිනය සහ වරාය වින්‍යාසගත කළ හැකි වින්‍යාසයක් නොමැත.
  • අමු දත්ත ගබඩා කිරීමේදී, පිටු සහ වසම් ලිපින ගබඩා කිරීම සඳහා සහායක ශබ්ද කෝෂ වගුවක් භාවිතා කරයි, එය පසුකාලීන විමසුම් සංකීර්ණ කරයි
  • පළමු අඩුවෙන් අනුගමනය කරන වෙනත් කුඩා දේවල්

pinba-server/pinba-server (අප්‍රේල් 2019)

ClickHouse හි ප්‍රමිතික සුරකින php හි udp සේවාදායකය. මෙය මගේ විසඳුමයි, එය pinba, ClickHouse සහ protobuf දැනගැනීමේ ප්‍රතිඵලයකි. මම මේ මුළු පොකුරම වර්ග කරන අතරතුර, මම “සංකල්පයේ සාක්ෂියක්” ලිව්වෙමි, එය මට අනපේක්ෂිත ලෙස සැලකිය යුතු සම්පත් පරිභෝජනය නොකළේය (30 MB RAM සහ ප්‍රොසෙසර් කෝර් අටෙන් එකකින් 1% ට අඩු), එබැවින් මම එය ජනතාව සමඟ බෙදා ගැනීමට තීරණය කළේය.

වාසි කලින් විසඳුමට සමානයි, මම මුල් pinba_engine වෙතින් සුපුරුදු නම් ද භාවිතා කළෙමි. විවිධ වගු වල ප්‍රමිතික සුරැකීම සඳහා එකවර පින්බේස් සේවාදායක අවස්ථා කිහිපයක් දියත් කිරීමට ඔබට ඉඩ සලසන වින්‍යාසයක් ද මම එක් කළෙමි - ඔබට php වෙතින් පමණක් නොව nginx වෙතින් ද දත්ත රැස් කිරීමට අවශ්‍ය නම් මෙය ප්‍රයෝජනවත් වේ.
අවාසි - “මාරාන්තික දෝෂය” සහ ඔබට පෞද්ගලිකව නොගැලපෙන කුඩා දේවල්, නමුත් මගේ විසඳුම “සෙරෙප්පුවක් තරම් සරල” වන අතර කේත පේළි 100 කින් පමණ සමන්විත වේ, එබැවින් ඕනෑම PHP සංවර්ධකයෙකුට ඔහු අකමැති දේ වෙනස් කළ හැකිය. මිනිත්තු කිහිපයකින්.

එය ක්රියා කරන ආකාරය

UDP port 30002 ට සවන් දී ඇත. එන සියලුම පැකට් protobuf යෝජනා ක්‍රමයට අනුව විකේතනය කර එකතු කර ඇත. මිනිත්තුවකට වරක්, pinba.requests වගුවට ක්ලික් හවුස් තුළට පැකට්ටුවක් ඇතුල් කරනු ලැබේ. (සියලු පරාමිති වින්‍යාස කර ඇත config)

ක්ලික්හවුස් ගැන ටිකක්

Clickhouse විවිධ දත්ත ගබඩා කිරීමේ එන්ජින් සඳහා සහය දක්වයි. බහුලව භාවිතා වන එකක් වන්නේ MergeTree ය.

යම් අවස්ථාවක දී ඔබ සියලු කාලය සඳහා එකතු කළ දත්ත ගබඩා කිරීමට තීරණය කළහොත් සහ අවසාන දත්ත සඳහා පමණක් අමු දත්ත ගබඩා කිරීමට තීරණය කරන්නේ නම්, ඔබට කණ්ඩායම්කරණය සමඟ ද්‍රව්‍යමය දසුනක් නිර්මාණය කළ හැකි අතර, ප්‍රධාන pinba.requests වගුව වරින් වර පිරිසිදු කළ හැකි අතර, සියලු දත්ත පවතිනු ඇත. ද්රව්යමය දැක්ම. එපමනක් නොව, pinba.requests වගුව නිර්මාණය කිරීමේදී, ඔබට "එන්ජිම = ශුන්‍ය" සඳහන් කළ හැකිය, එවිට අමු දත්ත කිසිසේත් තැටියට සුරැකෙන්නේ නැත, ඒ සමඟම එය තවමත් ද්‍රව්‍යකරණය වූ දර්ශනයෙන් අවසන් වන අතර එකතු කර සුරැකෙනු ඇත. . මම මෙම යෝජනා ක්‍රමය nginx ප්‍රමිතික සඳහා භාවිතා කරමි, මන්ද nginx හි මට php වලට වඩා 50 ගුණයක ඉල්ලීම් තිබේ.

ඉතින්, ඔබ බොහෝ දුර පැමිණ ඇති අතර මම ඔබව අතරමග දමා යාමට කැමති නැත, එබැවින් පහත දැක්වෙන්නේ මගේ විසඳුම ස්ථාපනය කිරීම සහ වින්‍යාස කිරීම සහ ඔබට අවශ්‍ය සියල්ල මෙන්ම නැව් එකකට වඩා ඇති කර ඇති අන්තරායන් පිළිබඳ සවිස්තරාත්මක විස්තරයකි. බිඳ වැටීමට. Ubuntu 18.04 LTS සහ Centos 7 සඳහා සම්පූර්ණ ස්ථාපන ක්‍රියාවලිය විස්තර කර ඇත; අනෙකුත් බෙදාහැරීම් සහ අනුවාද මත ක්‍රියාවලිය තරමක් වෙනස් විය හැක.

ස්ථාපනය

මම අවශ්‍ය සියලුම විධාන ඇතුළත් කරමි ඩොකර්ෆයිල් උපදෙස් ප්රතිනිෂ්පාදනය පහසු කිරීම සඳහා. අන්තරායන් පමණක් පහත විස්තර කෙරේ.

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

clickhouse

ස්ථාපනය අතරතුර, ක්ලික්හවුස් පෙරනිමි පරිශීලකයා සඳහා මුරපදයක් සැකසීමට ඔබෙන් අසයි. පෙරනිමියෙන්, මෙම පරිශීලකයාට සියලුම IP වලින් ප්‍රවේශ විය හැකිය, එබැවින් ඔබට ඔබගේ සේවාදායකයේ ෆයර්වෝලයක් නොමැති නම්, ඒ සඳහා මුරපදයක් සැකසීමට වග බලා ගන්න. මෙය /etc/clickhouse-server/users.xml ගොනුව තුළ ස්ථාපනය කිරීමෙන් පසුවද සිදු කළ හැක.

ක්ලික්හවුස් 9000 ඇතුළුව වරායන් කිහිපයක් භාවිතා කරන බව ද සඳහන් කිරීම වටී. මෙම වරාය සමහර බෙදාහැරීම්වල php-fpm සඳහා ද භාවිතා වේ (උදාහරණයක් ලෙස, centos). ඔබ දැනටමත් මෙම වරාය භාවිතා කරන්නේ නම්, ඔබට එය /etc/clickhouse-server/config.xml ගොනුව තුළ වෙනත් එකක් වෙත වෙනස් කළ හැක.

clickhouse ප්ලගිනය සමඟ grafana

Grafana ස්ථාපනය කිරීමෙන් පසු, පිවිසුම් පරිපාලක සහ මුරපදය පරිපාලක භාවිතා කරන්න. ඔබ පළමු වරට ලොග් වූ විට, නව මුරපදයක් සැකසීමට Grafana ඔබෙන් අසයි.

ඊළඟට, “+” -> ආයාත මෙනුව වෙත ගොස් ආනයනය සඳහා උපකරණ පුවරු අංකය සඳහන් කරන්න 10011. මම මෙම උපකරණ පුවරුව සකස් කර උඩුගත කළේ ඔබට එය නැවත කිරීමට අවශ්‍ය නොවන පරිදි ය.

තෙවන පාර්ශවීය ප්ලගිනයක් හරහා ක්ලික්හවුස් සමඟ වැඩ කිරීමට Grafana සහාය දක්වයි, නමුත් Grafana හට තෙවන පාර්ශවීය ප්ලගීන සඳහා ඇඟවීම් නොමැත (වසර කිහිපයක් තිස්සේ මේ සඳහා ටිකට් පතක් ඇත).

පින්බා-සේවාදායකය

protobuf සහ libevent ස්ථාපනය කිරීම අත්‍යවශ්‍ය නොවේ, නමුත් pinba-server කාර්ය සාධනය වැඩි දියුණු කරයි. ඔබ /opt හැර වෙනත් ෆෝල්ඩරයක pinba-server ස්ථාපනය කරන්නේ නම්, ඔබට නිවැරදි කිරීමටද අවශ්‍ය වනු ඇත systemd ස්ක්‍රිප්ට් ගොනුව.

nginx සඳහා pinba මොඩියුලය

මොඩියුලයක් සම්පාදනය කිරීම සඳහා, ඔබට ඔබේ සේවාදායකයේ දැනටමත් ස්ථාපනය කර ඇති nginx හි එකම අනුවාදයේ ප්‍රභව කේත මෙන්ම එකම සම්පාදන විකල්ප අවශ්‍ය වේ, එසේ නොමැතිනම් ගොඩනැගීම සාර්ථක වනු ඇත, නමුත් මොඩියුලය සම්බන්ධ කිරීමේදී දෝෂයක් ඇති වේ. "මොඩියුලය ද්විමය අනුකූල නොවේ." nginx -V විධානය භාවිතයෙන් සම්පාදන විකල්පයන් නැරඹිය හැක

ජීවිතය කඩාකප්පල් කරයි

මගේ සියලුම වෙබ් අඩවි ක්‍රියා කරන්නේ https වල පමණි. ක්‍රම ක්ෂේත්‍රය අර්ථ විරහිත වේ, එබැවින් මම එය වෙබ්/කොන්සෝලය වෙන් කිරීමට භාවිතා කරමි.

මම භාවිතා කරන වෙබයෙන් ප්‍රවේශ විය හැකි ස්ක්‍රිප්ට් වල:

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

සහ කොන්සෝල ස්ක්‍රිප්ට් වල (උදාහරණයක් ලෙස, ක්‍රෝන් ස්ක්‍රිප්ට්):

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

ග්‍රැෆානාහි මගේ උපකරණ පුවරුවේ සංඛ්‍යාලේඛන වෙන වෙනම බැලීම සඳහා වෙබ්/කොන්සෝල ස්විචයක් ඇත.

ඔබට ඔබගේ ටැග් Pinba වෙත යැවිය හැක, උදාහරණයක් ලෙස:

pinba_tag_set('country', $countryCode);

එච්චරයි.

කරුණාකර ලිපියට පහළින් ඇති ඡන්ද විමසීම්වලට පිළිතුරු දෙන්න.

සුපුරුදු පරිදි, මම හබ්ර් සහ සමාජ ජාල වල පුද්ගලික පණිවිඩ හරහා උපදෙස් හෝ උදව් නොකරන බවට මම ඔබට අනතුරු අඟවමි.

Github හි ටිකට් පතක් සාදන්න.

ඒවගේම ලයික් දාලා සහයෝගය දෙන්න ඉංග්රීසි අනුවාදය මෙම ලිපිය reddit මත.

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

ඔබ සේවාදායකයේ භාවිතා කරන OS එක කුමක්ද?

  • උබුන්ටු

  • CentOS

  • ඩේබියන්

  • ජෙන්ටූ

  • රතු තොප්පිය

  • Fedora

  • OpenSUSE

  • ස්විට්සර්ලන්තය

  • යුනික්ස්

  • හි Windows සඳහා

  • අනෙක

පරිශීලකයින් 114 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 11 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

ඔබ සේවාදායකයේ භාවිතා කරන්නේ කුමන php අනුවාදයද?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • අනෙක

පරිශීලකයින් 105 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 17 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

ඔබ කවදා හෝ පින්බා භාවිතා කර තිබේද?

  • ඔව්

  • නැහැ, නමුත් මම කැමතියි

  • නැහැ සහ මට අවශ්‍ය නැහැ

  • නැත සහ ඇය ගැන අසා නැත

පරිශීලකයින් 100 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 14 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

ඔබ උත්සාහ කිරීමට කැමති Pinba සේවාදායකයේ කුමන අනුවාදයද?

  • pinba_engine (mysql එන්ජිම)

  • pinba2 (mysql එන්ජිම)

  • පින්බෝඩ් (php + mysql)

  • olegfedoseev/pinba-server (go + OpenTSDB)

  • olegfedoseev/pinba-influxdb (go + influxdb)

  • pinba-server/pinba-server (go + clickhouse)

  • pinba-server/pinba-server (php + clickhouse)

  • මම මගේම ලියන්නම්

  • අනෙක

පරිශීලකයින් 39 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 47 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න