haproxy و ردیس کلاستر

ردیس یک محدودیت خیلی مهمی داره و اون اینکه single thread  و برای همین نمی‌تونه  بیشتر از  یک core از پردازشگر رو استفاده کنه. یکی از راه‌حل‌های روتین استفاده از کلاستر ردیس که عملا اطلاعات بین چند node ردیس پخش میشه(sharding)‌. نکته مهم اینه که در این مدل شما چند نود ردیس به شکل master  دارید که هر کدوم از اونها باید دست کم یک slave داشته باشند تا در صورتیکه یک نود به هر دلیل از دسترس خارج شد، نود slave به صورت خودکار وارد بازی بشه.

در این پروسه  هیچ تضمینی برای اینکه اطلاعات از دست نره (در زمان از دست رفتن نود master)‌ وجود نداره! دلیلش اینه که شما اطلاعات رو روی node مستر می‌نویسید، نود مستر به کلاینت میگه اوکی دیتا رو دارم و بعد تازه میره دنبال اینکه دیتا  روی نود slave هم ذخیره بشه. :)‌

این رو هم بگم که برای اینکه دیتا به شکل مساوی بین node های مستر پخش بشه، کلاستر ردیس از چیزی به اسم SLOT استفاده میکنه. در مجموع ۱۶۳۸۴ اسلات ردیس کلاستر داره که بسته به تعداد node هایی که داریم میاییم اسلات ها رو بین نودها تقسیم میکنیم.

کلاینت در صورتی که به یک node (مستر) درخواست بده واطلاعات روی اون  نباشه، بجای اینکه کلید درخواستی رو بده، اطلاعات nodeی رو  که کلید داره رو میده و دوباره کلاینت باید به اون دومی درخواست بده 🙂  و  این میشه همون سربار یا overhead که ردیس کلاستر به ردیس معمولی داره بعلاوه اینکه یک سری محدودیت ها رو هم خواهید داشت مثل اینکه نمیشه از قابلیت Geo location ردیس استفاه کنید .

حالا نکته اینجاس که اگر کلاینت به یک نود مستر وصل شه و اون نود به هر دلیل داون بشه، هر چند slave به شکل خودکار تبدیل به مستر میشه، اما دیگه کلاینت از اون نود اطلاعی نداره!‌ برای حل این مشکل از لودبالانس HAPROXY استفاده میکنیم.

خودم haproxy رو به دلایل خیلی زیادی با داکر همیشه بالا میارم که کار رو خیلی ساده میکنه و برای اینکار هم لازم نیست همه چی رو از اول بسازیم، از یک داکر اماده استفاده میکنیم.

و بعد باید اون رو build کنیم.

قبل از اجرای تنظیمات باید یک کانفیگ haproxy ایجاد کنیم که اون رو به خورد کانتینر بدیم.

بخش frontend باعث میشه haproxy روی پورت  ۶۳۷۹ لیستن کنه و هر ترافیکی هم که به سمتش بیاد رو به  backend پیشفرضی که تعریف کردیم، بفرسته.

در بخش backend که قلب اصلی سیستم، haproxy  به نودهای فقط master ترافیک رو می‌فرسته. نکته قشنگ کار اینه که در اینجا همه نود های redis چه مستر و چه slave رو میدیم و از haproxy میخوایم بره وضعیت نودها رو خوش در بیاره. haproxy هم هر یک ثانیه میره از نودهای ردیس میپرسه که شما مسترسی یا salve  و اونها هم اگر جواب بدند مستر، به رنگ سبز در میان و اگر slave باشند دیگه از دور خارج میشند و عملا ترافیکی به سمت اونها نمیره 🙂

در بخش stats هم که صرفا امار haproxy رو فعال کردیم و کار مهمی انجام نمیده، بخش اول nbproc هم نمایانگر تعداد core های سرور و اینجا با فرض اینکه سرور هفت core پردازشی داره، شش تا از اونها رو بدین شکل به خورد haproxy میدیم 🙂 haproxy هم مشابه nginx میاد به تعداد core هایی که مشخص کردیم child میسازه.

و در نهایت داکر ha رو با کامند زیر اجرا می‌کنیم.

یک قابلیت خوب این کانتینر اینه که میشه کانفیگ haproxy روی سرور اصلی رو ویرایش کرد، کانتینر به شکل خودکار متوجه این امر میشه و در صورتی که مشکلی در سینتکس وجود نداشته باشه، تغییر رو اعمال میکنه. برای اینکه از این قابلیت استفاده کنید باید تغییری در ادیتور vim بدیم.

 

