نحوه مانیتورینگ سیستم های لینوکس با Glances
روشن بودن و در دسترس بودن سرور همیشه به معنی سلامت کامل سیستم نیست؛ چون ممکنه مصرف یه منبع بهطور غیرعادی بالا رفته باشه یا یه پراسس کل سیستم رو کند کرده باشه. مانیتورینگ سیستم های لینوکس با Glances کمک میکنه این مشکلات زودتر خودشون رو نشون بدن تا قبل از خوابیدن سرویس، علت بررسی و برطرف بشه.
Glances چیه و چه کاربردی داره؟
ابزار Glances یه برنامه متنباز، رایگان و چند سکویی واسه مانیتورینگ سیستمه. این ابزار اطلاعات مربوط به وضعیت و عملکرد سیستم و منابع اون رو جمعآوری میکنه و اطلاعات مهم رو بهصورت یکجا و فشرده توی یه صفحه جلو چشمتون میاره. Glances با پایتون نوشته شده و واسه جمعآوری اطلاعات سیستم از کتابخونه معروف psutil استفاده میکنه. Glances برای بسیاری از توزیعهای لینوکس از طریق Package Manager هم قابل نصبه.

چجوری Glances رو روی سیستم لینوکس نصب کنیم؟
برای نصب این ابزار روی سیستم دو تا روش داریم. توی نسخههای جدید Glances 4، حداقل نسخه پایتون موردنیاز به 3.10 رسیده؛ واسه همین سازگاری ابزار با توزیع لینوکس، نسخه پایتون و روشی که واسه نصبش انتخاب میشه، اهمیت داره.
نصب با PipX
توی این روش، Glances و وابستگیهای پایتونی اون داخل یک محیط جداگانه نصب میشن و مدیریت نسخهها و وابستگیها نسبت به نصب مستقیم با pip سادهتره:
sudo apt update sudo apt install pipx pipx ensurepath
دستور نصب پایه:
pipx install glances
نصب Glances با وابستگیهای مربوط به همه قابلیتهای اختیاری:
pipx install 'glances[all]'
نصب Glances با قابلیتهای اختیاری موردنیاز:
pipx install 'glances[gpu,web]'
نصب با apt
اینجا apt از بین پکیجهای مخزن خودِ سیستمعامل (دبیان یا اوبونتو)، پکیج مربوط به Glances رو نصب میکنه:
sudo apt install glances
توی این روش لازم نیست خودتون پایتون و وابستگیهاش رو نصب کنین. با وارد کردن این دستور، apt خودش دستبهکار میشه و اگه پکیج Glances به وابستگی خاصی نیاز داشته باشه، اونها رو هم خودکار نصب میکنه.
اگه به قابلیتهای جدیدتر یا بعضی Featureهای اضافی Glances نیاز دارین، بهتره قبل از انتخاب این روش، نسخه موجود در مخزن توزیع خودتون رو بررسی کنین.
تست نصب
واسه مطمئن شدن از نصب Glances و چک کردن ورژن اون، میشه از این دستور استفاده کرد:
glances --version
اجرای ابزار:
glances
انواع مختلف مانیتورینگ سیستمهای لینوکس با Glances
مستقل (Standalone mode)
Standalone برای زمانی مناسبه که فقط میخواین وضعیت یه سرور یا سیستم رو بررسی کنین؛ مثلاً وقتی مصرف CPU یهدفعه بالا رفته یا یه پراسس غیرعادی منابع سیستم رو مصرف میکنه. برای این کار لازم نیست سراغ یه سیستم مانیتورینگ جدا برین و همون اتصال SSH و اجرای Glances کارتون رو راه میندازه.
برای مانیتورینگ سیستمهای لینوکس با Glances در این حالت، کافیه روی سرور لینوکسیتون با SSH وارد بشین و بعد خود Glances رو روی سیستمتون نصب و اجرا کنین:
glances
Glances نتایج مانیتورینگ همون سرور رو بهصورتی متنی توی ترمینال بهتون نشون میده. در بخش بالایی رابط کاربری Glances، اطلاعاتی مثل نام میزبان، سیستمعامل، نسخه کرنل و Uptime نمایش داده میشه. علاوه بر این، بسته به قابلیتها و پلاگینهای فعال، ممکنه اطلاعات شبکه رو هم بتونید اونجا ببینید. مواردی مثل CPU، رم، فعالیت و ترافیک شبکه، فرایندهایی که در حال اجرا روی سیستم هستن، ظرفیت و فعالیت دیسکها و اطلاعات سیستمعامل هم بررسی میشن.

