مانیتورینگ هوشمند هارد، حذف خودکار ویس ها به همراه هشدار صوتی

بسیار مهم (اخطار)

برای استفاده از این bash حتما نیاز هست monitor_converted در پارتیشن مجزایی ماونت شده باشد در غیر این صورت اگر روی پارتیشن روت اعمال کنید به مرور زمان که لاگ ها و بک اپ فضا را اشغال میکنند این bash از ویس ها پاک میکند نسبت به درصد و بعد چند سال مشاهده میکنید که 60 درصد فقط لاگ و بک آپ …. هست.(اصول پارتیشن بندی)

برای سرور ویپ نیاز داشتم در صورتی که فضای هارد در حال پر شدن بود، قبل از اینکه سرویس دچار مشکل شود، سیستم به‌صورت خودکار هشدار بدهد و در صورت بحرانی شدن وضعیت، قدیمی‌ترین فایل‌های ضبط مکالمه را حذف کند.

به همین خاطر این اسکریپت Bash را نوشتم و شاید برای دوستان دیگر هم مفید باشد.

bash

قابلیت‌ها

  • مانیتورینگ میزان استفاده از فضای دیسک

  • تماس خودکار با یک داخلی در صورت عبور از آستانه مشخص (Warning)

  • پخش فایل صوتی هشدار

  • جلوگیری از ارسال هشدارهای تکراری تا زمانی که وضعیت دیسک عادی نشود

  • حذف خودکار قدیمی‌ترین پوشه‌های ضبط مکالمه

  • ادامه حذف تا رسیدن به درصد فضای موردنظر

  • ثبت کامل عملیات در فایل Log

  • قابلیت اجرا از طریق Cron


نحوه عملکرد

به عنوان مثال:

  • اگر فضای دیسک به 70٪ برسد:

    • اسکریپت یک تماس با داخلی تعیین‌شده برقرار می‌کند.

    • فایل صوتی هشدار را پخش می‌کند.

  • اگر فضای دیسک به 75٪ برسد:

    • حذف قدیمی‌ترین پوشه ضبط مکالمات آغاز می‌شود.

    • پس از حذف هر پوشه، دوباره فضای دیسک بررسی می‌شود.

    • این روند تا رسیدن فضای مصرفی به 60٪ ادامه پیدا می‌کند.


ساختار پوشه‌ها

اسکریپت برای ساختاری مانند زیر طراحی شده است:

/var/spool/asterisk/monitor_converted/

├── 20260720/
├── 20260721/
├── 20260722/
├── 20260723/

هر پوشه مربوط به ضبط‌ های یک روز است.

در زمان پاکسازی، کل قدیمی‌ترین پوشه حذف می‌شود و پوشه‌های خالی باقی نمی‌مانند.


تنظیمات قابل تغییر

کافی است مقادیر زیر را داخل اسکریپت تغییر دهید:

PARTITION="/var/spool/asterisk/monitor_converted"

RECORD_PATH="/var/spool/asterisk/monitor_converted"

WARNING_LEVEL=70

DELETE_LEVEL=75

TARGET_LEVEL=60

EXTENSION="202"

SOUND="pr/warningsounds"

اجرای دوره‌ای با Cron

برای اجرای خودکار هر دو ساعت:

0 */2 * * * /usr/local/bin/disk_monitor.sh

لاگ

تمام عملیات در فایل زیر ثبت می‌شود:

/tmp/disk_monitor.log

شامل:

  • میزان استفاده از هارد

  • زمان ارسال هشدار

  • مسیر پوشه حذف‌شده

  • نتیجه حذف

  • درصد فضای دیسک بعد از هر عملیات


در صورت استفاده از سیموتل طبق عکس سناریو مورد نظر پیاده سازی کنید و یک کانتکست اختصاص دهید.

سپس کانتکست در کد جایگزین sound-alert
/usr/sbin/asterisk -rx "channel originate Local/${EXTENSION}@sound-alert application Playback ${SOUND}
کنید در این صورت تماس با داخلی برقرار میشود و در کارکتور به شما این قابلیت را میدهد که caller ID عوض کنید برای مثال Disk-Alert

در صورتی که سیموتل ندارید این دایل پلن در استریسک و سرویس ویپ پیاده سازی نمایید.