و در نهایت اینکه اگر سرورتون زیر بار خیلی زیادی حتما تنظیمات زیر داخل sysctl فراموش نشه.

 

مدیریت پسورد‌های خود را به ‫password-store بسپارید

اگر  با سرورهای زیادی سر و کله می‌زنید که هر کدوم از اونها هم برنامه‌های زیادی رو در دل خودشون اجرا میکنن مثل دیتابیس و البته  استفاده از  پسورد مشترک و پسورد با الگوی خاص  هم غدقن باشه و بخواید کاری کنید که هر کاربر به پسورد خودش دسترسی داشته باشه و حتی برای نگهداری پسوردهای شخصی‌تون می‌تونید از برنامه‌ی ترمینالی زیبا و خوش‌دست pass استفاده کنید.

اول از همه آخرین نسخه برنامه یعنی ۱.۶.۳ رو نصب داشته باشید. اگه اوبونتو ۱۴.۰۴ دارید برنامه داخل مخزن نسخه ۱.۴ رو داره که برای کار ما یه نموره قدیمیه.

این برنامه برای رمز کردن پسوردهای ذخیره شده روی کامپیوتر از برنامه‌ی ‫gpg استفاده میکنه و برای اشتراک پسوردها از  git بهره می‌بره.

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

سیاست من برای ساخت کلید اینه. یک کلید برای دسترسی به همه پسورد‌های داخلی که خودم و رییس بهش دسترسی داریم  و چند کلید هم به تعداد گروه‌های کاری داخل شرکت. مثلا گروه برنامه‌نویسی که قرار نیست به همه سرورها و دیتابیس‌های درون شرکت دسترسی داشته باشه یک کلید اختصاصی به اسم ‫Dev دارن.

کلیدی می‌تونه اختصاصی برای استفاده‌ی یک شخص هم ساخته بشه و دسترسی اون فرد به فضاهایی که امکانش رو داره فراهم کنه مثل لیدر برنامه‌نویس‌ها که قطعا دسترسی‌های بیشتری رو نسبت به یک آدم تازه وارد خواهد داشت.

برای ساخت کلید از دستور زیر باید استفاده کنید.

 

با زدن این دستور چند گزینه جلوتون سبز میشه که همون شماره‌ی اول گزینه‌ی دلخواه ماست.

keys

مرحله‌ی بعد باید طول کلید رو مشخص کنید که همیشه طولانی‌ترین حالت رو انتخاب کنید (۴۰۹۶ بیت)

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

توی مراحل بعدی باید یک  اسم و نشون برای کلیدتون بذارید که بهتره واقعی باشه و یک راه ارجاع به کلیدها، ایمیلیه که تو همین بخش مشخص میکنید. مثلا برای گروه برنامه‌نویسی رو dev@example.com  بذارید و برای گروهی که دسترسی به همه‌ی پسوردها داره sys@example.com گزینه‌ی مناسبیه.

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

 برنامه‌ در آخر برای تولید کلید ازتون می‌خواد که با سیستم عامل فعالیت کنید تا بتونه به صورت تصادفی کلید رو بسازه. توی این مواقع می‌تونید یک ترمینال جدید باز کنید و داخلش کامند زیر رو اجرا کنید!

 

اگه دیدید این روش هم کارساز نیست، مرورگرتون رو هعی باز و بسته کنید  و دکمه‌های کیبرد رو به صورت تصادفی بزنید

برای مشاهده‌ی کلید‌ ساخته شده  از این کامند استفاده کنید.

 

می‌رسیم به بخش زیبای کار و اون ساخت فضایی برای نگه‌داری پسوردهاست (با استفاده از کلیدهایی که ساختیم)! برای اینکار از دستور زیر استفاده می‌کنیم.

 

‫gpg-id در اینجا همون ایمیل اختصاصی کلید میشه که مرحله‌ی قبل ایجاد کردید.

با زدن این دستور  فولدر مخفی .password-store  در پوشه‌ی خونگی‌تون  به همراه یک فایل به اسم gpg-id ساخته میشه. فایل gpg-id به برنامه pass میگه که پسوردهای ساخته شده با کدوم کلید رمز بشن.

برای ذخیره‌ی پسورد جدید از دستور زیر استفاده کنید.

 

که میشه پسورد روت دیتابیس سرور ۱۷۲.۲۰.۲۳.۲ و با زدنش برنامه ۲ بار ازتون پسورد رو می‌پرسه.

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

 

