یک 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 روی آن اعمال شود .
در این حالت در صورت ایجاد هر گونه مشکل برای کانتیر نیز داده های قبلی لاگ از بین نمیرود و با بالا آمدن مجدد این کانتیر مجدد میتوان لاگ های قبلی را مشاهده کرد
در این صورت مدیریت و سیاست مدت زمان نگه داری لاگ ها سمت خود سیستم هندل میشود
یا حق