حقيقي وقت ۾ PHP اسڪرپٽس جي شماريات ۽ نگراني. ڪلڪ هائوس ۽ گرافانا پنبا جي مدد لاءِ ايندا آهن

هن آرٽيڪل ۾ آئون توهان کي ٻڌائيندس ته پنبا کي ڪيئن استعمال ڪجي ڪلڪ هائوس ۽ گرافانا سان pinba_engine ۽ pinboard جي بدران.

PHP پروجيڪٽ تي، پنبا شايد اهو سمجهڻ جو واحد قابل اعتماد طريقو آهي جيڪو ڪارڪردگي سان ٿي رهيو آهي. سچ پچ، پنبا عام طور تي صرف تڏهن لاڳو ڪيو ويندو آهي جڏهن مسئلا اڳ ۾ ئي مشاهدو ڪيا ويا آهن ۽ اهو واضح ناهي ته "ڪٿي کڏڻ."

گهڻو ڪري ڪنهن کي به اها خبر نه هوندي آهي ته في سيڪنڊ/ منٽ ۾ ڪيترا ڀيرا هي يا اهو اسڪرپٽ سڏبو آهي ۽ اهي ”ٽچ ذريعي“ کي بهتر ڪرڻ شروع ڪندا آهن، انهن هنڌن کان شروع ٿي جيڪي وڌيڪ منطقي نظر اچن ٿا.

ڪجھ nginx لاگز جو تجزيو ڪن ٿا، جڏهن ته ٻيا سست ڊيٽابيس سوالن جو تجزيو ڪن ٿا.

يقينا، پنبا غير ضروري نه هوندو، پر اتي ڪيترائي سبب آهن ڇو ته هر منصوبي ۾ اهو ناهي.

حقيقي وقت ۾ PHP اسڪرپٽس جي شماريات ۽ نگراني. ڪلڪ هائوس ۽ گرافانا پنبا جي مدد لاءِ ايندا آهن

۽ پهريون سبب تنصيب آهي.

پنبا تي عمل ڪرڻ کان ڪجهه قسم جي "خارج" کي وڌيڪ يا گهٽ حاصل ڪرڻ لاء، اهو تمام ضروري آهي ته ميٽرڪ ڏسڻ لاء نه رڳو آخري منٽن لاء، پر وقت جي ڊگهي عرصي تائين (ڏينهن کان مهينن تائين).

هن کي ڪرڻ لاء، توهان کي گهرجي:

  • php لاءِ ايڪسٽينشن انسٽال ڪريو (۽ شايد توھان nginx لاءِ ماڊل چاھيو ٿا)
  • mysql لاءِ توسيع گڏ ڪريو
  • پن بورڊ کي انسٽال ڪريو ۽ ڪرون کي ترتيب ڏيو

پنبا جي باري ۾ معلومات جي ٿوري مقدار جي ڪري، ڪيترن ئي ماڻهن کي اهو تاثر آهي ته اهو صرف PHP5 تي ڪم ڪري ٿو ۽ گهڻو وقت ماضي جي شيء آهي، پر جيئن اسان بعد ۾ ڏسنداسين، اهو معاملو ناهي.

پهريون قدم تمام سادو آهي، توهان کي صرف حڪم هلائڻو آهي:

apt install php-pinba

هي واڌارو php 7.3 تائين ۽ ان ۾ شامل ڪيل مخزنن ۾ موجود آهي ۽ توهان کي ڪا به شيءِ گڏ ڪرڻ جي ضرورت ناهي.

انسٽاليشن ڪمانڊ تي عمل ڪرڻ کان پوء، اسان کي فوري طور تي هڪ ڪم ڪندڙ واڌارو ملي ٿو جيڪو هر اسڪرپٽ لاء ميٽرڪس گڏ ڪري ٿو ۽ موڪلي ٿو (هلندڙ وقت، ميموري، وغيره) فارميٽ ۾. protobuf udp ذريعي 127.0.0.1:30002 تائين.

هينئر تائين ڪنهن به هنن UDP پيڪٽس کي پڪڙي يا پروسيس نه ڪيو آهي، پر اهو ڪنهن به طرح سان توهان جي PHP اسڪرپٽ جي رفتار يا استحڪام تي منفي اثر نٿو ڪري.