چند کلید تعاملی رایج:
- d ← برای جزئیات بیشتر در مورد دیسک. اینکه چقدر از ظرفیت دیسک پر شده و میزان فعالیتش (I/O) روی سیستم چقدره.
- n ← جزئیات شبکه (میزان فعالیت و ترافیک) سیستم رو نشون میده.
- c ← فرایندهای در حال اجرا روی سیستم رو براساس میزان مصرف CPU مرتب میکنه.
- m ← فرایندهایی که روی سیستم اجرا میشن براساس میزان حافظهای که مصرف میکنن مرتب میکنه.
- q ← برای خارج شدن از Glances
البته کلیدهای تعاملی Glances ممکنه بسته به نسخه تغییرات جزئی داشته باشن.
حالت وبسرور (Web Mode)
این حالت وقتی کاربردیتره که نخواین برای هر بار بررسی وضعیت سرور وارد SSH بشین یا بخواین اطلاعات Glances رو از یه سیستم دیگه ببینین. واسه استفاده از Web Mode، نصب بودن وابستگیهای Web UI لازمه؛ برای نصب وابستگیهای Web UI میتونین Glances رو با قابلیت web نصب کنین:
pipx install 'glances[web]'
یا اینکه نسخه کامل یعنی glances[all] رو واسه نصب انتخاب کنین.
pipx install 'glances[all]'
بعد بزنین:
glances -w
با زدن این دستور Glances توی حالت وب سرور اجرا میشه و میتونید اطلاعات و آمار مانیتورینگ سیستمتون رو بهجای ترمینال، بهشکل گرافیکی و از طریق Web UI (رابط کاربری تحت وب) روی مرورگرتون ببینید. بعد از باز کردن وب یوآی (Web UI)، امکان بررسی اطلاعات مختلف سرور مثل میزان مصرف CPU و رم، وضعیت هارد، ترافیک شبکه، پراسسهای در حال اجرا و آپتایم سیستم وجود داره. البته بسته به نسخهای که نصب شده و قابلیتهایی که فعال هستن بقیه دیتای تکمیلی هم ممکنه توی این صفحه نمایش داده بشه.
با اجرای مستقیم این دستور، Web UI فقط تا زمانی که خودِ Glances اجرا بشه در دسترس میمونه. اما اگه قرار باشه بعد از بستن ترمینال یا حتی ریاستارت شدن سرور همهچیز خودکار بالا بیاد، بهتره اون رو به عنوان یه سرویس Systemd تعریف و اجرا کرد. توی بستههای توزیعی، ممکنه قابلیتهای Glances با نسخهای که روی PyPI قرار داره متفاوت باشه و حتی احتمال داره Web UI هم بهطور کامل همراه پکیج ارائه نشده باشه.
اگه مرورگر وب روی همون سیستمی باز بشه که Glances روش در حالت وب موده، میشه از آدرس زیر استفاده کرد:
http://localhost:61208
اما اگه Glances روی یه سرور اجرا شده باشه و قرار باشه وضعیتش از روی یه سیستم دیگه چک بشه، باید IP یا آدرس در دسترسِ اون سرور وارد بشه:
http://SERVER-IP:61208
حالت وب یا همون Web Mode بهطور پیشفرض روی پورت 61208 اجرا میشه. وقتی قرار باشه Web UI روی شبکه یا اینترنت دسترسی داشته باشه، باز گذاشتن پورت 61208 بدون هیچ محدودیتی در اینترنت ریسک داره؛ دلیل این حساسیت هم اینه که Web UI و API میتونن اطلاعات جزئیتری از وضعیت سیستم و پردازشهای در حال اجرا رو در اختیار کاربر قرار بدن. فایروال میتونه این دسترسی رو محدود کنه. واسه بالا بردن امنیت هم راهکارهایی مثل استفاده از VPN یا راهاندازی Reverse Proxy به همراه HTTPS و احراز هویت دسترسی امنتری ایجاد میکنه.

