GDNSD-PLUGIN-EXTMON(8) gdnsd GDNSD-PLUGIN-EXTMON(8)

gdnsd-plugin-extmon - افزونه پایش دستورات سفارشی خارجی برای gdnsd

نمونه پیکربندی افزونه:

service_types => {
  wget_ssl_index => {
    plugin => "extmon",
    timeout => 15,
    interval => 30,
    cmd => ["/usr/bin/wget", "-T", "3", "-q", "-O", "/dev/null", "https://%%ITEM%%/index.html"]
  },
  svc_alwaysok => {
    plugin => "extmon",
    timeout => 1,
    direct => true,
    cmd => ["/bin/sh", "-c", "exit 0"]
  },
  svc_alwaysfail_via_timeout => {
    plugin => "extmon",
    timeout => 2,
    max_proc => 10,
    cmd => ["/bin/sh", "-c", "sleep 5"]
  }
}
# اختیاری، اگر مسیر نصب باعث سردرگمی دیمن شود...
plugins => {
  extmon => { helper_path => "/usr/lib/gdnsd/gdnsd_extmon_helper" }
}

gdnsd-plugin-extmon به شما امکان می‌دهد دستورات خارجی را برای ارائه بازخورد پایش به افزونه‌های آدرس پویا پیکربندی کنید.

این‌ها تنظیمات سراسری افزونه هستند که در "plugins => { extmon => { ... } }" پیکربندی می‌شوند.

مسیر رشته‌ای، اختیاری.

به‌طور معمول، این افزونه فایل اجرایی کمکی خود gdnsd_extmon_helper را در دایرکتوری libexec محل نصب در /usr/lib/gdnsd/gdnsd_extmon_helper با موفقیت پیدا می‌کند. اگر به هر دلیلی قادر به این کار نباشد (برای نمونه، به دلیل جابه‌جایی محل نصب)، می‌توانید یک مسیر کامل صریح را به فایل کمکی در اینجا تعیین کنید.

رشته، یکی از دو مقدار "stasis" یا "kill_daemon". پیش‌فرض "stasis" است.

این گزینه رفتار افزونه را در صورتی پیکربندی می‌کند که فرایند کمکی gdnsd_extmon_helper به‌طور غیرمنتظره از کار بیفتد، که مانع از جمع‌آوری هرگونه به‌روزرسانی معتبر وضعیت پایش در ادامه می‌شود.

صرف‌نظر از این تنظیم، حداقل یک پیام در syslog مبنی بر خرابی ثبت خواهد شد.

در صورت تنظیم روی "stasis"، تمام وضعیت‌های پایش‌شده به همان صورت فعلی رها می‌شوند و به‌روزرسانی دیگری صورت نمی‌گیرد. جنبه منفی این است که مگر اینکه فردی متوجه پیام syslog شود، این حالت خرابی به سختی قابل تشخیص است.

در صورت تنظیم روی "kill_daemon"، کل دیمن gdnsd با خطای مهلک متوقف می‌شود.

پارامترهای فراگیر و مستقل از افزونه service_type همگی با معنای معمول خود اعمال می‌شوند: "up_thresh"، "ok_thresh"، "down_thresh"، "interval"، "plugin" و "timeout". برای اطلاعات پایه درباره این موارد به gdnsd.config(5) مراجعه کنید. موارد زیر مختص این افزونه "extmon" هستند:

آرایه‌ای از یک یا چند رشته، الزامی است.

این گزینه دستور و آرگومان‌های اجرایی را برای بررسی پایش تعیین می‌کند. این آرایه مستقیماً برای اجرا به execv() ارسال می‌شود (همراه با استفاده مجدد از نخستین عنصر به عنوان مسیر فایل اجرایی). اگر نیاز به استفاده از امکانات شل دارید، فهرست آرگومان‌ها را برای نمونه با ""/bin/sh", "-c", ..." آغاز کنید.

تمام رشته‌های آرگومان برای یافتن رشته جادویی "%%ITEM%%" (که می‌تواند چندین بار در هر آرگومان تکرار شود) جستجو می‌شوند. در هر کجایی که این رشته جادویی یافت شود، آدرس IP یا متن CNAME منبعی که پایش می‌شود به جای آن جایگزین خواهد شد.

