لانچر مصنوعات Bitnami دستاویزاتimaxe CLI بلاگ رابطہ
imaxe global-alerts الرٹس v1.0.0

پورے فلیٹ کو سننے کی ایک ہی جگہ

انسٹنس کی اہم اطلاعات —دراندازی، بھرا ہوا ڈسک، بند پڑی سروس— ایک مشترکہ SNS ٹاپک پر شائع کرتا ہے۔ آپریٹر اور باقی ماڈیولز اسے واحد چینل کے طور پر استعمال کرتے ہیں: شدت کی حد، ڈی ڈپلیکیشن، اور SNS کے جواب نہ دینے پر دوبارہ کوشش کی قطار۔

$ imaxe global-alerts send --severity critical "روٹ ڈسک 95% پر"
ورژن
v1.0.0
ذیلی کمانڈز
8
کنفیگ
/etc/imaxe/global-alerts.yml
root درکار
ہاں
ٹرانسپورٹ
Amazon SNS · IAM رول

یہ ماڈیول کیا کرتا ہے #

ایک انسٹنس کے پاس بتانے کو بہت کچھ ہوتا ہے: fail2ban نے کوئی IP بلاک کیا، aide نے سسٹم کی کوئی فائل بدلتی دیکھی، رات کا بیک اپ ناکام رہا، روٹ ڈسک 95 % پر پہنچ گیا۔ اگر ہر ماڈیول اپنے اپنے انداز میں بتائے —یہاں ایک ای میل، وہاں لاگ کی ایک سطر— تو کسی کو کچھ پتا نہیں چلتا، اور دس انسٹنس ہوں تو مسئلہ دس گنا ہو جاتا ہے۔

global-alerts ماڈیول imaxe کی مرکزی الرٹ بس ہے: ایک ہی کمانڈ جس سے یہ ساری اطلاعات گزرتی ہیں اور ایک ہی منزل جہاں وہ پہنچتی ہیں — آپ کے پورے فلیٹ میں مشترک ایک Amazon SNS ٹاپک۔ وہاں سے SNS جیسے چاہیں تقسیم کرتا ہے: ای میل، SMS، کوئی Lambda فنکشن، کوئی SQS قطار، آپ کا آن کال نظام۔ اشاعت انسٹنس کے IAM رول سے ہوتی ہے (sns:Publish اجازت)، اس لیے کوئی کریڈنشل محفوظ نہیں کرنا پڑتا۔ اور بھیجنے سے پہلے شور چھانٹ دیتا ہے: شدت کی حد اُس سب کو ہٹا دیتی ہے جو آپ کی دلچسپی کے درجے تک نہیں پہنچتا، اور ڈی ڈپلیکیشن ونڈو ایک ہی الرٹ کو چالیس بار آپ کو جگانے سے روکتی ہے۔

اگر SNS دستیاب نہ ہو —نیٹ ورک بند، رول کے پاس ابھی اجازت نہیں، ریجن تک رسائی نہیں— تو الرٹ ضائع نہیں ہوتا: وہ ڈسک پر قطار میں لگ جاتا ہے اور systemd کا ایک ٹائمر ہر 5 منٹ بعد دوبارہ کوشش کرتا ہے۔

شروع کرنے سے پہلے

آپ کو ایک SNS ٹاپک کا ARN چاہیے (arn:aws:sns:ریجن:اکاؤنٹ:ٹاپک) اور یہ کہ انسٹنس اُس پر شائع کر سکے۔ اگر آپ نے AMI لانچر سے چلائی ہے تو CloudFormation ٹیمپلیٹ پہلے ہی ٹاپک بناتا ہے، آپ کا ای میل سبسکرائب کرتا ہے، sns:Publish والا IAM رول بناتا ہے اور ARN بطور ٹیگ انسٹنس کو دیتا ہے: ماڈیول خود ترتیب پا جاتا ہے اور یہاں کچھ کرنے کو نہیں رہتا۔

فوری آغازقدم بہ قدم کام

عام کام #

منتخب کریں کہ آپ کیا کرنا چاہتے ہیں۔ ہر نسخے میں کمانڈ پہلے سے لکھی ہے — ARN اور متن اپنا ڈالیں، اور کاپی دبائیں۔

1

SNS ٹاپک مقرر کرنا