کلاینت-سرور (Client/Server mode)
واسه مانیتورینگ سیستمها توی این حالت باید حداقل دو تا سیستم جدا داشته باشین. این حالت بیشتر به درد زمانی میخوره که چند سیستم دارین ولی نمیخواین روی سیستم مشاهدهکننده مستقیماً به هر سرور SSH بزنین و Glances رو اجرا کنین. در این روش، Glances روی سیستم مقصد در حالت Server اجرا میشه و سیستم مشاهدهکننده با اجرای Client به اون متصل میشه.
توی سیستمی که میخواین مانیتورینگ روش انجام بشه Glances رو نصب کنین و بعد بزنین:
glances -s
با اجرای این دستور، Glances روی این سیستم در حالت Server اجرا میشه.
روی سیستم مدیریتیای که میخواین اطلاعات مانیتورینگ رو توش ببینید هم Glances باید نصب بشه و بعد بزنید:
glances -c <IP_SERVER>
این دستور Glances رو در حالت Client اجرا میکنه تا به سروری که با Server Mode اجرا شده متصل بشه و اطلاعات اون رو نمایش بده.
پورت پیشفرض برای این حالت 61209 هست.
sudo ufw allow from CLIENT_IP to any port 61209 proto tcp sudo ufw status
سر پا نگه داشتن دائمی Glances
واسه اینکه Glances بعد از بستن ترمینال یا ریبوت شدن سرور از کار نیفته، راه انداختنش به عنوان یه سرویس Systemd میتونه ایدهآل باشه. اینطوری برنامه میره تو پسزمینه و بعد از بالا اومدن سرور هم خودکار شروع به کار میکنه. نمونه سرویسی که جلوتر میبینید واسه اجرای Glances روی حالت Web Mode آماده شده.
فقط یادتون باشه اگه Glances رو با Pipx نصب کردید، تنظیم سرویس Systemd به مسیر دقیق اجرای برنامه و محیط کاربری Pipx گره میخوره. واسه همین اگه مسیر اجرای برنامه روی سرور فرق داره، تغییر دادن مقدار ExecStart بر اساس خروجی دستور which glances معمولاً کار رو راه میندازه:
which glances
نمونه سرویس زیر برای اجرای Glances در حالت Web Mode نوشته شده و باید مسیر ExecStart رو با خروجی which glances روی سیستم خودتون هماهنگ کنین.
sudo nano /etc/systemd/system/glances.service
حالا محتوای زیر رو داخل فایل قرار بدین:
[Unit] Description=Glances After=network.target [Service] ExecStart=/usr/local/bin/glances -w Restart=always RemainAfterExit=no [Install] WantedBy=multi-user.target
در خط ExecStart، مسیر `/usr/local/bin/glances` رو با مسیری که از دستور which glances گرفتین جایگزین کنین. گزینه -w هم باعث میشه Glances در حالت Web Mode اجرا بشه.
بعد از ذخیره فایل، Systemd رو دوباره بارگذاری کنین و سرویس Glances رو اجرا و فعال کنین:
sudo systemctl daemon-reload sudo systemctl enable --now glances
برای بررسی وضعیت سرویس هم میتونین از دستور زیر استفاده کنین:
sudo systemctl status glances
اگه وضعیت سرویس `active (running)` باشه، Glances در حال اجراست و با ریاستارت شدن سرور هم بهصورت خودکار اجرا میشه.