فایلی که داخل این فولدر موجوده به اسم root.gpg رو اگر با یک ادیتور باز کنید یک سری نوشته‌ی در هم و برهم خواهید دید که بدون دسترسی به کلید باز کردنش کار خیلی خیلی سختیه و تا حدی نشدنیه!

و برای همین دیگه نگرانی از شیر کردن این فضا با دیگران نخواهید داشت. به راحتی میشه این فضا رو با استفاده از git با دیگران به اشتراک گذاشت بدون اینکه نگران باشید  دیگران پسوردها رو بخونن. برای اینکار خود pass دستورهایی مشابه دستورهای git رو براتون ایجاد کرده.

 برای استفاده‌ی شخصی هم کافیه محتویات پوشه‌ی password-store رو به فضای کلود رایگانی مثل دراپ‌باکس انتقال بدید که خیالتون از بابت دسترسی دائمی به پسوردها و کلیدها راحت باشه.

 

حالا فرض کنید میخواید برای گروه Dev پسوردهایی رو بسازید که با کلید خودشون رمز شده باشن! برای اینکار به برنامه pass میگیم که فولدر Dev رو ایجاد کنه اینبار با کلید مد نظرمون..

 

روش دستی هم اینه که داخل پوشه‌ی password-store فولدر Dev رو ایجاد کنیم و داخلش فایل مخفی  gpg-id رو ایجاد کنیم. محتوای فایل هم ایمیلی هست که به کلید اختصاص دادیم، dev@example.com . برنامه‌ی pass تمام پسوردهایی که زیر مجموعه‌ی Dev باشن رو به صورت خودکار با کلید جدید ایجاد میکنه.

برای دیدن لیست پسوردهایی که ذخیره دارید کافیه دستور pass رو بزنید.

 

برای نمایش پسورد باید کامند زیر رو بزنید و passphrase خودتون رو هم به برنامه بدید تا  پسورد رو مشاهده کنید. passphrase رو هم میشه کاری کرد که تا زمانی که لاگین هستید معتبر باشه و هر بار برنامه ازتون اون رو نپرسه. حتی میشه کاری کرد که passphrase پسورد لاگین به سیستم بشه که با جستجو میتونید اون رو پیدا کنید 🙂

 

برای تولید پسورد تصادفی ۱۵ حرفی از دستور زیر استفاده کنید.

 

برای پاک کردن یک پسورد هم از این دستور استفاده کنید.

 

یا به صورت عادی برید فایل و فولدرش رو پاک کنید.

به جای اس‌اس‌اچ از موشی استفاده کنید

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

Mosh مخفف Mobile Shell دقیقا با همین هدف نوشته شده، اینبار بجای TCP با استفاده از پروتکل UDP اتصال به سرور مقصد برقرار میشه  و اولین ویژگی که اون رو حس خواهید کرد، زنده بودن محیطه، انگار نشستید پشت مانیتور و دارید تایپ می‌کنید دستور رو، ویژگی دوم اینه که با عوض شدن آی‌پی حتی اتصال به سرور مقصد قطع نمیشه! اگرم که آی‌اس‌پی تون هعی بازیش گرفته و چراغ لینک مودم‌تون خاموش روشن می‌شه دیگه خیالتون راحته که از نو نباید به سرور مقصد وصل شید.

از اون مهمتر اینه که حتی کاربر معمولی هم می‌تونه از موشی استفاده کنه و لازم نیست حتما مجوز روت رو برای استفاده اینکار داشته باشید.

موش حاصل کار یکی از دانشجوهای دانشگاه Mit رونوشت به خودمون و دانشگاهامون که هیچ خروجی ازشون نداریم (داریم؟)

نمودار بالا هم مقایسه زمان پاسخ‌دهی در ssh و mosh رو نشون می‌ده که خب ۵ و ۱۷۳ میلی ثانیه رو مقایسه کنید با ۵۰۰ میلی ثانیه اس‌اس‌اچ! تقاوت خیلی خیلی محسوسه.

نکته ای که هست اینه که mosh برای وصل شدن در ابتدا از ssh استفاده میکنه و برای همین اگه بدون وارد کردن پسورد به سرور مقصد وصل می‌شید با mosh هم مشکلی نخواهید داشت.

نصب Mosh کار خیلی سختی نیست و احتمالا هر دیسترویی که داشته باشید اون رو درون مخازن می‌تونید گیر بیارید!

اگرم روی سرور فایروال دارید ، پورت‌های ورودی UDP بین ۶۰ هزار تا ۶۱ هزار رو باز کنید تا کلاینت بتونه به سرور وصل شه.