انسٹنس کو بتائیں کہ اسے اپنی اطلاعات کہاں شائع کرنی ہیں۔

ubuntu صارف کے ساتھ SSH سے اپنے سرور پر جڑیں۔

ماڈیول کو اپنے ٹاپک کے ARN کی طرف موڑیں۔ ریجن خود ARN سے نکل آتا ہے، اس لیے عام طور پر اسے بتانے کی ضرورت نہیں:

ٹرمینل
$ sudo imaxe global-alerts configure \
    --topic-arn arn:aws:sns:eu-west-1:123456789012:imaxe-alerts

کئی انسٹنس ایک ہی ٹاپک پر شائع کر رہے ہیں؟ --source سے ہر ایک کو پہچانا جانے والا ماخذ لیبل دیں (بطور ڈیفالٹ hostname استعمال ہوتا ہے):

ٹرمینل
$ sudo imaxe global-alerts configure --source web-prod-1
ترتیب /etc/imaxe/global-alerts.yml میں رہتی ہے اور بھیجنا فعال ہو جاتا ہے۔ اب آزمائشی الرٹ بھیجنا والے نسخے پر جائیں۔
2

آزمائشی الرٹ بھیجنا

چینل پر بھروسا کرنے سے پہلے دیکھ لیں کہ IAM رول واقعی شائع کرتا ہے۔

مقرر کردہ ٹاپک پر ایک آزمائشی الرٹ شائع کریں:

ٹرمینل
$ sudo imaxe global-alerts test

آزمائش حد اور ڈی ڈپلیکیشن کو نظرانداز کر دیتی ہے —وہ ہمیشہ نکلتی ہے— اور اگر کچھ ناکام ہو تو خاموشی سے قطار میں ڈالنے کے بجائے آپ کو AWS کی اصل خرابی واپس دیتی ہے۔ ٹاپک سے سبسکرائب پتے کا ان باکس دیکھیں (اور اسپیم فولڈر بھی)۔

اگر آپ کو MessageId نظر آئے اور اطلاع پہنچ جائے تو چینل کام کر رہا ہے۔ اگر AuthorizationError آئے تو انسٹنس کے پاس اُس ٹاپک پر sns:Publish اجازت نہیں۔
3

اسکرپٹ سے الرٹ بھیجنا

وہی چینل جو ماڈیولز استعمال کرتے ہیں، آپ کے اپنے کاموں کے لیے بھی۔

اپنی شدت اور اپنے ماخذ کے ساتھ ایک الرٹ:

ٹرمینل
$ sudo imaxe global-alerts send --severity critical \
    --source backup --subject "بیک اپ ناکام" \
    "ڈیٹابیس کا رات والا بیک اپ خرابی کے ساتھ ختم ہوا"

اگر متن کوئی اور کمانڈ بناتی ہے تو پیغام کی جگہ - دے کر اسے stdin سے بھیجیں:

ٹرمینل
$ df -h / | sudo imaxe global-alerts send --severity warning -

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

ٹرمینل
$ sudo imaxe global-alerts send --severity warning \
    --dedup-key root-disk-full "روٹ ڈسک 95% پر"
الرٹ JSON کی صورت ٹاپک تک جاتا ہے، جس میں انسٹنس، ریجن اور وقت کی مہر پہلے سے شامل ہوتی ہے۔ --dedup-key کے بغیر ماڈیول ماخذ + شدت + موضوع سے ایک کلید بنا لیتا ہے۔
4

بس کی حالت دیکھنا

ٹاپک، ریجن، AWS کا CLI اور زیرِ التوا الرٹس — ایک نظر میں۔

موجودہ حالت کا خلاصہ:

ٹرمینل
$ sudo imaxe global-alerts status

یہ جانچنے کے لیے کہ اصل میں کون سی ترتیب چل رہی ہے —بشمول وہ جو انسٹنس کے ٹیگز سے آتی ہے اور فائل پر بھاری پڑتی ہے—:

ٹرمینل
$ sudo imaxe global-alerts show
$ sudo imaxe global-alerts status --json
آپ کو پتا چلے گا کہ ٹاپک مقرر ہے یا نہیں، اشاعت کس ریجن میں ہوتی ہے اور قطار میں کتنے الرٹ منتظر ہیں۔ --json کے ساتھ یہ کسی پینل یا اسکرپٹ کے لیے تیار ہے۔
5

