یک syslog سرور ساده با محیط گرافیکی

یک syslog سرور ساده با محیط گرافیکی

سرویسRsyslog

چونRsyslogمی‌تواند نقش کلاینتی و هم سروری داشته باشد، قادر است تا پیام‌هایLogرا به‌وسیله‌یTCP/UDPارسال یا از دستگاه‌های دیگر موجود در شبکه همانند سرورها، روترها، سوییچ‌ها یا هر دستگاه تولیدکننده‌یLogدریافت کند.

Rsyslogاگر در نقش سرور پیکربندی شود، به پورت پیش‌فرض514 TCP/UDPگوش می‌دهد و پیام‌هایLogارسالی به‌وسیله‌ی سایر دستگاه‌ها روی ساختار را جمع‌آوری می‌کند.در حالتی‌کهRsyslogبه‌عنوانClientپیکربندی شود، پیام‌هایLogرا بهRsyslogسروری روی ساختار به‌وسیله‌یTCP/UDPو روی پورت514ارسال می‌کند.

فیلترهایRsyslogدر یکی از سه دسته‌ی زیر قرار می‌گیرند:

  • فیلترهایPriority

  • فیلترهایProperty-based

  • فیلترهایExpression-based

Priority filterها مشخص‌کننده‌ی فرآیندهای داخلی لینوکس تولیدکننده‌یLogهستند:

  • auth/authpriv: پیام‌های تولید شده به‌وسیله‌ی فرآیند احراز هویت

  • cron:پیام‌های مرتبط با وظایفcorn

  • Daemon: پیام‌های مرتبط با سرویس‌های در حال اجرای سیستم

  • Kernel: پیام‌های مرتبط با کرنل لینوکس

  • Mail:پیام‌های مرتبط با ایمیل سرور

  • Syslog: پیام‌های مرتبط باsyslog

  • Lpr:پیام‌های مرتبط با پرینتر یاprint server

  • local0 – local7:پیام‌های سفارشی تحت کنترل مدیریت سیستم

به سطوح مختلف فیلترهایPriorityیک عدد و یک کلمه‌ی کلیدی اختصاص پیدا می‌کند که عبارت‌اند از:

  • emerg, panic (Level 0): چنین لاگی نشان‌دهنده‌ی آن است که سیستم به‌شکل کامل از کار افتاده و امکان استفاده ندارد.

  • alert (Level 1):به معنای آن است که بلافصله باید اقدامی انجام شود.

  • err (Level 3): بیان‌گر وضعیت بحرانی است.

  • warn (Level 4): بیان‌گر هشدار است.

  • notice (Level 5): بیان‌گر آن است که وضعیت نرمال است اما نیاز به بررسی‌های بیش‌تری است.

  • info (Level 6):صرفن اطلاعی از یک رویداد است.

  • debug (Level 7): پیام‌های دیباگ

سرویس pimpmylog

PimpmyLogیک برنامه تحت وب است که باPHPنوشته شده است.این ابزار لاگ مربوط به سرور را به صورت کاملاuser friendlyنمایش می دهد.

قبلاً این ابزارPHP Apache Log Viewerنام داشت ،ولی بدلیلی که اکنون میتواند هر نوع گزارشی را نمایش داد نام آن تغییر کرده است.

نمونه لاگ های قابل نمایش در این ابزار میتوان به بهApache،NGINX،IISیاPHP , Ruby on Rails،Tomcat،sshd،syslog،CakePHPو…نیز اشاره کرد!

تعریف سناریو

در این سناریو این دو سرویس را درون یک کانتینر داکر قرار میدهیم .

سرویس rsylog درون این کانتینر لاگ های دریافتی را درون یک فایل به آدرس var/log/net/syslog.log/ ذخیره میکند

سرویس pimpmylog متصل به این فایل است و خروجی لاگ را به ما نشان میدهد.

پورت پیشفرض سرویس rsyslog درون این کانتینر 514/udp است

ساخت ایمیج

ابتدا فایل های پروژه رو از طریق لینک زیر دانلود کنید  سپس با دستور زیر ایمیج را ایجاد میکنیم

git clone https://github.com/greenweb-cloud/syslog-log-viewer
cd syslog-log-viewer
docker build -t logserver .

حال به کمک دستور زیر اجرا میشود

docker run -it -e SYSLOG_USERNAME=admin -e SYSLOG_PASSWORD=1234 -p 8080:80 -p 514:514/udp logserver

متغیر های محیطی SYSLOG_USERNAMEو SYSLOG_PASSWORD برای ایجاد دسترسی روی سرویس pimpmylog است

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

سرویس pimpmylog روی پورت 8080 سرویس میدهد ولی میتوان آن را بسته به نیاز عوض کرد

 

اتصال client ها به این سرور

برای اتصال کافیست ما به این کانتینر مانند ی syslogserver نگاه کنیم و لاگ های مدنظر را به آدرس هاست این کانتینر و پورت 514/udp ارسال کنیم

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

میبایست برای هر پروژه یکی از این کانتینر ها بالا بیاد و لاگ های هر پروژه به کانتینر logserver خودش متصل شود

برای اتصل لاگ کانتینر روش های متنوعی وجود دارد هم میتوانید از درایور syslog در داکر استفاده کنید یا هم می توانید از یک درایور دیگه مانند gelf یا logspout داده ها را به سمت این سرور ارسال کنید

 

پیشنهاد میشود که مسیر گزارش گیری هر کانتیر syslogserver به آدرس /var/log/net/syslog.log/ به مکانی درون خود هاست mount شود و درون هاست سیاست مربوط به logrotate روی آن اعمال شود .
در این حالت در صورت ایجاد هر گونه مشکل برای کانتیر نیز داده های قبلی لاگ از بین نمیرود و با بالا آمدن مجدد این کانتیر  مجدد میتوان لاگ های قبلی را مشاهده کرد

در این صورت مدیریت و سیاست مدت زمان نگه داری لاگ ها سمت خود سیستم هندل میشود

 

 

 

یا حق

دیدگاه‌ها ۰
ارسال دیدگاه جدید