تازو تائين، صرف ايپليڪيشن جيڪا پڪڙي سگهي ٿي ۽ پروسيس ڪري سگهي ٿي انهن UDP پيڪن کي pinba_engine. وضاحت "سادو ۽ مختصرانسٽاليشن ڪڏهن به پڙهڻ جي خواهش کي حوصلا افزائي ڪري ٿي ۽ ان ۾ ٻيهر غور ڪريو. انحصار جي ڪلوميٽر-ڊگهي لسٽن ۾ ٻنهي پيڪيجز جا نالا ۽ پروگرامن جا نالا ۽ انفرادي صفحن جي لنڪ شامل آهن انهن جي تنصيب سان، ۽ انهن جا پنهنجا لنڪ آهن ٻين انحصار سان. ڪنهن وٽ به وقت يا خواهش نه آهي ته هن گند کي منهن ڏئي.

تنصيب وارو عمل پنبا 2 نه ڪيو خاص طور تي آسان.

شايد ڪنهن ڏينهن اهو ممڪن هوندو ته هڪ يا ٻه حڪمن سان pinba10 کي انسٽال ڪرڻ ۽ ان کي سمجهڻ لاءِ مواد جو هڪ گروپ پڙهڻ نه گهرجي، پر في الحال اهو معاملو ناهي.

جيڪڏهن توهان انسٽال ڪريو ٿا pinba_engine، پوء اهو صرف اڌ جنگ آهي. سڀ کان پوء، بغير پن بورڊ توھان کي پاڻ کي صرف آخري چند منٽن جي ڊيٽا تائين محدود ڪرڻو پوندو، يا توھان کي پاڻ کي ڊيٽا کي گڏ ڪرڻ، ذخيرو ڪرڻ ۽ ان کي ڏسڻو پوندو. اهو سٺو آهي ته پن بورڊ استعمال ڪرڻ بلڪل آسان آهي انسٽاليشن.

اهو لڳي ٿو، اهڙي مصيبت ڇو جيڪڏهن php کان سڀئي ميٽرڪس اڳ ۾ ئي پروٽوبف فارميٽ ۾ udp پورٽ ڏانهن موڪليا ويا آهن ۽ توهان کي صرف هڪ ايپليڪيشن لکڻ جي ضرورت آهي جيڪا انهن کي پڪڙي ۽ ڪنهن قسم جي اسٽوريج ۾ رکي؟ ظاهر آهي، اهي ڊولپر جيڪي هن خيال سان آيا هئا فوري طور تي پنهنجن خيالن کي لکڻ لاء، جن مان ڪجهه ختم ٿي ويا GitHub.

هيٺ ڏنل چار اوپن سورس پروجيڪٽ جو هڪ جائزو آهي جيڪي اسٽوريج ۾ ميٽرڪ محفوظ ڪن ٿا، جن مان هي ڊيٽا آساني سان حاصل ڪري سگهجي ٿو ۽ تصور ڪري سگهجي ٿو، مثال طور، گرافانا استعمال ڪندي.

olegfedoseev/pinba-server (نومبر 2017)

udp سرور تي وڃو جيڪو ميٽرڪ کي OpenTSDB ۾ محفوظ ڪري ٿو. ٿي سگهي ٿو جيڪڏهن توهان اڳ ۾ ئي استعمال ڪري رهيا آهيو OpenTSDB توهان جي پروجيڪٽ ۾، پوء اهو حل توهان لاء مناسب ٿيندو، ٻي صورت ۾ آئون ان کي پاس ڪرڻ جي صلاح ڏيان ٿو.

olegfedoseev/pinba-influxdb (جون 2018)

udp سرور تي وڃڻ، ساڳئي کان هيبروزر، جيڪو هن ڀيري انفلڪس ڊي بي ۾ ميٽرڪ کي محفوظ ڪري ٿو. ڪيترائي منصوبا اڳ ۾ ئي استعمال ڪري رهيا آهن InfluxDB مانيٽرنگ لاءِ، تنهن ڪري اهو حل انهن لاءِ ڀرپور ٿي سگهي ٿو.

پرو:

ڪن

ڪلڪ هائوس-Ninja/Proton (جنوري 2019)

udp سرور وڃڻ تي، جيڪو ڪلڪ هائوس ۾ ميٽرڪ محفوظ ڪري ٿو. هي آهي منهنجي دوست جو حل. ان کان واقف ٿيڻ کان پوءِ مون فيصلو ڪيو ته اهو وقت آهي پنبو ۽ ڪلڪ هائوس تي.

