حقیقی وقت میں پی ایچ پی اسکرپٹ کے اعداد و شمار اور نگرانی۔ کلک ہاؤس اور گرافانا پنبہ کی مدد کے لیے آتے ہیں۔

اس آرٹیکل میں میں آپ کو بتاؤں گا کہ pinba_engine اور pinboard کے بجائے کلک ہاؤس اور گرافانا کے ساتھ پنبا کا استعمال کیسے کریں۔

پی ایچ پی پروجیکٹ پر، کارکردگی کے ساتھ کیا ہو رہا ہے اسے سمجھنے کا شاید واحد قابل اعتماد طریقہ پنبا ہے۔ سچ ہے، پنبا کو عام طور پر صرف اس وقت لاگو کیا جاتا ہے جب مسائل پہلے ہی دیکھے جاتے ہیں اور یہ واضح نہیں ہوتا ہے کہ "کہاں کھودنا ہے۔"

اکثر کسی کو اندازہ نہیں ہوتا ہے کہ فی سیکنڈ/منٹ میں کتنی بار اس یا اس اسکرپٹ کو کال کی جاتی ہے اور وہ ان جگہوں سے شروع کرتے ہوئے "بذریعہ ٹچ" کو بہتر بنانا شروع کر دیتے ہیں جو زیادہ منطقی معلوم ہوتے ہیں۔

کچھ nginx لاگز کا تجزیہ کرتے ہیں، جبکہ دوسرے سست ڈیٹا بیس کے سوالات کا تجزیہ کرتے ہیں۔

بلاشبہ، پنبا ضرورت سے زیادہ نہیں ہوگا، لیکن ہر پروجیکٹ میں یہ نہ ہونے کی کئی وجوہات ہیں۔

حقیقی وقت میں پی ایچ پی اسکرپٹ کے اعداد و شمار اور نگرانی۔ کلک ہاؤس اور گرافانا پنبہ کی مدد کے لیے آتے ہیں۔

اور پہلی وجہ تنصیب ہے۔

پنبا کے نفاذ سے کم و بیش کسی قسم کا "ایگزاسٹ" حاصل کرنے کے لیے، نہ صرف آخری منٹوں کے لیے، بلکہ ایک طویل عرصے تک (دنوں سے مہینوں تک) میٹرکس دیکھنا بہت ضروری ہے۔

اس کے لئے آپ کو ضرورت ہے:

  • php کے لیے ایکسٹینشن انسٹال کریں (اور آپ کو nginx کے لیے ماڈیول چاہیے ہو سکتا ہے)
  • mysql کے لیے ایکسٹینشن مرتب کریں۔
  • پن بورڈ انسٹال کریں اور کرون کو ترتیب دیں۔

پنبا کے بارے میں معلومات کی کم مقدار کی وجہ سے، بہت سے لوگوں کا یہ تاثر ہے کہ یہ صرف PHP5 پر کام کرتا ہے اور یہ ایک طویل عرصے سے ماضی کی بات ہے، لیکن جیسا کہ ہم بعد میں دیکھیں گے، ایسا نہیں ہے۔

پہلا قدم سب سے آسان ہے، آپ کو بس کمانڈ چلانے کی ضرورت ہے:

apt install php-pinba

یہ توسیع php 7.3 تک کے ذخیروں میں دستیاب ہے اور آپ کو کچھ بھی مرتب کرنے کی ضرورت نہیں ہے۔

انسٹالیشن کمانڈ پر عمل کرنے کے بعد، ہمیں فوری طور پر ایک ورکنگ ایکسٹینشن موصول ہوتی ہے جو فارمیٹ میں ہر اسکرپٹ (چلنے کا وقت، میموری وغیرہ) کے لیے میٹرکس کو جمع اور بھیجتی ہے۔ protobuf udp کے ذریعے 127.0.0.1:30002 تک۔

ابھی تک کسی نے بھی ان UDP پیکٹوں کو پکڑا یا اس پر کارروائی نہیں کی ہے، لیکن یہ کسی بھی طرح سے آپ کے PHP اسکرپٹ کی رفتار یا استحکام کو منفی طور پر متاثر نہیں کرتا ہے۔

کچھ عرصہ پہلے تک، واحد ایپلی کیشن جو ان UDP پیکٹوں کو پکڑ کر اس پر کارروائی کر سکتی تھی۔ pinba_engine. تفصیل"سادہ اور جامعانسٹالیشن اس کو دوبارہ پڑھنے اور اس میں دلچسپی لینے کی خواہش کی حوصلہ شکنی کرتی ہے۔ انحصار کی کلومیٹر لمبی فہرستوں میں پیکیجز کے نام اور پروگراموں کے نام اور ان کی انسٹالیشن کے ساتھ انفرادی صفحات کے لنکس دونوں ہوتے ہیں، اور ان کے دوسرے انحصار سے اپنے لنک ہوتے ہیں۔ اس گھٹیا پن سے نمٹنے کے لیے کسی کے پاس وقت یا خواہش نہیں ہے۔

