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

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

مقدمه

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

مبحث مورد بررسی این مطلب پارامترهای اصلی کاربر در agent زبیکس است که قبلا در مورد چگونگی
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 که اطلاعات در مورد سرویس را برمی‌گرداند را می‌توانید اجرا کنید. برای مثال،کپی رایت،اصلاحیه و همچنین ورژن 4.0.5:

zabbix_server –V

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

zabbix_agentd −V

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

vim /etc/zabbix/zabbix_agentd.conf

ویرایش  فایل پیکربندی agent  زبیکس

می توانیم مقدار پیش فرض را به صورتی که وجود دارد، رها کنیم و خط جدیدی بنویسیم. می نویسیم ‘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 به عنوان پارامتر های آیتم مشخص می کنیم دارد. اینجا ‘$1’ را مشخص می کنیم که به معنای اولین پارامتر از front end از پیکربندی آیتم است.

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

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

UserParameter=timeout,sleep 10;echo "test"

نمایش (UserParameter)

پس ما 3 پارامتر کاربر داریم .به یاد داشته باشید هر بار که در هر سرور یا پروکسی فایل پیکربندی 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)’ زیرا ما از تمام این متون قراراست مقدار واقعی 4.0 را استخراج کنیم. اما از آنجایی که این زبیکس 4.0 است، زبیکس فقط ‘4’را به ما نشان خواهد داد. بنابراین از ‘Text’ استفاده می کنیم. و فاصله ی بروزرسانی را بر روی 5 ثانیه تنظیم می کنم تا سریع تر کار کند.

ایجاد یک پارامتر کاربر جدید

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

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

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

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

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

مرحله ی پیش پردازش

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

ورژن Agent

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

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

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

item cloning

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

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

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

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

نوشتن آیتم  timeout در بخش key

پیش-پردازش اینجا اهمیتی ندارد، پس در تب 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، با مقدار ‘4.0’ در Last value. به یاد داشته باشید که ما در حقیقت چندین خط متن تصادفی را دریافت می کنیم. ولی عملکرد پیش-پردازش به ما کمک می کند که با فیلتر کردن عدد، ورژن را به دست بیاوریم.

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

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

نتیجه گیری

این نگاه سریعی به agent زبیکس و پارامترهای کاربر زبیکس بود.در مطالب بعدی می توانید اطلاعات بیشتری در این مورد کسب کنید. همچنین برای مطالعه مطلب بیشتر در حوزه زبیکس و فناوری اطلاعات به بخش مقالات سایت سدیدآفرین مراجعه کنید.