مشکلات رایج
بالا نیومدن Glances
اگه سیستم مقصد مانیتور نمیشه، چک کردن وضعیت Glances اولین قدمه؛ چون احتمال داره برنامه اصلاً در حال اجرا نباشه یا سرویسش متوقف شده باشه:
sudo systemctl status glances
پورت Glances توی فایروال بسته هست
اگه پورت پیشفرض Glances رو توی Web Mode یا Client/Server عوض کردین، باید پورت جدید رو هم توی فایروال باز کنین. برای چک کردن وضعیت فایروال هم این دستور رو بزنین:
sudo ufw status
قاطی کردن پورت وبمود و کلاینتسرور
یه اشتباه رایج دیگه، یکی دونستن پورت Web Mode با حالت Client/Server هست. پورت پیشفرض وبمود معمولاً روی ۶۱۲۰۸ تنظیم میشه، اما واسه حالت کلاینتسرور پورت ۶۱۲۰۹ مورد استفاده قرار میگیره.
Glances فقط روی Localhost در دسترسه
توی مانیتورینگهای از راه دور باید بررسی کنین که Glances برای چه IPهایی در دسترسه. اگه فقط برای Localhost در دسترس باشه، سیستمهای دیگه نمیتونن بهش وصل بشن و فقط روی همون سرور قابل استفادهست.
مشکل در نصب با Pipx
اگه بعد از نصب با Pipx، ابزار Glances اجرا نمیشه یا یه سری از قابلیتهاش کار نمیکنن، چک کردن نسخه و مسیر اجرای برنامه با دستورهای glances –version و which glances اولین قدم برای پیدا کردن مشکل حساب میشه. در کنار این، نصب بودن extraهای موردنیاز واسه قابلیتهایی مثل Web UI هم میتونه مشکل رو حل کنه.
چندتا نسخه از Glances روی سیستم نصب شده
گاهی ممکنه چند نسخه از Glances با روشهای متفاوتی مثل apt و Pipx روی سیستم نصب شده باشن. توی این شرایط، ممکنه با اجرای دستور glances نسخهای متفاوت از چیزی که مدنظر شماست اجرا بشه. برای بررسی نسخه و مسیر فایل اجرایی میتونین از دستورهای زیر استفاده کنین:
glances --version
which glances
تجربه شخصی
واسه رصد کردن و مانیتورینگِ سرورهای لینوکسی ابزاری مثل Glances معمولاً کار رو کلی جلو میندازه؛ چون این امکان رو میده که آدم بتونه وضعیت چند سیستم رو خیلی سریع بررسی کنه. وقتی که مقیاس کار یه ذره بزرگتر بشه و پای سیستم هشداردهی، آرشیو کردن طولانیمدت دادهها، داشبوردهای مرکزی و مدیریت تعداد زیادی هاست وسط بیاد؛ اونجاست که ابزارهایی مثل Zabbix و Netdata معمولاً گزینههای قرصومحکمتری هستن و میتونن خودشون رو توی زیرساخت ثابت کنن.
نتیجهگیری
واسه مانیتورینگ سیستمهای لینوکسی، Glances میتونه قضیه رو خیلی راحتتر کنه و شاید دیگه نیازی نباشه واسه چک کردن اوضاع سرور، درگیر راهاندازی یه زیرساخت پیچیده بشین. وقتی این ابزار درست نصب و اجرا بشه، بررسی منابعی مثل CPU، رم، دیسک، شبکه و بقیه فرآیندهای در حال اجرا معمولاً سادهتر میشه و موقعی که یهو مصرف سرور میره بالا، احتمالاً سریعتر میشه ایراد کار رو پیدا کرد. تازه به جز اجرای مستقیم توی ترمینال، قابلیتهایی مثل Web Mode و حالت Client/Server هم دسترسی به آمارهای مانیتورینگ رو از روی بقیه سیستمها تا حد زیادی سادهتر میکنه.
اگه فقط قصد دارین اطلاعات رو از طریق مرورگر مشاهده کنید، Web Mode گزینه مناسبیه. اما برای ارتباط مستقیم بین دو تا Glances و بررسی سیستم از طریق ترمینال، میتونید از Client/Server Mode استفاده کنین.
برای این کار Glances رو به عنوان سرویس systemd روی سیستمتون تنظیم کنید. اینطوری وقتی سیستم دوباره راهاندازی میشه خود ابزار بهصورت خودکار اجرا میشه.
بله؛ Glances در حالت Client/Server امکان مانیتور کردن چند سیستم رو بهتون میده. با استفاده از قابلیت Central Browser و دستور glances --browser میتونید سیستمهای در دسترس رو ببینید و انتخاب کنید. همچنین توی نسخههای جدید هم امکان استفاده از نسخه تحت وب این قابلیت (WebUI Central Browser) با دستور glances --browser -w درست شده.