تنصیب کا عمل۔ pinba2 نہیں کیا خاص طور پر آسان.

شاید کسی دن ایک یا دو کمانڈز کے ساتھ pinba10 کو انسٹال کرنا ممکن ہو جائے اور اسے کرنے کا طریقہ سمجھنے کے لیے مواد کا ایک گروپ نہیں پڑھنا پڑے گا، لیکن فی الحال ایسا نہیں ہے۔

اگر آپ pinba_engine انسٹال کرتے ہیں، تو یہ صرف آدھی جنگ ہے۔ سب کے بعد، بغیر پن بورڈ آپ کو اپنے آپ کو صرف آخری چند منٹوں کے ڈیٹا تک محدود رکھنا پڑے گا، یا آپ کو خود ڈیٹا کو جمع کرنا، ذخیرہ کرنا اور تصور کرنا ہوگا۔ یہ اچھی بات ہے کہ پن بورڈ استعمال کرنا کافی آسان ہے۔ تنصیب.

ایسا لگتا ہے کہ اگر پی ایچ پی کے تمام میٹرکس پہلے ہی پروٹوبف فارمیٹ میں یو ڈی پی پورٹ پر بھیجے گئے ہوں اور آپ کو صرف ایک ایپلی کیشن لکھنے کی ضرورت ہے جو انہیں پکڑ کر کسی قسم کے سٹوریج میں رکھ دے تو ایسی تکلیف کیوں؟ بظاہر، وہ ڈویلپر جو اس خیال کے ساتھ آئے تھے فوری طور پر اپنے خیالات لکھنے بیٹھ گئے، جن میں سے کچھ گٹ ہب پر ختم ہوئے۔

مندرجہ ذیل چار اوپن سورس پروجیکٹس کا ایک جائزہ ہے جو سٹوریج میں میٹرکس کو محفوظ کرتے ہیں، جہاں سے یہ ڈیٹا آسانی سے حاصل کیا جا سکتا ہے اور تصور کیا جا سکتا ہے، مثال کے طور پر گرافانا کا استعمال۔

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

چلتے پھرتے یو ڈی پی سرور جو میٹرکس کو اوپن ٹی ایس ڈی بی میں محفوظ کرتا ہے۔ شاید اگر آپ پہلے ہی اپنے پروجیکٹ میں OpenTSDB استعمال کر رہے ہیں، تو یہ حل آپ کے مطابق ہو گا، بصورت دیگر میں اسے پاس کرنے کی تجویز کرتا ہوں۔

olegfedoseev/pinba-influxdb (جون 2018)

چلتے پھرتے udp سرور، اسی سے habrowser، جو اس بار میٹرکس کو InfluxDB میں اسٹور کرتا ہے۔ بہت سے پروجیکٹس پہلے سے ہی InfluxDB کو نگرانی کے لیے استعمال کر رہے ہیں، اس لیے یہ حل ان کے لیے بہترین ہو سکتا ہے۔

پیشہ:

  • انفلوکس ڈی بی کی اجازت دیتا ہے موصول شدہ میٹرکس کو جمع کریں، اور ایک مخصوص وقت کے بعد اصل کو حذف کریں۔

Cons:

کلک ہاؤس-ننجا/پروٹون (جنوری 2019)

چلتے پھرتے udp سرور، جو کلک ہاؤس میں میٹرکس کو محفوظ کرتا ہے۔ یہ میرے دوست کا حل ہے۔ اس سے واقفیت کے بعد ہی میں نے فیصلہ کیا کہ اب وقت آگیا ہے کہ پنبو اور کلک ہاؤس کا مقابلہ کیا جائے۔

پیشہ:

  • کلک ہاؤس ایسے کاموں کے لیے مثالی ہے؛ یہ آپ کو ڈیٹا کو اتنا کمپریس کرنے کی اجازت دیتا ہے کہ آپ تمام خام ڈیٹا کو جمع کیے بغیر بھی محفوظ کر سکتے ہیں۔
  • اگر ضرورت ہو تو، آپ آسانی سے نتیجے کے میٹرکس کو جمع کر سکتے ہیں۔
  • گرافانا کے لیے تیار ٹیمپلیٹ
  • ٹائمرز پر معلومات محفوظ کرتا ہے۔