موش
موش

برای اتصال به سرور هم مشابه ssh باید همچین دستوری رو بزنید!

mosh root@127.0.0.1

‫پی‌نوشت: مرسی از دوست خوبم ebraminio بخاطر معرفی این برنامه خوب:ی

بازی با سرور

یه چند وقتیه که سرور این و اون دستمه و منیج می‌کنم بد ندیدم یه سری نکاتی که به درد بخورن رو بنویسم اینجا بیشتر برای خودم که ازشون استفاده کنم بعدها 🙂 امیدوارم به درد دوستان هم بخوره!

Capture

یکی از اولین کارهایی که می‌کنید وقتیکه سرور افتاد زیر دستتون به جون سخت افزارش بیفتید و ببینید دقیقا چی به چیه 🙂

مثلا با این دستور خیلی راحت سرعت نوشتن اطلاعات روی هارد رو در بیارید.

واو یه شاهکاره 🙂 نمی‌تونید تصور کنید شور و شوقی رو که دارم از اینکه همچین سروری زیر دستمه 🙂

خب حالا ببینم چند تا پردازشگر داره سرور و برای اینکار از دستور زیر کمک می‌گیریم

عدد ۱۶ داره می‌گه سرور ۱۶ تا هسته داره 🙂 قضیه چیه؟ پردازشگر ۱۶ هسته‌ای داریم؟ با دستور زیر اسم و مدل پردازشگر رو در میاریم.

و حالا با یه سرچ کوچولو به این می‌رسیم که پردازشگر E5620 چهار هسته داره که با فناوری خاص اینتل، انگاری ۸ تا هستن (تریت)! بنابراین خیلی فریب ۸ هسته ای بودنش رو نخورید چون واقعا ۴ تا هسته بیشتر نداره. اما فرکانس کاری ۲.۴ گیگاهرتز هست 🙂
حتما باید حدس زده باشید که سرور دو تا پردازشگر داره!‌ 🙂

ببینیم لینوکس فرکانس کاری رو چند نشون می‌ده؟

اینجاست که باید مشکوک شید که نکنه کلاهی گذاشته شده سرتون! چرا فرکانس واقعی در حال کار پردازشگر ۱۶۰۰ مگاهرتزه؟ 🙂 با فرکانس اسمی ۲۴۰۰ اینقدر اختلاف داره؟ که بعد متوجه می‌شیم آقای اینتل این پردازنده رو مجهز کرده به اسپید استپ که دقیقا کارش اینه که فقط زمانایی که لازمه و فشاری هست فرکانس پردازشگر بره بالا و از این طریق هم توی مصرف انرژی صرفه جویی شده باشه و هم طول عمر پردازشگر بالا بره!

برای اینکه مطمئن شیم باید یه جوری سیستم رو تحت فشار قرار بدیم! 🙂

جالب نیست؟ به صورت موازی و همزمان، میایم تا زمان نامحدودی اطلاعات بیخودی و در وری (صفر) روی هارد می‌نویسیم! بعد توی تب جدید می‌ریم وضعیت فرکانسای پردازشگر رو چک می‌کنیم 🙂

کار بیشتر کشدیدم، هسته‌های بیشتری تحریک شدن و تا حداکثر  فرکانس ممکن هم دارن کار می‌کنن 🙂 راضی هستیم و می‌ریم سراغ بقیه کار!

یکی از کارایی که بعد راه افتادن امکانات مختلف روی سرور حتما باید هرازگاهی چک کنید، تعداد افراد آنلاین و لحظه‌ای هست! اینکه آدمای مختلف دقیقا با چه آی‌پی‌هایی و چه پورت‌هایی به سرور وصل شدن و دارن از خدمات مختلف مثل ssh و یا دیدن سایت و بقیه امکانات بهره می‌برن 🙂 و از همه مهمتر، آیا یک آی‌پی به صورت غیر عادی داره از منابع سیستم استفاده می‌کنه؟

همم، به ترتیب از کمترین تا بیشترین استفاده یهو براتون لیست می‌شه‌:) یه نفر تونسته تا چهل کانکشن مختلف به سرور بزنه! می‌شه با توجه به قدرت سخت افزار و اینجور مسائل،‌ محدودیت گذاشت تا افراد از یه حدی بیشتر نتونن از منابع استفاده کنن.

فرض کنید میزبان سایتی هستید و می‌خواید ببینید دقیقا چقدر آدم داره از سایتتون بازدید به عمل می‌یاره!؟