دستور باید با مقدار خروج صفر برای موفقیت یا غیر صفر برای شکست خاتمه یابد.

بولی، پیش‌فرض false.

به‌طور معمول، نتایج extmon توسط همان ماشین حالت ضد نوسان (anti-flap) پردازش می‌شوند که برای پایشگرهای سنتی مانند افزونه‌های پایش HTTP و TCP به کار می‌رود. این بدان معناست که نتایج تابع آستانه‌های گوناگون ("ok_thresh"، "up_thresh" و "down_thresh") هستند و ممکن است مدتی طول بکشد تا یک وضعیت پایدار جدید عملاً تفکیک نام (resolution) را تحت تأثیر قرار دهد.

اگر "direct" روی "true" تنظیم شود، نتایج پایش extmon مستقیماً و بلافاصله پس از هر بررسی پایش به عنوان وضعیت نهایی منابع پایش‌شده اعمال می‌شوند. اگر دستور شما در هر اجرا بین موفقیت و شکست مرتباً نوسان کند، وضعیت داخلی و در نتیجه تغییرات حاصل از آن در تفکیک نام نیز نوسان خواهند داشت. این حالت زمانی مفید است که extmon در واقع وضعیت را از یک محیط پایش خارجی پیچیده جمع‌آوری می‌کند که خود قبلاً تمهیداتی مانند اقدامات ضد نوسان را به کار برده است.

عدد صحیح، پیش‌فرض 0 (نامحدود).

حداکثر تعداد فرایندهای همزمان برای اجرا.

این گزینه سقف تعداد دستورات همزمانی را تعیین می‌کند که اجرا خواهند شد. اگر از این محدودیت فراتر رود، دستورات اضافی برای 0.1 ثانیه بعد دوباره زمان‌بندی می‌شوند. پس از چند بار اجرا، فرایندها به اندازه کافی پخش می‌شوند تا بدون برخورد با محدودیت اجرا شوند.

این افزونه هنگام راه‌اندازی دیمن، یک فایل اجرایی کمکی به نام gdnsd_extmon_helper را اجرا می‌کند و این برنامه کمکی کارهای واقعی اجرای دستورات در زمان اجرا را انجام می‌دهد. این برنامه مهلت‌های زمانی و فواصل زمانی را مدیریت می‌کند و نتایج را از طریق یک لوله (pipe) به افزونه بازمی‌گرداند. این ارتباط در زمان اجرا به دلایل امنیتی یک‌طرفه است (هیچ ترافیکی از دیمن به برنامه کمکی ارسال نمی‌شود) تا اطمینان حاصل شود که یک دیمن آسیب‌دیده نمی‌تواند به سادگی از برنامه کمکی برای اختلال در اجرای دستورات خارجی سوءاستفاده کند. این جداسازی همچنین از دسته‌ای از باگ‌های عملکردی و امنیتی ناشی از ترکیب pthreads زمان اجرا با فورک کردن‌های روتین جهت اجرای فرایندهای فرزند جلوگیری می‌کند.

اسکریپت‌های اجراشده با همان شناسه کاربری (userid) اجرا خواهند شد که دیمن معمولاً امتیازات خود را به آن کاهش می‌دهد.

توصیف‌کننده‌های stdout، stdin و stderr معمولاً روی /dev/null تنظیم خواهند شد. اگر دیمن اصلی در حالت اشکال‌زدایی پیش‌زمینه از طریق "-f start"; اجرا شده باشد، stdout و stderr ممکن است به tty جاری متصل باشند.

gdnsd.config(5)، gdnsd(8)

راهنمای gdnsd.

Copyright (c) 2012 Brandon L Black <blblack@gmail.com>

این فایل بخشی از gdnsd است.

برنامه gdnsd نرم‌افزار آزاد است: شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نسخه ۳ این مجوز یا (به انتخاب خودتان) هر نسخه بعدی، بازتوزیع کرده و/یا تغییر دهید.

برنامه gdnsd با این امید توزیع شده است که مفید باشد، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید همراه با gdnsd نسخه‌ای از مجوز عمومی همگانی گنو را دریافت کرده باشید. در غیر این صورت، به http://www.gnu.org/licenses مراجعه کنید.

2026-04-04 gdnsd 3.8.3