شور کم کرنا

شدت کی حد بڑھائیں اور ڈی ڈپلیکیشن ونڈو کشادہ کریں۔

اگر آپ صرف اہم باتیں جاننا چاہتے ہیں تو warning سے نیچے کی ہر چیز ہٹا دیں:

ٹرمینل
$ sudo imaxe global-alerts configure --min-severity warning

ڈی ڈپلیکیشن ونڈو کا کوئی فلیگ نہیں: وہ کنفیگریشن فائل میں طے ہوتی ہے۔ اگر ایک ہی الرٹ بار بار آئے تو اسے بڑھا دیں:

/etc/imaxe/global-alerts.yml
dedup_window: 1h   # 30s، 5m، 1h… (ڈیفالٹ 5m)
حد سے نیچے کے الرٹ نکلنے سے پہلے ہی ہٹا دیے جاتے ہیں (قطار میں بھی نہیں جاتے) اور ونڈو کے اندر کی تکرار دبا دی جاتی ہے۔ test پھر بھی ہمیشہ شائع کرتا ہے، اس لیے چینل جانچنے کا طریقہ آپ کے پاس رہتا ہے۔
6

قطار دیکھنا اور دوبارہ بھیجنا

جب SNS نے جواب نہ دیا تو کیا باقی رہ گیا، اور بھیجنے پر کیسے مجبور کریں۔

دیکھیں کیا زیرِ التوا ہے اور حال ہی میں بھیجی گئی کلیدیں کون سی ہیں:

ٹرمینل
$ sudo imaxe global-alerts history

دوبارہ کوشش تو systemd کا ٹائمر ہر 5 منٹ بعد کرتا ہی ہے، مگر اجازت یا نیٹ ورک ٹھیک کرنے کے بعد آپ اسے زبردستی بھی چلا سکتے ہیں:

ٹرمینل
$ sudo imaxe global-alerts flush
$ systemctl status imaxe-global-alerts-flush.timer
آپ دیکھیں گے کہ کتنے نکلے اور کتنے ابھی منتظر ہیں۔ اگر پہلا پھر ناکام ہو جائے تو یہ چکر وہیں رک جاتا ہے اور باقی اگلی کوشش کے لیے چھوڑ دیتا ہے: کچھ بھی ضائع نہیں کیا جاتا۔
7

ماڈیول خاموش کرنا

ترتیب کھوئے بغیر شائع کرنا بند کریں۔

الرٹ بھیجنا غیر فعال کریں اور دوبارہ کوشش کا ٹائمر ہٹا دیں:

ٹرمینل
$ sudo imaxe global-alerts remove

ٹاپک، ریجن اور باقی ترتیبات فائل میں محفوظ رہتی ہیں: دوبارہ چالو کرنے کے لیے ایک configure کافی ہے، وہی ماڈیول کو پھر فعال کر دیتا ہے۔

انسٹنس شائع کرنا بند کر دیتا ہے۔ اس کے بعد والے send ناکام نہیں ہوتے: وہ stderr پر بتا دیتے ہیں کہ ماڈیول غیر فعال ہے اور کوڈ 0 کے ساتھ ختم ہوتے ہیں۔
IAM رول کے بغیر الرٹ نہیں

ماڈیول انسٹنس کے رول کی کریڈنشلز سے شائع کرتا ہے، محفوظ کی گئی کلیدوں سے نہیں۔ اگر رول اُس ٹاپک پر sns:Publish کی اجازت نہ دے تو الرٹ ایک کے بعد ایک قطار میں جمع ہوتے رہیں گے اور کبھی نہیں پہنچیں گے۔ ایک imaxe global-alerts test یہ فوراً بتا دیتا ہے، اور خرابی بعینہٖ دکھاتا ہے جیسے AWS واپس کرتا ہے۔

CLI حوالہکمانڈز، فلیگز اور فائلیں

خلاصہ #

استعمال
imaxe global-alerts <ذیلی-کمانڈ> [--topic-arn ARN] [--severity درجہ] [فلیگز]