زیباست 🙂 ۸۳ نفر دارن از پورت ۸۰ استفاده میکنن!

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

یه راه اینه آمار ساعتایی رو که با ssh وصل شدید به سرور رو در بیارید، تمام موارد مهم مثل لاگین شدن توی سنت او اس در فایلی به اسم secure ثبت می‌شه! پس با دستور زیر سعی میکنیم به هدفمون برسیم!

الان می‌تونید حتی آمار کسایی که بدون اطلاع شما وصل شدن ssh رو هم در بیارید اما هنوز روش خوبی  نیست برای اینکه بشه حقوق ساعتی رو به صورت مستند دریافت کرد.

با کمی جستجو به برنامه psacct می‌رسیم و متوجه می‌شیم یک برنامه شاهکاره! 🙂

جالبناک شد!  در مجموع ۷۱ ساعت وصل بودم به سرور که با اضافه کردن d به دستور می‌شه حتی به تفکیک روز آمار رو گرفت!

خب ساعت دو و چهل دقیقه صبحه، به نظرم دیگه کافیه برای امروز!

منبع عکس

 

 

 

 

 

۲۰ ابزار مانیتورینگ سیستم لینوکس که هر مدیر سیستمی باید با آن آشنا باشد

نیاز به نظارت بر عملکرد سیستم لینوکس دارید؟ دستورات و برنامه های زیر را آزمایش کنید. اکثر توزیع های لینوکس به تعداد زیادی از ابزار مانیتورینگ سیستم مجهز هستند. تعدادی از این ابزار  رو نیز باید خود اقدام به نصب آنها کنید. شما از این ابزار می توانید برای پیدا کردن علل احتمالی یک مشکل در عملکرد سیستم استفاده کنید.

۱- top — میزان فعالیت یک پروسه

برنامه top ابزاری است برای نشان دادن وضعیت پروسه های فعال به صورت آنی و پویا. به صورت پیشفرض لیست برنامه هایی که بیشترین میزان مصرف cpu را دارند نشان داده می‌شود. این لیست هر ۵ ثانیه به روز میشود.

Fig.01: Linux top command

برای اجرا شدن برنامه در ترمینال دستور top را  در ترمینال وارد کنید. در هنگام فعال بودن برنامه شما می توانید از کلیدهای زیر استفاده کنید.

کلیدهای مهم در هنگام استفاده از برنامه top

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

Tasks: 180 total,   ۲ running, 178 sleeping,   ۰ stopped,   ۰ zombie

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

Mem:   ۳۹۹۳۱۸۰k total,  ۳۹۶۳۸۵۲k used,    ۲۹۳۲۸k free,   ۳۱۷۶۷۶k buffers
Swap:   ۸۱۱۲۰۸k total,     ۳۵۳۲k used,   ۸۰۷۶۷۶k free,  ۲۳۸۷۵۵۶k cached

a مرتب کردن اطلاعات براساس بیشترین میزان مصرف منابع سیستم.  برای شناسایی سریع برنامه هایی که بیشترین مصرف رو دارند این گزینه عالی هست.

f وارد محیطی می شوید که قادر هستید برنامه top رو تنظیم و پیکربندی کنید. اینکه چه ستون هایی در برنامه top به شما نشان داده بشه، از این قسمت قابل کنترل هست (ستون های نمایش داده شده در برنامه کنارشون یک علامت ستاره قرار دارد). همینطور مخفف تمام ستون‌ها در اینجا نمایش داده می‌شود. برای خارج شدن  از Esc استفاده کنید.

k برای کشتن یک برنامه از این حرف استفاده کنید. بعد از وارد کردن این حرف باید آی دی پروسه ای که قصد نابود کردنش را دارید وارد کنید.

z برای روشن و خاموش کردن رنگ

q برای خارج شدن از برنامه از این حرف استفاده کنید.

اطلاعات بیشتر

۲- vmstat — بررسی فعالیت سیستم، سخت افزار و اطلاعات سیستم

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

vmstat 3

خروجی نمونه:

vmstat3

نمایش استفاده از حافظه Slabinfo

vmstat -m

دریافت اطلاعات در مورد فعال یا غیرفعال بودن حافظه صفحات

vmstat -a

اطلاعات مربوط به هارد دیسک

vmstat -d

اطلاعات بیشتر

۳- w– پیدا کردن اینکه چه کسی به سیستم متصل است و چه کاری انجام داده است؟

