دانش محور دستورالعمل های ساده برای کار با سرویس Profitserver
اصلی دانش محور چگونه لاگ های لینوکس را بخوانیم و کجا آن را پیدا کنیم

چگونه لاگ های لینوکس را بخوانیم و کجا آن را پیدا کنیم


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

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

  1. emerg - شکست، بالاترین اولویت؛
  2. alert - هشدار فوری؛
  3. crit - رویداد مهم؛
  4. err - خطای معمولی؛
  5. warn - هشدار معمولی؛
  6. notice - اطلاع رسانی؛
  7. info - پیام اطلاعاتی؛
  8. debug - اشکال زدایی اطلاعات؛

در حال حاضر، سرویس‌های اصلی جمع‌آوری لاگ در لینوکس rsyslog و systemd-journald هستند . آن‌ها با اکثر بسته‌های توزیع مدرن همراه هستند و به‌طور مستقل کار می‌کنند.

rsyslog

گزارش‌های این سرویس در پوشه‌ی « /var/log/ » به شکل فایل‌های متنی معمولی قرار دارند. پیام‌های گزارش بسته به نوع رویداد، در فایل‌های مختلفی قرار می‌گیرند. برای مثال، « /var/log/auth.log » حاوی اطلاعات مربوط به مجوز کاربران در سیستم و « /var/log/kern.log » حاوی پیام‌های هسته است. نام فایل‌ها می‌تواند در بسته‌های توزیع مختلف متفاوت باشد، بنابراین بیایید نگاهی به فایل پیکربندی بیندازیم تا بفهمیم « /etc/rsyslog.d/50-default.conf » در کجا قرار دارد.

Сбор логов Linux утилитой rsyslog

این قوانین نشان می‌دهند که هر نوع پیام لاگ در کدام فایل قرار دارد. قسمت چپ نوع پیام را به شکل « [منبع].[اولویت] » و قسمت راست نام فایل لاگ را نمایش می‌دهد. هنگام نوشتن نوع پیام، می‌توان کاراکتر « * » را به آن اضافه کرد. این به معنای مقدار خالی یا « هیچ » است که آن را از لیست حذف می‌کند. بیایید نگاهی دقیق‌تر به دو قانون اول بیندازیم.

“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”

قانون اول به این معنی است که تمام پیام‌های دریافتی از مکانیزم احراز هویت در فایل " /var/log/auth.log " ثبت می‌شوند. تمام تلاش‌های احراز هویت (چه موفق و چه ناموفق) در این فایل ثبت می‌شوند. قانون دوم نشان می‌دهد که تمام پیام‌ها به جز پیام‌های مرتبط با احراز هویت در فایل " /var/log/syslog " ثبت می‌شوند. این دو فایل معمولاً محبوب‌ترین هستند. قوانین زیر مسیر ذخیره لاگ‌های هسته " kern.* " و لاگ‌های سرویس ایمیل " mail.* " را تعریف می‌کنند.

فایل‌های لاگ را می‌توان با کمک هر ویرایشگر متنی مانند less ، cat ، tail باز کرد . بیایید فایل “ /var/log/auth.log ” را باز کنیم.

less /var/log/auth.log
نوشتن در log-faйле Линукс о неудачной попытке نویسنده SSH

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

  1. مهر زمانی پیام - "12 فوریه 06:18:33"
  2. نام رایانه ای که پیام را ارسال کرده است - "vds"
  3. نام برنامه یا سرویسی که پیام را ارسال کرده است - "sshd"
  4. شناسه فرآیند - [653]
  5. متن پیام - "گذرواژه پذیرفته شده برای mihail از 188.19.42.165 پورت 2849 ssh2"

این نمونه ای از اتصال موفق به SSH بود.

و در اینجا چگونگی تلاش ناموفق برای ورود به سیستم به نظر می رسد:

Читаем логи لینوکس

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

چگونه می توانید لینوکس را مطالعه کنید

بیایید فایل /var/log/syslog را باز کنیم

یک پیام برجسته در اسکرین شات، پیامی در مورد خاموش شدن رابط شبکه است.

لوگوروت کردن

برای جستجوی اطلاعات در فایل‌های متنی طولانی از ابزار grep استفاده کنید . می‌توانید تمام پیام‌های دریافتی از سرویس pptpd را در فایل “ /var/log/syslog ” پیدا کنید.

grep 'pptpd' /var/log/syslog
فایل "/etc/logrotate.d/rsyslog"

در طول عیب‌یابی می‌توانید از ابزار tail استفاده کنید که می‌تواند چندین خط آخر فایل‌ها را نمایش دهد. دستور « tail -f /var/log/syslog » به شما امکان می‌دهد ضبط لاگ‌ها را به صورت بلادرنگ مشاهده کنید.

سرویس rsyslog بسیار انعطاف‌پذیر و قدرتمند است. می‌توان از آن برای جمع‌آوری لاگ‌ها در سیستم‌های محلی و همچنین در سطح سازمانی استفاده کرد. می‌توانید مستندات کامل را در وب‌سایت رسمی https://www.rsyslog.com/ پیدا کنید.

چرخش لاگ ها در لینوکس