تمام ذیلی کمانڈز کو root اختیارات درکار ہیں (sudo لگائیں)، کیونکہ وہ /etc/imaxe/ میں لکھتی ہیں، حالت /var/lib/imaxe/ میں رکھتی ہیں اور systemd کی ایک یونٹ سنبھالتی ہیں۔ سنبھالنے کو کوئی راز نہیں: اشاعت انسٹنس کے IAM رول سے ہوتی ہے۔ مشین کے پڑھنے لائق آؤٹ پٹ کے لیے status، show، history یا flush کے ساتھ --json جوڑیں۔

ذیلی کمانڈز #

ذیلی کمانڈکیا کرتی ہےمتعلقہ فلیگز
statusحالت: مقرر کردہ ٹاپک، مؤثر ریجن، AWS کا CLI دستیاب ہے یا نہیں، اور قطار میں الرٹس۔--json
configureSNS ٹاپک اور بھیجنے کے اختیارات طے کرتی ہے۔ ماڈیول غیر فعال ہو تو دوبارہ فعال کر دیتی ہے۔--topic-arn, --region, --source, --min-severity
sendایک الرٹ شائع کرتی ہے۔ یہی وہ چینل ہے جو آپریٹر اور باقی ماڈیولز استعمال کرتے ہیں۔--severity, --source, --subject, --dedup-key
testحد اور ڈی ڈپلیکیشن کو نظرانداز کر کے آزمائشی الرٹ شائع کرتی ہے، اور ناکامی پر اصل خرابی بتاتی ہے۔--severity
showمؤثر ترتیب دکھاتی ہے (فائل + پہلے سے لاگو انسٹنس ٹیگز)۔--json
historyقطار میں زیرِ التوا الرٹس اور حال ہی میں بھیجی گئی ڈی ڈپلیکیشن کلیدیں۔--json
flushقطار میں پڑے الرٹ دوبارہ بھیجتی ہے۔ systemd کا ٹائمر بھی یہی چلاتا ہے۔--json
removeبھیجنا غیر فعال کرتی ہے اور ٹائمر ہٹاتی ہے۔ ترتیب محفوظ رکھتی ہے۔

آرگیومنٹس اور فلیگز #

فلیگقسمڈیفالٹتفصیل
--topic-arn لازمیstringہدف SNS ٹاپک کا ARN (arn:aws:sns:ریجن:اکاؤنٹ:ٹاپک)۔ اس کے بغیر ماڈیول شائع نہیں کر سکتا۔
--regionstringARN سےAWS ریجن۔ نہ دیا جائے تو ٹاپک کے ARN سے نکلتا ہے؛ وہاں بھی نہ ملے تو IMDS یا AWS_REGION سے۔
--sourcestringhostnameماخذ لیبل۔ configure میں انسٹنس کا؛ send میں اُسی الرٹ کا (مثلاً وہ ماڈیول جو اسے بھیج رہا ہے)۔
--min-severitystringinfoحد: اس درجے سے نیچے کے الرٹ ہٹا دیتی ہے۔ اقدار: info، warning، critical۔
--severitystringinfosend/test میں: اس الرٹ کا درجہ۔ مختصر صورتیں warn اور crit بھی قبول ہیں۔
--subjectstringپیغام سےمختصر موضوع۔ نہ دیا جائے تو خود پیغام سے نکال لیا جاتا ہے۔
--dedup-keystringخودکارڈی ڈپلیکیشن کلید: dedup_window کے اندر تکرار دبا دیتی ہے۔ بطور ڈیفالٹ ماخذ + شدت + موضوع سے شمار ہوتی ہے۔
<پیغام> لازمیپوزیشنلsend میں: الرٹ کا متن، یا stdin سے پڑھنے کے لیے -۔
--jsonboolfalsestatus، show، history اور flush میں نتیجہ JSON کے طور پر stdout پر دیتی ہے۔
ہٹایا جانا ناکامی نہیں

جب کوئی الرٹ ہٹایا جاتا ہے —ماڈیول غیر فعال، شدت حد سے نیچے، یا ونڈو کے اندر تکرار— تو send اسے stderr پر واضح کرتا ہے اور کوڈ 0 کے ساتھ ختم ہوتا ہے۔ یوں جس اسکرپٹ نے اسے بھیجا تھا، وہ آپ ہی کے لگائے فلٹر کی وجہ سے نہیں ٹوٹتی۔

انسٹنس ٹیگز سے ترتیب #