از این دستور برای گرفتن اطلاعات مربوط به کاربرانی که به سیستم متصل هستند استفاده می شود. اطلاعاتی همچون زمان لاگین شدن کاربران و اینکه چه مدت غیرفعال بوده اند و یا از کدام آی پی وارد ماشین شده اند و میزان استفاده آنها از پردازشگر چقدر بوده، را می توان به کمک این دستور بدست آورد.

w username

w enghezi

خروجی نمونه:

w-enghezi

۴- uptime– چه مدت سیستم در حال کار است؟

از این دستور می توان مدت زمانی را که سرور در حال کار است را بدست آورد. این دستور اطلاعات مربوط به زمان جاری، مدت زمان کار ماشین، تعداد کاربران متصل به سیستم و متوسط بار سیستم در یک، پنج و ۱۵ دقیقه گذشته را می‌توان بدست آورد.

uptime

خروجی:

uptime

عدد یک برای متوسط بار به عنوان مقدار بار مطلوب در نظر گرفته شود. این عدد برای سیستم با سیستم فرق می‌کند. برای سیستم تک هسته‌ای این عدد از یک تا سه و برای پردازشگر با قابلیت SMP این عدد ۶ تا ۱۰است.

۵- ps — نمایش پروسه‌ها

دستور ps پروسه های جاری را به صورت ثابت و یک عکس به ما نشان می دهد. بر خلاف دستور top که این عمل را به صورت پویا نشان می‌داد. برای نشان دادن همه پروسه‌ها ما از آرگومان A و یا e استفاده می‌کنیم.

ps -A

نمونه خروجی:

ps-A

ps مشابه دستور top است با این تفاوت که می تواند اطلاعات بیشتری را به ما نشان دهد.

نمایش خروجی به فرمت بلند

ps -Al

نمونه خروجی:

ps-Al

برای روشن کردن حالت فول و کامل (در این حالت آدرس دقیق پروسه‌ای که در حال اجراست نمایش داده می‌شود)

ps -AlF

نمونه خروجی:

ps-AlF

برای نمایش Treads ( منظور همان LWP و NLWP)

ps -AlFH

نمونه خروجی:

ps-AlFH

نمایش Treads بعد از انجام پردازش‌ها

ps -AlLm

نمونه خروجی:

ps-AlLm

نسخه قابل چاپ همه پروسه‌ها بر روی سرور

ps ax

نمونه خروجی:

ps ax

ps axu

نمونه خروجی:

ps aux

نسخه قابل چاپ پروسه به صورت سلسله مراتبی(درختی)

ps -ejH

نمونه خروجی:

ps -ejH

ps axjf

نمونه خروجی:

ps axjf

pstree

نمونه خروجی:

pstree

نسخه قابل چاپ امنیتی

ps -eo euser,ruser,suser,fuser,f,comm,label

نمونه خروجی:

ps -eo euser,ruser,suser,fuser,f,comm,label

ps axZ

نمونه خروجی:

ps axZ

ps -eM

مشاهده تمام پروسه‌هایی که متعلق به کاربر enghezi می‌باشد

ps -U enghezi -u enghezi u

تنظیم خروجی در یک قالب تعریف شده توسط کاربر

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan

نمایش شماره پروسه‌ برنامه (در اینجا می‌خواهیم شماره پروسه برنامه فایرفاکس را پیدا کنیم)

ps -C firefox -o pid=

یا

pgrep firefox

یا

pgrep -u enghezi firefox

نمایش نام پروسه‌ای که آی‌دی اون ۴۴۳۹ باشد. (خروجی اسم برنامه رو می‌ده)

ps -p 4439 -o comm=

نمایش ۱۰ پروسه‌ای که بیشترین میزان مصرف حافظه رو دارند

ps -auxf | sort -nr -k 4 | head -10

نمایش ۱۰ پروسه‌ای که بیشترین میزان مصرف پردازشگر رو دارند

ps -auxf | sort -nr -k 3 | head -10

۶- free — میزان استفاده  از حافظه

این دستور میزان کل، آزاد و اشغال شده حافظه اصلی و مجازی (سوپ) رو به ما نشون می‌ده. همچنین می‌توانیم میزان بافری رو که توسط کرنل اشغال شده رو ببینیم.

نمونه خروجی:

free

اطلاعات بیشتر: یک و دو و سه

۷- iostat —  متوسط بار پردازشگر و فعالیت دیسک

دستور iostat آمار مربوط به پردازشگر و آمار مربوط به خواندن و نوشتن ابزاری همچون پارتیشن و NFS را به ما نشان می‌هد.

نمونه خروجی:

iostat

اطلاعات بیشتر

۸- sar– جمع آوری و گزارش فعالیت سیستم

فرمان sar برای جمع آوری، گزارش و ذخیره اطلاعات مربوط به سیستم مورد استفاده قرار می‌گیرد. (دو دستور زیر رو سیستم من اجرا نشد!)

sar -n DEV | more
sar -n DEV -f /var/log/sa/sa24 | more

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

sar 4 5

خروجی نمونه:

sar45

اطلاعات بیشتر

۹- mpstat–  پردازشگرهای چند هسته‌ای

این دستور وضعیت هر پردازشگر رو (هر یک از هسته های پردازشگر رو جدا جدا) به ما گزارش می‌ده. و کاربرد اون در پردازشگرهای چند هسته‌ای هست.

mpstat -P ALL

دستور اول وضعیت هر ۴ هسته رو برای یک بار به ما گزارش می ده. اما دستور دوم برای هر هسته ۵ بار وضعیت رو چک می کنه و برای هر هسته ۵ گزارش به ما برنامه می‌ده. فاصله گزارش گیری ها ۲ ثانیه هست. این دستور تقریبا مشابه دستور sar می باشد.

mpstat -P ALL 2 5

اطلاعات بیشتر

۱۰- pmap — پردازش حافظه استفاده شده در سیستم

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

به عنوان مثال آی‌دی پروسه‌ای به شماره ۴۷۳۹۴ را در نظر بگیرید.

pmap -d PID

خروجی نمونه:

pmap-d

خط آخر خروجی این دستور بسیار مهمه.
mapped: مقدار کل حافظه که به برنامه اختصاص داده شده
writeable/private: مقدار فضای آدرس‌های خصوصی
shared: مقدار فضای آدرس این پروسه که با دیگر برنامه ها مشترک است

اطلاعات بیشتر

۱۱ و ۱۲ – netstat و ss — آمار شبکه

فرمان netstat، اتصالات شبکه، مسیریابی جداول، رو در اختیار می‌گذاره. دستور ss هم برای پیدا کردن  سوکت و پورت های ارتباطی بین میزبان و میهمان مورد استفاده قرار می‌گیرد. این دستور، می‌تواند عملکردی مشابه دستور netstat نیز داشته باشد.

اطلاعات بیشتر برای دستور ss و netstat

۱۳- iptraf– آمار مربوط به شبکه

از این دستور برای مانیتورینگ IP شبکه استفاده می‌شود. برنامه به صورت تعاملی و رنگی هست. و واقعا یکی از برنامه هایی هست که استفاده از اون رو به همه پیشنهاد می‌کنم . کلا با کمک این برنامه به راحتی می توان متوجه شد که آیا سیستم شما به صورت مخفیانه  با جای دیگر در ارتباط هست یا خیر؟‌ ویا اگر دوست داشته باشید، با این روش می‌توان به سرورهای اصلی و پشت صحنه یک سایت  دسترسی پیدا کرد.  برای مثال هم اکنون که فیسبوک در ایران بسته شده، جالب است بدانید که مکان محل نگهداری فیلم‌ها در فیسبوکجای دیگری غیر از خود فیسبوک می‌باشد.  با این روش یک برنامه نویس می‌تواند برنامه‌ای بسازد که با گرفتن لینک حاوی فیلم، اقدام به دریافت فیلم کند!‌ برای بدست آوردن سرعت واقعی اینترنت خود نیز می‌توانید ازاین برنامه استفاده کنید. از این برنامه به راحتی می‌توانید اطلاعات زیر را استخراج کنید:

  • آمار ترافیک شبکه توسط اتصال TCP
  • آمارترافیک IP   توسط رابط شبکه
  • آمار ترافیک شبکه توسط پروتکل
  • آمار ترافیک شبکه توسط TCP / پورت UDP و اندازه بسته
  • آمار ترافیک شبکه از طریق آدرس Layer2

Fig.02: General interface statistics: IP traffic statistics by network interface

Fig.03 Network traffic statistics by TCP connection

۱۴- tcpdump — جزئیات تحلیل ترافیک شبکه

یک دستور ساده که می‌توان پی به میزان ترافیک روی شبکه برد. با این وجود شما برای استفاده از این برنامه نیاز به داشتن آگاهی در مورد چگونگی کارکرد TCP/IP دارید. برای مثال برای نشان دادن اطلاعات مربوط به ترافیک DNS از دستور زیر استفاده میکنیم.

tcpdump -i eth1 ‘udp port 53’