پرو:

  • ڪلڪ هاؤس اهڙن ڪمن لاءِ مثالي آهي؛ اهو توهان کي اجازت ڏئي ٿو ته ڊيٽا کي ايتري قدر دٻائڻ جي ته توهان تمام خام ڊيٽا کي گڏ ڪري سگهو ٿا بغير گڏ ڪرڻ جي
  • جيڪڏهن گهربل هجي، توهان آساني سان نتيجن جي ماپ کي گڏ ڪري سگهو ٿا
  • grafana لاء تيار ٺهيل ٽيمپليٽ
  • ٽائمرز تي معلومات محفوظ ڪري ٿو

ڪن

  • موتمار نقص
  • هتي ڪا به ترتيب نه آهي جنهن ۾ توهان ڊيٽابيس ۽ ٽيبل جو نالو، سرور جو پتو ۽ بندرگاهه ترتيب ڏئي سگهو ٿا.
  • جڏهن خام ڊيٽا کي محفوظ ڪرڻ لاء، هڪ معاون ڊڪشنري ٽيبل استعمال ڪيو ويندو آهي محفوظ ڪرڻ لاءِ صفحي ۽ ڊومين ايڊريس، جيڪو بعد ۾ سوالن کي پيچيده ڪري ٿو.
  • ٻيون ننڍيون شيون جيڪي پهرين مائنس کان پون ٿيون

پنبا-سرور/پنبا-سرور (اپريل 2019)

php ۾ udp سرور، جيڪو ڪلڪ هائوس ۾ ميٽرڪ محفوظ ڪري ٿو. هي منهنجو حل آهي، جيڪو حاصل ڪرڻ جو نتيجو آهي pinba، ClickHouse ۽ protobuf. جڏهن آئون هن سڄي گروپ کي ترتيب ڏئي رهيو هوس، مون هڪ "تصور جو ثبوت" لکيو، جيڪو غير متوقع طور تي مون لاء، اهم وسيلا استعمال نه ڪيو (30 ايم بي ريم ۽ اٺ پروسيسر ڪور مان 1٪ کان گهٽ)، تنهنڪري مان. عوام سان حصيداري ڪرڻ جو فيصلو ڪيو.

فائدا اڳئين حل وانگر ساڳيا آهن، مون پڻ استعمال ڪيو معمولي نالا اصل pinba_engine کان. مون هڪ ترتيب پڻ شامل ڪئي جيڪا توهان کي اجازت ڏئي ٿي ڪيترن ئي پن بيس سرور مثالن کي هڪ ڀيرو شروع ڪرڻ لاءِ مختلف جدولن ۾ ميٽرڪس کي محفوظ ڪرڻ لاءِ - اهو ڪارائتو آهي جيڪڏهن توهان ڊيٽا گڏ ڪرڻ چاهيو ٿا نه صرف php کان ، پر nginx کان پڻ.
نقصانات - ”موت نقص“ ۽ اهي ننڍيون شيون جيڪي توهان کي ذاتي طور تي مناسب نه هونديون، پر منهنجو حل ”چپڻ جيترو سادو“ آهي ۽ صرف 100 لائنن جي ڪوڊ تي مشتمل آهي، تنهن ڪري ڪو به PHP ڊولپر تبديل ڪري سگهي ٿو جيڪو هو پسند نٿو ڪري. چند منٽن ۾.

ڪيئن اهو ڪم

UDP پورٽ 30002 ٻڌايل آهي. سڀ ايندڙ پيڪيٽس پروٽوبوف اسڪيم جي مطابق ڊيڪوڊ ڪيا ويا آهن ۽ مجموعي طور تي. هڪ منٽ ۾ هڪ ڀيرو، هڪ پيڪيٽ ڪلڪ هائوس ۾ داخل ڪيو ويو آهي pinba.requests ٽيبل ۾. (سڀ پيرا ميٽرز ۾ ترتيب ڏنل آھن ترتيب)

ڪلڪ هائوس بابت ٿورڙو

Clickhouse مختلف ڊيٽا اسٽوريج انجڻ کي سپورٽ ڪري ٿو. سڀ کان وڌيڪ استعمال ٿيل آهي MergeTree.