ہر تعیناتی کو اپنے ٹاپک کی طرف اشارہ کرنا ہوتا ہے، اور اس کے لیے AMI دوبارہ بنانا بے معنی ہوگا۔ اسی لیے ماڈیول فائل کے علاوہ imaxe.global-alerts. سابقے والے انسٹنس ٹیگز IMDSv2 سے پڑھتا ہے: اگر وہ موجود ہوں تو YAML پر بھاری پڑتے ہیں۔ لانچر کا CloudFormation ٹیمپلیٹ یہی کرتا ہے، اور وہ مزید MetadataOptions.InstanceMetadataTags: enabled بھی مانگتا ہے تاکہ انہیں پڑھا جا سکے۔

ٹیگکس کے برابراقدار
imaxe.global-alerts.topic_arntopic_arnہدف SNS ٹاپک کا ARN۔
imaxe.global-alerts.regionregionAWS ریجن؛ خالی = ARN یا IMDS سے نکالا جاتا ہے۔
imaxe.global-alerts.sourcesourceماخذ لیبل؛ خالی = hostname۔
imaxe.global-alerts.min_severitymin_severityinfo · warning · critical
imaxe.global-alerts.dedup_windowdedup_windowدورانیہ: 30s، 5m، 1h
imaxe.global-alerts.enabledenabledtrue/false (نیز 1/0، yes/no، on/off

AWS سے باہر، یا IMDS بند ہو تو یہ پڑھائی ملی سیکنڈوں میں ناکام ہو جاتی ہے اور ماڈیول فائل میں لکھی بات پر چلتا رہتا ہے۔ اصل میں کیا فعال ہوا، یہ دیکھنے کے لیے imaxe global-alerts show۔

فائلیں اور راستے #

راستہمواد
/etc/imaxe/global-alerts.ymlماڈیول کی ترتیب: ٹاپک، ریجن، ماخذ، حد اور ڈی ڈپلیکیشن ونڈو۔
/var/lib/imaxe/state/global-alerts/spool/زیرِ التوا الرٹس کی قطار، ہر ایک الگ .json فائل میں، وقت کی ترتیب سے۔
/var/lib/imaxe/state/global-alerts/sent.jsonڈی ڈپلیکیشن کلیدوں کا ریکارڈ، آخری بار بھیجے جانے کے وقت کے ساتھ۔
/etc/systemd/system/imaxe-global-alerts-flush.timerدوبارہ کوشش کا ٹائمر: بوٹ کے 2 منٹ بعد شروع ہوتا ہے اور ہر 5 منٹ پر دہراتا ہے۔

global-alerts.yml کی مثال:

/etc/imaxe/global-alerts.yml
enabled: true
topic_arn: arn:aws:sns:eu-west-1:123456789012:imaxe-alerts
region: ""            # خالی = ARN یا IMDS سے نکالا جاتا ہے
source: ""            # خالی = انسٹنس کا hostname
min_severity: info
dedup_window: 5m

حالت (قطار اور ڈی ڈپلیکیشن ریکارڈ) جان بوجھ کر /var/lib/imaxe/ میں رہتی ہے، /etc/ میں نہیں: یہ حالت ہے، ترتیب نہیں۔ دونوں راستے ماحول کے متغیرات IMAXE_CONFIG_DIR اور IMAXE_STATE_DIR سے بدلے جا سکتے ہیں۔

الرٹ کی ساخت #

SNS پیغام کا متن ورژن والا JSON ہے (schema: 1)، تاکہ سبسکرائبر اسے ای میل سے پڑھنے کے علاوہ کسی Lambda یا قطار سے بھی سنبھال سکے:

پیغام کا متن
{
  "schema": 1,
  "severity": "critical",
  "source": "backup",
  "subject": "بیک اپ ناکام",
  "message": "ڈیٹابیس کا رات والا بیک اپ خرابی کے ساتھ ختم ہوا",
  "host": "web-prod-1",
  "instance_id": "i-0abc123def4567890",
  "region": "eu-west-1",
  "ts": "2026-07-25T03:14:07Z",
  "dedup_key": "9f2c1b7e44a0d513"
}

SNS پیغام کا موضوع [imaxe][شدت] host: موضوع کی طرح بنتا ہے، قابلِ طباعت ASCII میں صاف کیا جاتا ہے اور 100 حروف پر کاٹ دیا جاتا ہے، جو SNS کی حد ہے۔

ایگزٹ کوڈز اور لاگز #

ہر بار چلنے پر ایک کوڈ واپس آتا ہے جسے آپ echo $? سے دیکھ سکتے ہیں — اسکرپٹ میں سلسلہ بنانے کے لیے مفید:

0OKکام مکمل۔ تب بھی، جب الرٹ جان بوجھ کر ہٹایا یا قطار میں ڈالا جائے۔
1ERRعمومی خرابی: آزمائش شائع نہ ہو سکی، یا اسے نہ شائع کیا جا سکا نہ قطار میں ڈالا جا سکا۔
2USAGEناجائز آرگیومنٹس: نامعلوم فلیگ، پیغام غائب، یا شدت درست نہیں۔
64NO TOPICکوئی SNS ٹاپک مقرر نہیں، نہ فائل سے نہ ٹیگ سے۔

ماڈیول imaxe کی صحت جانچ کا بھی جواب دیتا ہے: اگر وہ فعال ہو مگر ٹاپک نہ ہو تو health ناکام ہو جاتا ہے، یوں پہلا الرٹ درکار ہونے سے پہلے ہی ایک imaxe health اسے پکڑ لیتا ہے۔

ٹرمینل
$ sudo imaxe global-alerts test; echo "ایگزٹ: $?"
$ journalctl -u imaxe-global-alerts-flush.service -n 50

مسائل کا حل #

علامتممکنہ سببحل
NO TOPIC آتا ہے (کوڈ 64)نہ فائل میں ٹاپک کا ARN ہے نہ ٹیگز میں۔configure --topic-arn … چلائیں، یا دیکھیں کہ انسٹنس پر imaxe.global-alerts.topic_arn ٹیگ ہے اور میٹا ڈیٹا میں ٹیگز فعال ہیں۔
بار بار «SNS دستیاب نہیں؛ الرٹ قطار میں»انسٹنس کے رول کو اُس ٹاپک پر sns:Publish حاصل نہیں، یا ARN کسی اور اکاؤنٹ/ریجن کا ہے۔AWS کی درست خرابی دیکھنے کے لیے test چلائیں، رول کی پالیسی درست کریں اور پھر flush۔
status میں «aws CLI دستیاب: false»انسٹنس پر AWS کا CLI نصب نہیں؛ ماڈیول اسی کے ذریعے شائع کرتا ہے۔AWS کا CLI نصب کریں۔ imaxe کی AMIs میں وہ پہلے سے آتا ہے؛ اپنے ہوسٹ پر اسے شامل کرنا پڑتا ہے۔
آپ کچھ ترتیب دیتے ہیں اور show پھر بھی دوسری قدر دکھاتا ہےکوئی imaxe.global-alerts.* ٹیگ فائل پر حاوی ہے: ڈیزائن کے مطابق اسی کو ترجیح ہے۔YAML کے بجائے انسٹنس کا ٹیگ (یا CloudFormation اسٹیک کا پیرامیٹر) بدلیں۔
کئی ایک جیسے الرٹس میں سے صرف پہلا پہنچتا ہےڈی ڈپلیکیشن ونڈو انہیں دبا رہی ہے۔یہی متوقع ہے۔ dedup_window گھٹائیں، یا اگر وہ واقعی مختلف واقعات ہیں تو الگ الگ --dedup-key استعمال کریں۔
کچھ نہیں آتا اور کوئی خرابی بھی نہیںماڈیول غیر فعال ہے، یا شدت min_severity سے نیچے ہے۔show آپ کو enabled اور حد دکھاتا ہے؛ configure بھیجنا دوبارہ فعال کر دیتا ہے۔
الرٹ شائع ہوتے ہیں مگر ای میل سے نہیں پہنچتےSNS ٹاپک کی سبسکرپشن تصدیق شدہ نہیں۔AWS کی تصدیقی ای میل تلاش کریں (اسپیم دیکھیں) اور SNS کنسول میں سبسکرپشن قبول کریں۔

کیا الرٹس ماڈیول کے ساتھ اٹک گئے ہیں؟

«imaxe <module> status --json» کے آؤٹ پٹ کے ساتھ ہمیں لکھیں اور ہم فوراً جواب دیں گے۔

سپورٹ سے رابطہ کریں