برای نمایش دادن همه بسته‌هایی که از پورت ۸۰ (HTTP) و IP نسخه چهار هستند کار زیر را می‌کنیم. باید کاری کنیم که فقط بسته‌هایی که حاوی فقط اطلاعات و بسته ACKاست نشان داده شود نه برای مثال بسته‌های SYN و FIN.

tcpdump ‘tcp port 80 and (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0)’

برای نشان دادن همه نشست‌های FTP به ۲۰۲٫۵۴٫۱٫۵ از دستور زیر استفاده کنید.

tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20’

برای نمایش همه نشست‌های HTTP به ۱۹۲٫۱۶۸٫۱٫۵ از دستور زیر سود می‌جوییم.

tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’

این دستورم که خودم نفهمیدم چی کار می‌کنه  براتون می‌زارم. بلکه یه روز ازش رمزگشایی شد

tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

۱۵- strace — صدا زدن سیستم

برای اشکال زدایی وب سرور و پیدا کردن عیوب بسیار کار گشاست! اما چون خودم هیچی از این دستور نفهمیدم، شما رو مستقیم به چگونگی کارکرد این دستور ارجاع می‌دم 🙂

۱۶- فایل سیستم proc — آماری  از کرنل

فایل‌های درون فولدر proc (در آدرس روت) حاوی اطلاعات دقیق در مورد دستگاه‌های سخت افزاری مختلف و سایر اطلاعات هسته لینوکس است. به عنوان مثال موارد زیر رو در نظر بگیرید.

cat /proc/cpuinfo
cat /proc/meminfo
cat /proc/zoneinfo
cat /proc/mounts

اطلاعات بیشتر

۱۷- Nagios– مایتورینگ سرور و شبکه

Nagios یکی از محبوب ترین برنامه‌های مانیتورینگ شبکه و سیستم کامپیوتری می‌باشد. شما به آسانی می‌توانید بر تمام میزبان‌ها، تجهیزات شبکه و سرویس‌ها نظارت کنید. برنامه هنگامی که به مشکلی برخورد به شما پیغام هشدار می فرستد و همچنین زمانی که اوضاع رو به راه شد، باز هم یک هشدار می‌دهد. حالا یه برنامه به اسم فن ساخته شده که تمام کارا رو برای راه اندازی این Nagios اتومات می‌کنه (Fully Automated Nagios). این برنامه سعی کرده همه برنامه‌هایی که توسط جامعه nAgios ساخته شده رو فراهم کنه. تمام این ابزار همه در یک فایل ایزو به حجم یک سی‌دی قابل دریافت هست.

۱۸- Cacti– ابزار مانیتورینگ مبتنی بر وب

برای چگونگی نصب و تنظیم و استفاده از این ابزار کافیست به اینجا نگاهی بیندازید.

۱۹- کی‌دی‌ای سیستم گارد– گزارش دهی و نموادار فعلی سیستم

KSysguard ابزاری قوی برای مانیتورینگ در محیط کی‌دی‌ای می‌باشد.

Fig.05 KDE System Guard

اطلاعات بیشتر

۲۰- گنوم سیستم مانیتور– گزارش دهی به همراه ترسیم نمودار از وضعیت موجود سیستم

Fig.06 The Gnome System Monitor application

و ابزارهای اضافی دیگر

Nmap: اسکن در سرور شما برای پیدا کردن پورت‌های باز
Lsof: لیست پرونده‌های باز، و اتصالات شبکه
Ntop: ابزاری مبتنی بر وب مشابه دستور top . وضعیت شبکه رو با این دستور به خوبی می‌توان مشاهده کرد.
Conky: ابزار قدرتمند دیگری برای مانیتورینگ سیستم در محیط X
GkreIIM: ابزاری خوب برای مانیتورینگ پردازشگر، رم، هارد، شبکه و چیزای زیاد دیگه
Vnstat: یک کنسول مبتنی بر وب برای مانیتورینگ شبکه هست.
Htop: ورژن بهبود یافته دستور top هست که پروسس‌ها رو به صورت درختی می‌تونه نشون بده.
Mtr: برنامه‌ای که کار چند تا برنامه مثل پینگ و تریس روتر رو همگی با هم یه جا می‌تونه انجام بده.

منبع

پی‌نوشت: این مطلب رو چند هفته پیش قصد ترجمه داشتم که تا امروز کار برد. جالبه امروز سایت نرم‌افزارهای آزاد یه ترجمه نصف و نیمه از این مطلب رو تو سایتش گذاشته