جيڪڏهن ڪنهن نقطي تي توهان مجموعي ڊيٽا کي هر وقت، ۽ خام ڊيٽا صرف آخري وقت لاءِ ذخيرو ڪرڻ جو فيصلو ڪيو، ته پوءِ توهان گروپنگ سان هڪ مادي منظر ٺاهي سگهو ٿا، ۽ وقتي طور تي مکيه pinba.requests ٽيبل کي صاف ڪري سگهو ٿا، جڏهن ته سمورو ڊيٽا ان ۾ رهندو. مادي ڏسڻ. ان کان علاوه، جڏهن pinba.requests ٽيبل ٺاهي، توهان وضاحت ڪري سگھو ٿا "انجن = Null"، پوء خام ڊيٽا ڊسڪ ۾ محفوظ نه ڪيو ويندو، ۽ ساڳئي وقت اهو اڃا تائين مادي ڏسڻ ۾ ختم ٿي ويندو ۽ مجموعي طور تي محفوظ ڪيو ويندو. . مان هن اسڪيم کي استعمال ڪريان ٿو نينڪس ميٽرڪس لاءِ، ڇاڪاڻ ته نينگڪس تي مون وٽ پي ايڇ پي جي ڀيٽ ۾ 50 ڀيرا وڌيڪ درخواستون آهن.

تنهن ڪري، توهان هڪ ڊگهو رستو وٺي آيا آهيو ۽ مان توهان کي اڌ رستي تي ڇڏڻ نه چاهيندس، تنهنڪري هيٺ ڏنل تفصيلي وضاحت آهي منهنجي حل جي تنصيب ۽ ترتيب ۽ هر شيء جيڪا توهان کي گهربل آهي، انهي سان گڏ نقصانات جيڪي هڪ کان وڌيڪ جهازن جو سبب بڻيا آهن. حادثو ٿيڻ. پوري تنصيب واري عمل کي Ubuntu 18.04 LTS ۽ Centos 7 لاءِ بيان ڪيو ويو آهي؛ اهو عمل ٻين تقسيم ۽ نسخن تي ٿورو مختلف ٿي سگهي ٿو.

تنصيب

مون سڀ ضروري حڪم داخل ڪيا Dockerfile هدايتن جي ٻيهر پيداوار کي آسان ڪرڻ لاء. صرف نقصانن کي هيٺ بيان ڪيو ويندو.

php-pinba

انسٽاليشن کان پوء، پڪ ڪريو ته /etc/php/7.2/fpm/conf.d/20-pinba.ini فائل ۾ توهان سڀني اختيارن کي ناپسند ڪيو آهي. ڪجھ تقسيم تي (مثال طور centos) اھي تبصرا ٿي سگھن ٿا.

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

ڪلڪ هائوس

انسٽاليشن دوران، ڪلڪ هائوس توهان کان پڇي ٿو ته ڊفالٽ صارف لاء پاسورڊ سيٽ ڪريو. ڊفالٽ طور، هي صارف سڀني IPs مان رسائي لائق آهي، تنهنڪري جيڪڏهن توهان وٽ توهان جي سرور تي فائر وال نه آهي، ان لاء پاسورڊ قائم ڪرڻ جي پڪ ڪريو. اهو پڻ /etc/clickhouse-server/users.xml فائل ۾ انسٽاليشن کان پوء ٿي سگهي ٿو.

اهو پڻ قابل ذڪر آهي ته ڪلڪ هاؤس ڪيترن ئي بندرگاهن کي استعمال ڪري ٿو، جن ۾ 9000 شامل آهن. هي پورٽ پڻ استعمال ڪيو ويندو آهي php-fpm لاء ڪجهه تقسيم ۾ (مثال طور، سينٽوس). جيڪڏهن توهان اڳ ۾ ئي هي بندرگاهه استعمال ڪيو ٿا، ته توهان ان کي تبديل ڪري سگهو ٿا /etc/clickhouse-server/config.xml فائل ۾.

ڪلڪ هائوس پلگ ان سان گرافانا

Grafana انسٽال ڪرڻ کان پوء، لاگ ان منتظم ۽ پاسورڊ منتظم استعمال ڪريو. جڏهن توهان پهريون ڀيرو لاگ ان ٿيندا آهيو، گرافانا توهان کي نئون پاسورڊ سيٽ ڪرڻ لاءِ چوندو.

اڳيون، وڃو "+" -> درآمد مينيو ۽ ظاهر ڪريو ڊيش بورڊ نمبر درآمد لاءِ 10011. مون هن ڊيش بورڊ کي تيار ڪيو ۽ اپلوڊ ڪيو ته جيئن توهان کي اهو ٻيهر نه ڪرڻو پوي.