Cons:

  • مہلک خرابی
  • ایسی کوئی ترتیب نہیں ہے جس میں آپ ڈیٹا بیس اور ٹیبلز کا نام، سرور کا ایڈریس اور پورٹ ترتیب دے سکیں۔
  • خام ڈیٹا کو ذخیرہ کرتے وقت، صفحہ اور ڈومین ایڈریس کو ذخیرہ کرنے کے لیے ایک معاون لغت کی میز کا استعمال کیا جاتا ہے، جو بعد کے سوالات کو پیچیدہ بناتا ہے۔
  • دوسری چھوٹی چیزیں جو پہلے مائنس سے چلتی ہیں۔

pinba-server/pinba-server (اپریل 2019)

پی ایچ پی میں یو ڈی پی سرور، جو کلک ہاؤس میں میٹرکس کو محفوظ کرتا ہے۔ یہ میرا حل ہے، جو پنبا، کلک ہاؤس اور پروٹوبف کو جاننے کا نتیجہ ہے۔ جب میں اس پورے گروپ کو چھانٹ رہا تھا، میں نے ایک "تصور کا ثبوت" لکھا، جو میرے لیے غیر متوقع طور پر، اہم وسائل استعمال نہیں کرتا تھا (30 MB RAM اور آٹھ پروسیسر کوروں میں سے ایک کا 1% سے کم)، اس لیے میں عوام کے ساتھ اشتراک کرنے کا فیصلہ کیا.

فوائد پچھلے حل کی طرح ہی ہیں، میں نے اصل pinba_engine سے معمول کے نام بھی استعمال کیے ہیں۔ میں نے ایک کنفیگریشن بھی شامل کی ہے جو آپ کو مختلف ٹیبلز میں میٹرکس کو محفوظ کرنے کے لیے ایک ساتھ کئی پن بیس سرور مثالیں لانچ کرنے کی اجازت دیتی ہے - یہ مفید ہے اگر آپ نہ صرف php سے بلکہ nginx سے بھی ڈیٹا اکٹھا کرنا چاہتے ہیں۔
نقصانات - "مہلک خامی" اور وہ چھوٹی چھوٹی چیزیں جو آپ کو ذاتی طور پر مناسب نہیں لگائیں گی، لیکن میرا حل "ایک چپل کی طرح آسان" ہے اور صرف 100 لائنوں کے کوڈ پر مشتمل ہے، لہذا کوئی بھی پی ایچ پی ڈویلپر اپنی پسند کی چیزوں کو تبدیل کر سکتا ہے۔ چند منٹوں میں

آپریشن کا اصول

UDP پورٹ 30002 کو سنا جاتا ہے۔ تمام آنے والے پیکٹوں کو پروٹوبف اسکیم کے مطابق ڈی کوڈ کیا جاتا ہے اور جمع کیا جاتا ہے۔ ایک منٹ میں ایک بار، ایک پیکٹ کلک ہاؤس میں pinba.requests ٹیبل میں داخل کیا جاتا ہے۔ (تمام پیرامیٹرز کو ترتیب دیا گیا ہے۔ تشکیل)

کلک ہاؤس کے بارے میں تھوڑا سا

کلک ہاؤس مختلف ڈیٹا اسٹوریج انجنوں کو سپورٹ کرتا ہے۔ سب سے زیادہ استعمال ہونے والا مرجٹری ہے۔

اگر کسی موقع پر آپ مجموعی ڈیٹا کو ہمیشہ کے لیے ذخیرہ کرنے کا فیصلہ کرتے ہیں، اور صرف آخری ڈیٹا کے لیے خام ڈیٹا، تو آپ گروپ بندی کے ساتھ ایک مادی منظر بنا سکتے ہیں، اور وقتاً فوقتاً مین pinba.requests ٹیبل کو صاف کر سکتے ہیں، جب کہ تمام ڈیٹا مادی نظر. مزید برآں، pinba.requests ٹیبل بناتے وقت، آپ "engine = Null" کی وضاحت کر سکتے ہیں، پھر خام ڈیٹا کو ڈسک میں بالکل بھی محفوظ نہیں کیا جائے گا، اور ساتھ ہی یہ اب بھی مادی منظر میں ختم ہو جائے گا اور مجموعی طور پر محفوظ ہو جائے گا۔ . میں اس اسکیم کو 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

کلک ہاؤس

انسٹالیشن کے دوران، کلک ہاؤس آپ سے ڈیفالٹ صارف کے لیے پاس ورڈ سیٹ کرنے کو کہے گا۔ پہلے سے طے شدہ طور پر، یہ صارف تمام IPs سے قابل رسائی ہے، لہذا اگر آپ کے سرور پر فائر وال نہیں ہے، تو اس کے لیے پاس ورڈ سیٹ کرنا یقینی بنائیں۔ یہ /etc/clickhouse-server/users.xml فائل میں انسٹالیشن کے بعد بھی کیا جا سکتا ہے۔

