پارامتر‌های اصلی کاربرِ در agent زبیکس

مقدمه

آموزش افزایش کارکرد agent زبیکس با اضافه کردن check های خود که می‌توانند دینامیک یا استاتیک باشند.

مبحث مورد بررسی این مطلب پارامترهای کاربر در agent زبیکس هست. قبلا در مورد چگونگی و صحبت کرده‌ایم.

حالا بررسی می‌کنیم پارامتر‌های کاربر چی هستند و چرا باید از آن‌ها در زمینه agent زبیکس استفاده کنیم؟

Agent زبیکس

همانطور که می‌دانید agent زبیکس ابزاریست که به طور گسترده‌ای برای نظارت منابع محلی و اپلیکیشن‌ها در هر تاسیسات زبیکسی استفاده می‌شود.

agent زبیکس قطعا محبوب‌ترین ابزار نظارت هست چون نرم‌افزار فوق العاده سبکیه که فقط چند مگابایت مصرف می‌کند و فشاری به CPU وارد نمی‌کند.

پکیج‌های RPM برای اکثر ورژن‌های محبوب لینوکس موجود هست و امکان نصب ساده برروی هر ماشین ویندوزی هم وجود دارد.

مزایای agent زبیکس چیه؟ agent زبیکس متغیرهای زیادی دارد که می‌توانید با آنها ازداخل box نظارت کنید

این به این معناست که نیازی به ابداع چیز جدیدی نیست. نیازی ندارید که script های اختصاصی بنویسید و سناریوهای پیچیده نظارتی بدست بیارید.

تنها نیاز دارد دو دقیقه از زمان خود را برای نصب agent زبیکس برروی ماشین بگذارید، بعد documentation رو باز کنید.

در بخش Configuration > Items > Item type >Zabbix agent تمام آیتم‌های نظارتی موجود که در box ساپورت می‌شوند و بدون پیکربندی اضافه می‌توانید از آنها استفاده کنید را پیدا می کنید.

به سادگی به front end بروید، یک host برای Agent زبیکس خود بسازید، یک آیتم جدید که به آن نیاز دارید را با کمک documentation بسازید. می‌توانید وضعیت سرور، فضای خالی دیسک، رابط‌های شبکه، حافظه و خیلی چیزهای دیگر را در box نظارت کنید یا جستجو کنید.

پارامترهای کاربر

پارامتر کاربر چیست؟ گاهی نیاز دارید که چیزی را در ماشین لینوکس یا ویندوز که خیلی معمول نیست نظارت کنید نه مثل فضای دیسک یا بار CPU، بلکه مثل یک برنامه‌ی خاص و همانطور که میدانید متغیر مورد نظر خود را می‌توانید با چندتا دستور در CLI بدست بیاورید.

درحالی که آیتم مورد نیاز را نمی‌توانید در documentation پیدا کنید، و نیازه که به طریقی به زبیکس یاد بدهید که آن دستور کوچک و یا script کمی پیچیده تر را اجرا کند و مقدار دریافتی از آن script یا دستور را به عنوان مقداری در زبیکس دریافت کند.

در این مطلب به چگونگی این کار می پردازیم و همچنین توضیح می‌دهیم چه تفاوت‌هایی بین چیزهایی که بهشون پارمترهای کاربر استاتیک و دینامیک گفته میشود وجود دارد.

تو CLI باید فایل پیکربندی Agent زبیکس که به طور پیش فرض اینجا ذخیره شده را باز کنیم:

vim /etc/zabbix/zabbix_agentd.conf

دنبال UserParameter بگردید تا آیتم کوچک یا بزرگ خود را برای جمع آوری نوع خاصی از داده بسازید.

ساخت پارامتر کاربر

با اجرای دستور زیر در CLI که اطلاعات در مورد سرویس را برمی‌گرداند را می‌توانید اجرا کنید برای مثال،کپی رایت،اصلاحیه و هم چنین ورژن ۴٫۰٫۵:

zabbix_server –V

script مشابهی برای Agen قابل اجراست:

zabbix_agentd −V

بیاید سعی کنیم یک پارامتر کاربر برای تهیه ی ورژن اصلی باینری خود که ۴٫۰٫۵ هست بسازیم.
اول فایل پیکربندی agent زبیکس رو ویرایش می کنیم:

vim /etc/zabbix/zabbix_agentd.conf

می تونیم مقدار پیش فرض رو به صورتی که هست رها کنیم و خط جدیدی بنویسیم.می نویسیم ‘UserParameter=’ که کلیدی هست که باید در front end استفاده کنید.و باید منحصر به فرد و طبق key syntax که می تونید تو

(https://www.zabbix.com/documentation/current/manual/config/items/userparameters#user_parameters)

چکش کنید باشه.و لازمه که اونو به یاد داشته باشید

UserParameter=static,/usr/sbin/zabbix_agentd −V

حالا وقتی در front end آیتمی از تایپ ‘Zabbix agent’ و با کلید ‘static’ بسیازیم همان مقادیری رو دریافت می کنیم که از اجرای این دستور میگیریم.

حالا یک پارامتر کاربر دیگه ایجاد می کنیم.در خط بعد ‘UserParameter’ رو با کلید ‘dynamic’ اضافه می کنیم و در پرانتز ها،که در front end برای مشخص کردن پارامتر های مختلف استفاده می کنیم ،باید بنویسیم * بعد یک کاما و بعد فرمانی که باید اجرا شود

قسمت آخر بستگی به چیزی که در front end به عنوان پارامتر های آیتم مشخص می کنیم داره.اینجا ‘$۱’ را مشخص می کنیم که به معنای اولین پارامتر از front end از پیکربندی آیتم است.

UserParameter=dynamic[*],/usr/sbin/$1 –V

می توانید پارامتر های جدید رو با ‘:wq’ ذخیره کنید.
حالا سومین پارمتر رو هم اجرا می کنیم تا نشون بدیم هنگام کار با پارامتر های کاربر مراقب باشید:

UserParameter=timeout,sleep 10;echo "test"

پس ما ۳ ارامتر کاربر داریم .به یاد داشته باشید هر بار که در هر فایل پیکربندی زبیکس،agent زبیکس،یک سرور یا پروکسی تغییری ایجاد می کنید باید فرآیند روی خود سرور ری استارت کنید ،اما فقط فرآیندی که در در فایل پیکربندی ان تغییر ایجاد کرده اید.در اینجا از فرمان زیر استفاده می کنیم:

systemctl restart zabbix-agent

حالا میتونیم به front end بریم .در بخش Configuration > Hosts ما host جدیدی به نام UserParameters با localhost agent افزوده ایم.

افزودن آیتم های جدید

بیایید آیتم های جدیدی در Configuration > Host> UserParameters > Items > Create Item درست کنیم.

برای نام ‘Agent version’،برای تایپ ‘Zabbix agent’ و برای کلید ‘static’ را انتخاب می کنیم.

در بخش Type of information می توانید ‘Numeric (float)’ زیرا ما از تمام این متون قراره مقدار واقعی ۴٫۰ رو استخراج کنیم.اما از اونجایی که این زبیکس ۴٫۰ هست ،زبیکس فقط ‘۴’را به ما نشان خواهد داد.بنابراین از ‘Text’ استفاده می کنیم .و فاصله ی بروزرسانی رو روی ۵ ثانیه تنظیم می کنم تا سرع تر کار کند.

همون طور که در CLI دیده میشه ،فرمان ‘zabbix_server −V’ اطلاعات بسیاری نشون میده،در حالی که ما فقط نیاز به استخراج اطلاعات در مورد ورژن داریم.

این به آن معناست که ما باید یک مرحله ی پیش پردازش در بخش زیر اضافه کنیم:

Configuration > Hosts > UserParameters > Items > Preprocessing > Preprocessing steps.

در بسیاری از موارد می توان از ‘Regular expression’ برای Name استفاده کرد.برای انتخاب مقدار Parameter،چک می کنیم چه خطوطی در CLI داریم. ‘zabbix_server (Zabbix) 4.0.5’ رو داریم.

پس در الگو ‘zabbix_.* ([0–۹].[۰–۹])’ خواهد بود که در آن به جای * هر چیزی می تواند قرار بگیرد و بازه [۰–۹] مکان قرارگیری هر عددی هست.و می می خواهیم اولی به ترتیب زیر نمایش داده شود:

روی Add کلیک کنید تا این آیتم جدید رو اضافه کنید.حالا می تونید اطلاعات در مورد ورژن رو با کلیک روی Agent Version در بخش Configuration>Hosts>Items چک کنید.

این یک آیتم استاتیکه،در حالی که ما یک آیتم دینامیک هم درست کردیم.برای چک کردن پارامتر های کاربر این رو اجرا کنید:

cat/etc/zabbix/zabbix_agentd.conf | grep UserPara

بیاید این آیتمی که تازه ساخته ایم را Clone کنیم و برخی مقادیر رو تغییر بدیم.
اینجا ‘Server version’رو در قسمت Name، ‘Zabbix agent’برای Type خواهیم داشت اما Key، ‘dynamic’ هست.

در پارامتر می تونیم بجای ‘$۱’ نام باینری که میخواهیم استفاده کنیم مشخص می کنیم.

 UserParameter=dynamic[*],/usr/sbin/$1 –V

مثل بخش پیش پردازش،Name و Parameter همانند دستور ثبت اول ثابت می مونند.

حالا با کلیک روی Clone آیتم دیگری رو ثبت می کنیم. این آیتم برای قسمت Name ، ‘Timeout example’و برای Type، ‘Zabbix agent’رو خواهد داشت.در بخش Key آخرین آیتممون هم می نویسیم ‘timeout’:

پیش-پردازش اینجا اهمیتی نداره،پس در تب Preprocessing تغییری ایجاد نمی کنیم.این آیتم رو هم با Update interval 5 ثانیه ثبت می کنیم.

و فرمان زیر رو در CLI اجرا می کنیم که به سادگی تغییراتی که تازه در front end ایجاد کردیم رو بارگیری کنیم و زمانمونو ذخیره کنیم.

zabbix_server −R config_cach_reload

نکته:اگر هرچیزی درست کار نمی کنه ،مثلا یه آیتم به دلیل تطابق نداشتن regular expression ها ساپورت نمیشه، می تونید با اجرای فرمان های زیر اشکالات روپیدا کنید:

zabbix_get −s 127.0.0.1 −k dynamic[zabbix_server]
zabbix_get −s 127.0.0.1 −k static

تصحیح ها رو در فایل vim انجام بدید و بعد ‘:wq’ رو اجرا کنید تا اگر تغییری بوده ذخیره بشه و سپس agentرو ری استارت کنید:

systemctl restart zabbix-agent

نتایج

در بخش Monitoring > Latest data می توانیم نتیج رو با مشخص کردن نام host،و بدون علامت کردن گزینه ی Show details و کلیک روی Apply ببینیم.

ما سه آیتم داریم،Agent version، Server version ، با مقدار ‘۴٫۰’ در Last value.به یاد داشته باشید که ما در حقیقت ئاربم چندین خط متن تصادفی دریافت می کنیم ولی عملکرد پیش-پردازش به ما کمک می کنه که با فیلتر کردن عدد ورژن رو بدست بیاریم.

آخرین آیتم، Timeout example ساپورت نمیشه.پیام خطا “Timeout while executing a shell script”رو نشون میده.به اد داشته باشید که در تمام فرآیند ها زبیکس یک پارامتر timeout وجود داره.به این معناست هر پارامتر کاربر مختصی که ایجاد می کنید و طولانی تر از پارامتر timeout اجرا شود در front end زبیکس ساپورت نمی شود.

بنابراین هنگامی که در حال ایجاد check های اختصاصی خودتان هستید،باید مطمئن شوید به اندازه ی کافی سریع اجرا می شوند.اگر script های اختصاصی دارید که در دوره ی طولانی تری اجرا می شوند،باید شیوه ی دیگری برای اجرا و جمع آوری متغیر به عنوان یک مقدار پیدا کنید.

نتیجه گیری

این نگاه سریعی به agent زبیکس و پارامترهای کاربر زبیکس بود.در مطالب بعدی می توانید اطلاعات بیشتری در این مورد کسب کنید.

نویسنده: آرش سرابی

ما را از نظرات خود آگاه سازید

لطفا در صورت تمایل، نظر خود را در مورد مطلب بالا، بنویسید.