ثبت لاگ‌ها به طور مداوم در حال انجام است، بنابراین اندازه فایل‌ها دائماً در حال افزایش است. مکانیزم چرخش، بایگانی خودکار لاگ‌های قدیمی و ایجاد فایل‌های جدید را تضمین می‌کند. بسته به قوانین، این کار می‌تواند روزانه، هفتگی، ماهانه یا با محدودیت اندازه انجام شود. با ایجاد لاگ‌های جدید، می‌توان لاگ‌های قدیمی را حذف یا از طریق ایمیل ارسال کرد. چرخش لاگ‌ها توسط ابزار logrotate انجام می‌شود . می‌توانید پیکربندی اصلی را در فایل " /etc/logrotate.conf " پیدا کنید. محتوای فایل‌ها نیز در پوشه " /etc/logrotate.d/ " پردازش می‌شود.

قوانین جدید را می‌توان در فایل پیکربندی اصلی وارد کرد. با این حال، بهتر است یک فایل جداگانه در « /etc/logrotate.d/ » ایجاد کنید. به طور پیش‌فرض، چند فایل در این دایرکتوری وجود دارد.

Настраиваем ротацию логов во Линукс

بیایید نگاهی به فایل « /etc/logrotate.d/rsyslog » بیندازیم که شامل قوانین چرخش برای گزارش‌های سرویس rsyslog است.

مثال вывода всех ошибок pptpd در лог-файлах

ابتدا، قانون باید شامل مسیر فایل log باشد و سپس تمام دستورالعمل ها را در براکت های منحنی دنبال کند.

  • چرخش 7 - تعداد فایل برای نگهداری - 7
  • روزانه - هر روز یک فایل جدید ایجاد کنید
  • فشرده کردن - فشرده سازی و بایگانی فایل های قدیمی
لينوکس

همانطور که در تصویر می‌بینید، در پوشه‌ی « /var/log/ » فایل اصلی گزارش « syslog » و ۷ فایل آرشیو وجود دارد که با قوانین موجود در فایل پیکربندی مطابقت دارد.

می‌توانید توضیحات مفصل‌تری از logrotate را در راهنما، با اجرای دستور « man logrotate » بیابید.

جمع آوری لاگ های لینوکس - مجله

سرویس جمع‌آوری لاگ‌های systemd-journald بخشی از سیستم راه‌اندازی systemd است. فایل‌های لاگ لینوکس در مسیر " /var/log/journal/ " با فرمت خاصی ذخیره می‌شوند و می‌توان آن‌ها را با کمک ابزار journalctl باز کرد . فرمت رکوردها دقیقاً مشابه rsyslog است.

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

  • journalctl -b - نمایش تمام رکوردها از آخرین شروع
  • journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10" - نمایش رکورد در یک بازه زمانی خاص
  • journalctl -u pptpd - نمایش سوابق یک سرویس خاص
  • journalctl -k - نمایش پیام های هسته
  • journalctl -p err - نمایش پیام هایی با اولویت خاص، پیام های با اولویت بالاتر در این مورد (crit، alert، emerg)
  • journalctl -f - نمایش پیام ها در زمان واقعی

برای انعطاف‌پذیری بهتر، می‌توانید این گزینه‌ها را با هم ترکیب کنید. بیایید تمام خطاهای سرویس pptpd را نشان دهیم.

journalctl -u pptpd -p err
آخرین

اگر مسیر فایل اجرایی را به عنوان یک ویژگی مشخص کنید، ابزار تمام پیام‌های ارسال شده توسط این فایل را نشان می‌دهد. بیایید تمام پیام‌های ارسال شده توسط فایل " /usr/bin/sudo " را از ساعت 04:15 در 18 فوریه 2020 نشان دهیم. در واقع، تمام دستورات اجرا شده با مجوزهای بالاتر را نشان می‌دهد.

journalctl -S "2020-02-18 04:15" /usr/bin/sudo
командой lastb

برای اینکه بفهمید فایل های لاگ چقدر فضای دیسک را برای اجرای دستور زیر اشغال می کنند

journalctl --disk-usage

برای محدود کردن فایل log به 1Gb دستور زیر را اجرا کنید

journalctl --vacuum-size=1G

باز کردن فایل های باینری

حالا بیایید نگاهی به چند فایل خاص در پوشه‌ی « /var/log/ » بیندازیم که تمام تلاش‌های ورود به سیستم در آن‌ها ذخیره می‌شوند. این فایل‌ها دودویی هستند و فقط با برنامه‌های خاص قابل باز شدن هستند.

/var/log/wtmp حاوی اطلاعاتی در مورد تلاش‌های موفق برای ورود به سیستم است. برای باز کردن آن از ابزار last استفاده کنید.

утилита lastlog

/var/log/btmp - شامل تمام تلاش‌های ناموفق برای ورود به سیستم است. می‌توان آن را با lastb و با مجوزهای پیشرفته باز کرد. ویژگی -n تعداد خطوط نمایش داده شده از انتهای فایل را تعریف می‌کند.

/var/log/lastlog - شامل زمان آخرین اقدام ورود به سیستم برای هر رکورد حساب است. می‌تواند با lastlog باز شود.

❮ مقاله قبلی ویرایشگرهای متن لینوکس
مقاله بعدی ❯ نحوه پیکربندی رابط های شبکه در CentOS

VPS را از ما بخواهید

ما همیشه آماده پاسخگویی به سوالات شما در هر ساعت از شبانه روز هستیم.