گرافانا ٽئين پارٽي پلگ ان ذريعي ڪلڪ هائوس سان ڪم ڪرڻ جي حمايت ڪري ٿو، پر گرافانا وٽ ٽئين پارٽي پلگ ان لاءِ الرٽ نه آهن (ڪيترن ئي سالن کان هن لاءِ ٽڪيٽ آهي).

پنبا-سرور

پروٽوبف ۽ ليبيونٽ کي انسٽال ڪرڻ اختياري آهي، پر پنبا-سرور جي ڪارڪردگي کي بهتر بڻائي ٿو. جيڪڏھن توھان پنبا-سرور /opt کان سواءِ فولڊر ۾ انسٽال ڪريو ٿا، ته پوءِ توھان کي به درست ڪرڻ جي ضرورت پوندي systemd اسڪرپٽ فائل.

nginx لاء پنبا ماڊل

ماڊل کي گڏ ڪرڻ لاءِ، توھان کي ضرورت آھي nginx جي ساڳي ورزن جا سورس ڪوڊ جيڪي توھان جي سرور تي اڳ ۾ ئي نصب ٿيل آھن، ۽ گڏوگڏ ساڳيو ڪمپيليشن آپشنز، ٻي صورت ۾ تعمير ڪامياب ٿي ويندي، پر ماڊل کي ڳنڍڻ وقت، ھڪڙي غلطي اڇلائي ويندي. "ماڊيول بائنري مطابقت نه آهي." nginx -V ڪمانڊ استعمال ڪندي تاليف جا اختيار ڏسي سگھجن ٿا

زندگي sڪي ٿي

منهنجون سڀئي سائيٽون صرف https تي ڪم ڪن ٿيون. اسڪيما فيلڊ بي معني ٿي وڃي ٿي، تنهنڪري مان ان کي استعمال ڪريان ٿو الڳ ويب / ڪنسول.

اسڪرپٽ ۾ جيڪي ويب مان رسائي لائق آهن آئون استعمال ڪريان ٿو:

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

۽ ڪنسول اسڪرپٽ ۾ (مثال طور، ڪرون اسڪرپٽ):

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

گرافانا ۾ منهنجي ڊيش بورڊ ۾ الڳ الڳ انگ اکر ڏسڻ لاءِ هڪ ويب/ڪنسول سوئچ آهي.

توھان پڻ پنھنجي ٽيگ پنبا ڏانھن موڪلي سگھو ٿا، مثال طور:

pinba_tag_set('country', $countryCode);

اهو ئي سڀ ڪجهه آهي.

مھرباني ڪري آرٽيڪل ھيٺ ڏنل ووٽن جو جواب ڏيو.

هميشه وانگر، مان توهان کي ڊيڄاريان ٿو ته آئون ذاتي پيغامن ذريعي هيبر ۽ سماجي نيٽ ورڪن ذريعي مشورو يا مدد نه ڪندس.

Github تي هڪ ٽڪيٽ ٺاهيو.

پسند ڪرڻ سان گڏ سپورٽ پڻ ڪندا انگريزي نسخو هي آرٽيڪل reddit تي.

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

توهان سرور تي ڪهڙي OS استعمال ڪري رهيا آهيو؟

  • Ubuntu

  • CentOS

  • ديبين

  • گروسو

  • ڳاڙهو Hat Hat

  • بيدل

  • OpenSUSE

  • ايس اي او

  • يونڪس

  • ونڊوز

  • ٻيو

114 صارفين ووٽ ڏنو. 11 استعمال ڪندڙن کي روڪيو ويو.

توهان سرور تي php جو ڪهڙو نسخو استعمال ڪري رهيا آهيو؟

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • ٻيو

105 صارفين ووٽ ڏنو. 17 استعمال ڪندڙن کي روڪيو ويو.

ڇا توهان ڪڏهن پنبا استعمال ڪيو آهي؟

  • ها

  • نه، پر مان چاهيان ٿو

  • نه ۽ مان نه چاهيندس

  • نه ۽ هن جي باري ۾ نه ٻڌو آهي

100 صارفين ووٽ ڏنو. 14 استعمال ڪندڙن کي روڪيو ويو.

پنبا سرور جو ڪهڙو نسخو توهان ڪوشش ڪرڻ چاهيندا؟

  • 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

تبصرو شامل ڪريو