یہ بات بھی قابل توجہ ہے کہ کلک ہاؤس کئی بندرگاہوں کا استعمال کرتا ہے، بشمول 9000۔ یہ بندرگاہ کچھ تقسیموں میں php-fpm کے لیے بھی استعمال ہوتی ہے (مثال کے طور پر، سینٹوس)۔ اگر آپ پہلے سے ہی یہ پورٹ استعمال کر رہے ہیں، تو آپ اسے /etc/clickhouse-server/config.xml فائل میں کسی اور میں تبدیل کر سکتے ہیں۔

کلک ہاؤس پلگ ان کے ساتھ گرافانا

گرافانا انسٹال کرنے کے بعد لاگ ان ایڈمن اور پاس ورڈ ایڈمن استعمال کریں۔ جب آپ پہلی بار لاگ ان ہوں گے، گرافانا آپ سے نیا پاس ورڈ سیٹ کرنے کو کہے گا۔

اس کے بعد، "+" -> درآمدی مینو پر جائیں اور درآمد کے لیے ڈیش بورڈ نمبر کی نشاندہی کریں۔ 10011. میں نے یہ ڈیش بورڈ تیار کر کے اپ لوڈ کر دیا ہے تاکہ آپ کو دوبارہ ایسا نہ کرنا پڑے۔

گرافانا تھرڈ پارٹی پلگ ان کے ذریعے کلک ہاؤس کے ساتھ کام کرنے کی حمایت کرتا ہے، لیکن گرافانا کے پاس تھرڈ پارٹی پلگ ان کے لیے انتباہات نہیں ہیں (کئی سالوں سے اس کے لیے ٹکٹ موجود ہے)۔

پنبا سرور

protobuf اور libevent انسٹال کرنا اختیاری ہے، لیکن pinba-server کی کارکردگی کو بہتر بناتا ہے۔ اگر آپ /opt کے علاوہ کسی دوسرے فولڈر میں pinba-server انسٹال کرتے ہیں، تو آپ کو بھی درست کرنا ہوگا۔ systemd اسکرپٹ فائل.

nginx کے لیے پنبا ماڈیول

ماڈیول کو مرتب کرنے کے لیے، آپ کو nginx کے اسی ورژن کے سورس کوڈز کی ضرورت ہوتی ہے جو آپ کے سرور پر پہلے سے انسٹال ہے، اور ساتھ ہی کمپائلیشن کے وہی آپشنز، بصورت دیگر یہ تعمیر کامیاب ہو جائے گی، لیکن ماڈیول کو جوڑنے کے دوران، ایک ایرر پھینک دیا جائے گا۔ "ماڈیول بائنری ہم آہنگ نہیں ہے۔" nginx -V کمانڈ کا استعمال کرتے ہوئے تالیف کے اختیارات دیکھے جا سکتے ہیں۔

لائف ہیکس۔

میری تمام سائٹیں صرف https پر کام کرتی ہیں۔ سکیما فیلڈ بے معنی ہو جاتا ہے، لہذا میں اسے ویب/کنسول کو الگ کرنے کے لیے استعمال کرتا ہوں۔

اسکرپٹ میں جو ویب سے قابل رسائی ہیں میں استعمال کرتا ہوں:

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

اور کنسول اسکرپٹس میں (مثال کے طور پر، کرون اسکرپٹ):

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

گرافانا میں میرے ڈیش بورڈ میں اعداد و شمار کو الگ سے دیکھنے کے لیے ایک ویب/کنسول سوئچ ہے۔

آپ اپنے ٹیگز پنبا کو بھی بھیج سکتے ہیں، مثال کے طور پر:

pinba_tag_set('country', $countryCode);

بس۔

براہ کرم مضمون کے نیچے رائے شماری کا جواب دیں۔

ہمیشہ کی طرح، میں آپ کو خبردار کرتا ہوں کہ میں Habr اور سوشل نیٹ ورکس پر ذاتی پیغامات کے ذریعے مشورہ یا مدد نہیں کرتا ہوں۔

Github پر ٹکٹ بنائیں۔

اس کے علاوہ لائکس کے ساتھ سپورٹ کریں۔ انگریزی ورژن اس مضمون کا reddit پر.

سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.

آپ سرور پر کون سا OS استعمال کر رہے ہیں؟

  • اوبنٹو

  • CentOS

  • Debian

  • Gentoo

  • ریڈ ہیٹ

  • Fedora

  • اوپن سایہ

  • ایس ایس ای

  • یونیکس

  • ونڈوز

  • دیگر

114 صارفین نے ووٹ دیا۔ 11 صارفین غیر حاضر رہے۔

آپ سرور پر پی ایچ پی کا کون سا ورژن استعمال کر رہے ہیں؟

  • 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

نیا تبصرہ شامل کریں