log.io نرم افزاری کوچک ساده اما موثر میباشد که روی Node.js و Socket.io ایجاد شده است که به شما اجازه میدهد تا فایل های لاگ سرورهای لینوکسی را به صورت real time و از طریق interface وب آن مانیتور کنید.
این مطلب به شما کمک میکند تا این ابزار را نصب کنید و همچنین هر گونه لاگ فایل local را به صورت real-time مانیتور کنید.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب و راه اندازی Splunk Log Analyzer روی CentOS 7
آموزش نصب و راه اندازی syslog server در لینوکس
مرحله 1 :
اضافه کردن Epel Repositories :
1 - ریپازیتوری ها Epel سنت اوس پکیج های باینری برای Node.js و NPM - Node Packaged Modules را فراهم می آورد. نصب ریپازیتوری epel از طریق اجرای کامند زیر صورت میگیرد.
RHEL/CentOS 7 :
RHEL/CentOS 6 :
2 - بعد از افزودن ریپازیتوری epel به سیستم تان دستور زیر را اجرا کنید تا سیستم تان upgrade شود :
مرحله 2 :
نصب پکیج های Node.js و NPM :
3 - node.js یک پلتفرم برنامه نویسی جاوا اسکریپت میباشد که به شما اجازه میدهد تا application های شبکه ای با کاربردهای زیاد بسازید. NPM یا Node Package Manager در حقیقت یک package manager عملی برای node.js میباشد. بنابراین در مرحله بعد node.js و npm را از طریق دستور yum و با اجرای دستور زیر روی سیستم تان نصب کنید :
مرحله 3 :
نصب و کانفیگ برنامه Log.io :
4 - برنامه log.io باید از طریق npm و به واسطه مشخص کردن یک local valid user که از طریق آن نصب صورت پذیرد روی سیستم تان نصب شود. من به شخصه پیشنهاد میکنم که این برنامه را از طریق یوزر root و یا دیگر یوزرهای سیستم تان که دسترسی root داشته باشند نصب کنید البته این در حالیست که شما میتوانید با استفاده از هر یوزر ولید روی سیستم تان آن را نصب کنید.
دلیل استفاده از این دستآورد این است که log.io باید برای خواندن log file ها به صورت local دسترسی داشته باشد و یک یوزر بدون دسترسی root معمولا قادر به دسترسی و خواندن لاگ فایل های مهم نیست.
بنابراین با استفاده از اکانت root لاگین کرده و با اجرای دستور زیر شروع به نصب برنامه log.io میکنیم. (اگر به جای root از اکانت دیگری برای نصب استفاده میکنید دقت کنید که در دستور زیر به جای root یوزر مورد نظرتان را قرار دهید) :
5 - بعد از نصب کامل نرم افزار دایرکتوری خود را به پوشه log.io تغییر دهید که البته این پوشه مخفی میباشد و بعد از ورود به آن با لیست گرفتن میتوانید محتویات این پوشه را به منظور کانفیگ کردن نرم افزار ببینید :
6 - اکنون زمان کانفیگ کردن نرم افزار برای مانیتور فایل های لاگ local به صورت real-time میباشد. ابتدا ببینیم که log.io چگونه کار میکند.
فایل harvester تغییرات در فایل های log مخصوص را مشاهده میکند که در تنظیماتش گفته شده و خروجی آن را از طریق پروتکل socket.io tcp ارسال میکند که بعد از ان پیام ها به سرور local در log.io یا هر سرور ریموت دیگری که با ipaddress ان تعریف شده ارسال مکیند. (آدرس 0.0.0.0 روی harvesters broadcasts به تمام سرورهای در حال listen نرم افزار log.io مشخص میشود). فایل مورد نظر harvester.conf میباشد.
سرور log.io روی تمام اینترفیس های شبکه متصل شده است. (اگر مشخص نشده باشد در غیر اینصورت در فایل log_server.conf تعریف شده) و منتظر برای messages از node های harvester به صورت remot یا local می ماند و خروجی آنها را به سرور وب log.io ارسال میکند. (0.0.0.0 یعنی اینکه سرور برای دریافت message ها از هر harvester ریموت یا لوکالی منتظر می ماند) فایل مورد نظر log_server.conf میباشد.
سرور وب log.io روی تمامی اینترفیس های شبکه موجود میباشد و به ارتباطات client وب روی پورت 28778 و process ها گوش میکند و message هایی که به صورت internal از سرور log.io دریافت میکنند را خروجی میدهد. فایل مورد نظر web_server.conf میباشد.
ابتدا فایل harvester.conf را برای ویرایش باز کنید این فایل به صورت پیش فرض تنها log file های apache را مانیتور میکند و عبارت nodeName را برای match شدن hostname شما جایگزین میکند و عبارات logStreams را با آن لاگ فایل هایی که شما میخواهید مانیتور کنید مشخص میکند. (در اینجا من چندین log file مانند audit , messages و secure logs را مانیتور میکنم)
فایل زیر را به عنوان راهنما برایتان انتخاب میکنم :
Harvester file :
همچنین اگر شما نیاز ندارید که خروجی harvester به یک سرور ریموت log.io ارسال شود خط host on server را تغییر دهید به طوری که تنها خروجی اش را به صورت local و با تغییر آدرس 0.0.0.0 با آدرس lopback ارسال کند. (127.0.0.1)
7 - به دلایل امنیتی اگر شما انتظار ندارید که harvester های ریموت به سرور local.io شما خروجی دهند فایل log_server.conf را باز کنید و آدرس 0.0.0.0 را با آدرس loopback 127.0.0.1 عوض کنید :
8 - دیگر قابلیت های امنیتی مانند credentials login ,HTTPS و یا محدودیت بر اساس ip ها به سرور log.io میتوانند روی سرور وب اعمال شوند. برای این مطلب من تنها به عنوان یک معیار امنیتی فقط credentials login را استفاده خواهم کرد.
فایل web_server.conf را باز کنید و کل عبارت auth با حذف تمامی اسلاش ها (/) و ستاره ها (*) از حالت کامنت در بیاورید و یوزر و پسورد را جایگزین کنید :
مرحله 4 :
اضافه کردن firewall rule و شروع نرم افزار log.io :
9 - به منظور به دست اوردن دسترسی وب به سرور log.io رول زیر را در فایروال centos اضافه کنید تا پورت 28778 TCP باز شود :
نکته : کاربران RHEL/CentOS 6.x میتوانند پورت 28778 روی iptables firewal باز کنند.
مرحله 5 :
start نرم افزار log.io و ورود به اینترفیس وب :
10 - برای شروع کردن نرم افزار مانیتورینگ log.io مطمئن شوید که دایرکتوری جاری شما پوشه log.io کاربر root باشد و برای شروع کردن نرم افزار دستور زیر را وارد کنید :
11 - بعد از اینکه سرور start شد یک مرورگر باز کنید و ip سرور و به همراه آن شماره پورت 28778 را با استفاده از پروتکل http وارد کنید. بعد از ان یوزر و پسورد خود را که در مرحله 8 کانفیگ کردید وارد کنید و سپس نرم افزار log.io روی مرورگر شما نمایان میشود که به صورت real-time لاگ فایل ها را مانیتور میکند :
روی اینترفیس وب screen های جدید اضافه کنید و stream ها یا متعاقبا node های خودتان را سازماندهی کنید.
12 - برای متوقف کردن نرم افزار log.io دستور زیر را اجرا کنید :
مرحله 6 :
ایجاد اسکریپت مدیریتی log.io :
13 - به منظور استفاده از یک کامند برای مدیریت نرم افزار log.io با سه سوییچ start , stop و status اسکریپت زیر را با نام log.io در پوشه اجرایی /user/local/ bin ایجاد کنید و پرمیژن های اجرایی را به این اسکریپت اضافه کنید :
محتوای زیر را به فایل اسکریپت اضافه کنید :
14 - برای start ,stop یا نمایش وضعیت log.io ابتدا با اکانت root (یا کاربری که نرم افزار log.io تحت آن نصب شده) لاگین کنید و تنها دستورات زیر را برای مدیریت آسان نرم افزار اجرا کنید :
تمام شد! به نظر من log.io یک اپلیکیشن وب موثر و بی نظیر برای مانیتور log فایل های سرورهای remote یا local میباشد که real-time بوده و نمایش میدهد که به صورت internal چه اتفاقاتی در سیستم روی میدهد و به خصوص برای دیباگ مشکلات سرور در زمان بروز crache و یا .... بدون نیاز به استفاده از یک کنسول مفید و موثر خواهد بود.
موفق باشید
محمد هابیلی
این مطلب به شما کمک میکند تا این ابزار را نصب کنید و همچنین هر گونه لاگ فایل local را به صورت real-time مانیتور کنید.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب و راه اندازی Splunk Log Analyzer روی CentOS 7
آموزش نصب و راه اندازی syslog server در لینوکس
مرحله 1 :
اضافه کردن Epel Repositories :
1 - ریپازیتوری ها Epel سنت اوس پکیج های باینری برای Node.js و NPM - Node Packaged Modules را فراهم می آورد. نصب ریپازیتوری epel از طریق اجرای کامند زیر صورت میگیرد.
RHEL/CentOS 7 :
کد PHP:
# yum install http://fedora.mirrors.telekom.ro/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
کد PHP:
--------------------- On RHEL/CentOS 6.x - 32 Bit ---------------------
# yum install http://fedora.mirrors.telekom.ro/pub/epel/6/i386/epel-release-6-8.noarch.rpm
--------------------- On RHEL/CentOS 6.x - 64 Bit ---------------------
# yum install http://fedora.mirrors.telekom.ro/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2 - بعد از افزودن ریپازیتوری epel به سیستم تان دستور زیر را اجرا کنید تا سیستم تان upgrade شود :
کد PHP:
# yum update
مرحله 2 :
نصب پکیج های Node.js و NPM :
3 - node.js یک پلتفرم برنامه نویسی جاوا اسکریپت میباشد که به شما اجازه میدهد تا application های شبکه ای با کاربردهای زیاد بسازید. NPM یا Node Package Manager در حقیقت یک package manager عملی برای node.js میباشد. بنابراین در مرحله بعد node.js و npm را از طریق دستور yum و با اجرای دستور زیر روی سیستم تان نصب کنید :
کد PHP:
# yum install npm nodejs
مرحله 3 :
نصب و کانفیگ برنامه Log.io :
4 - برنامه log.io باید از طریق npm و به واسطه مشخص کردن یک local valid user که از طریق آن نصب صورت پذیرد روی سیستم تان نصب شود. من به شخصه پیشنهاد میکنم که این برنامه را از طریق یوزر root و یا دیگر یوزرهای سیستم تان که دسترسی root داشته باشند نصب کنید البته این در حالیست که شما میتوانید با استفاده از هر یوزر ولید روی سیستم تان آن را نصب کنید.
دلیل استفاده از این دستآورد این است که log.io باید برای خواندن log file ها به صورت local دسترسی داشته باشد و یک یوزر بدون دسترسی root معمولا قادر به دسترسی و خواندن لاگ فایل های مهم نیست.
بنابراین با استفاده از اکانت root لاگین کرده و با اجرای دستور زیر شروع به نصب برنامه log.io میکنیم. (اگر به جای root از اکانت دیگری برای نصب استفاده میکنید دقت کنید که در دستور زیر به جای root یوزر مورد نظرتان را قرار دهید) :
کد PHP:
# npm install -g log.io --user “root”
5 - بعد از نصب کامل نرم افزار دایرکتوری خود را به پوشه log.io تغییر دهید که البته این پوشه مخفی میباشد و بعد از ورود به آن با لیست گرفتن میتوانید محتویات این پوشه را به منظور کانفیگ کردن نرم افزار ببینید :
کد PHP:
# pwd [Make sure you are on the right path]
# cd .log.io/
# ls
6 - اکنون زمان کانفیگ کردن نرم افزار برای مانیتور فایل های لاگ local به صورت real-time میباشد. ابتدا ببینیم که log.io چگونه کار میکند.
فایل harvester تغییرات در فایل های log مخصوص را مشاهده میکند که در تنظیماتش گفته شده و خروجی آن را از طریق پروتکل socket.io tcp ارسال میکند که بعد از ان پیام ها به سرور local در log.io یا هر سرور ریموت دیگری که با ipaddress ان تعریف شده ارسال مکیند. (آدرس 0.0.0.0 روی harvesters broadcasts به تمام سرورهای در حال listen نرم افزار log.io مشخص میشود). فایل مورد نظر harvester.conf میباشد.
سرور log.io روی تمام اینترفیس های شبکه متصل شده است. (اگر مشخص نشده باشد در غیر اینصورت در فایل log_server.conf تعریف شده) و منتظر برای messages از node های harvester به صورت remot یا local می ماند و خروجی آنها را به سرور وب log.io ارسال میکند. (0.0.0.0 یعنی اینکه سرور برای دریافت message ها از هر harvester ریموت یا لوکالی منتظر می ماند) فایل مورد نظر log_server.conf میباشد.
سرور وب log.io روی تمامی اینترفیس های شبکه موجود میباشد و به ارتباطات client وب روی پورت 28778 و process ها گوش میکند و message هایی که به صورت internal از سرور log.io دریافت میکنند را خروجی میدهد. فایل مورد نظر web_server.conf میباشد.
ابتدا فایل harvester.conf را برای ویرایش باز کنید این فایل به صورت پیش فرض تنها log file های apache را مانیتور میکند و عبارت nodeName را برای match شدن hostname شما جایگزین میکند و عبارات logStreams را با آن لاگ فایل هایی که شما میخواهید مانیتور کنید مشخص میکند. (در اینجا من چندین log file مانند audit , messages و secure logs را مانیتور میکنم)
فایل زیر را به عنوان راهنما برایتان انتخاب میکنم :
کد PHP:
# nano harvester.conf
کد PHP:
exports.config = {
nodeName: "pxe-server",
logStreams: {
audit: [
"/var/log/audit/audit.log"
],
messages: [
"/var/log/messages"
],
secure: [
"/var/log/secure"
]
},
server: {
host: '0.0.0.0',
port: 28777
}
}
همچنین اگر شما نیاز ندارید که خروجی harvester به یک سرور ریموت log.io ارسال شود خط host on server را تغییر دهید به طوری که تنها خروجی اش را به صورت local و با تغییر آدرس 0.0.0.0 با آدرس lopback ارسال کند. (127.0.0.1)
7 - به دلایل امنیتی اگر شما انتظار ندارید که harvester های ریموت به سرور local.io شما خروجی دهند فایل log_server.conf را باز کنید و آدرس 0.0.0.0 را با آدرس loopback 127.0.0.1 عوض کنید :
کد PHP:
# nano log_server.conf
8 - دیگر قابلیت های امنیتی مانند credentials login ,HTTPS و یا محدودیت بر اساس ip ها به سرور log.io میتوانند روی سرور وب اعمال شوند. برای این مطلب من تنها به عنوان یک معیار امنیتی فقط credentials login را استفاده خواهم کرد.
فایل web_server.conf را باز کنید و کل عبارت auth با حذف تمامی اسلاش ها (/) و ستاره ها (*) از حالت کامنت در بیاورید و یوزر و پسورد را جایگزین کنید :
کد PHP:
# nano web_server.conf
مرحله 4 :
اضافه کردن firewall rule و شروع نرم افزار log.io :
9 - به منظور به دست اوردن دسترسی وب به سرور log.io رول زیر را در فایروال centos اضافه کنید تا پورت 28778 TCP باز شود :
کد PHP:
# firewall-cmd --add-port=28778/tcp --permanent
# firewall-cmd --reload
نکته : کاربران RHEL/CentOS 6.x میتوانند پورت 28778 روی iptables firewal باز کنند.
مرحله 5 :
start نرم افزار log.io و ورود به اینترفیس وب :
10 - برای شروع کردن نرم افزار مانیتورینگ log.io مطمئن شوید که دایرکتوری جاری شما پوشه log.io کاربر root باشد و برای شروع کردن نرم افزار دستور زیر را وارد کنید :
کد PHP:
------------ First start server, put it in background and press Enter key ------------
# log.io-server &
------------ Start log harvester in background ------------
# log.io-harvester &
11 - بعد از اینکه سرور start شد یک مرورگر باز کنید و ip سرور و به همراه آن شماره پورت 28778 را با استفاده از پروتکل http وارد کنید. بعد از ان یوزر و پسورد خود را که در مرحله 8 کانفیگ کردید وارد کنید و سپس نرم افزار log.io روی مرورگر شما نمایان میشود که به صورت real-time لاگ فایل ها را مانیتور میکند :
کد PHP:
http://192.168.1.20:28778
روی اینترفیس وب screen های جدید اضافه کنید و stream ها یا متعاقبا node های خودتان را سازماندهی کنید.
12 - برای متوقف کردن نرم افزار log.io دستور زیر را اجرا کنید :
کد PHP:
# pkill node
مرحله 6 :
ایجاد اسکریپت مدیریتی log.io :
13 - به منظور استفاده از یک کامند برای مدیریت نرم افزار log.io با سه سوییچ start , stop و status اسکریپت زیر را با نام log.io در پوشه اجرایی /user/local/ bin ایجاد کنید و پرمیژن های اجرایی را به این اسکریپت اضافه کنید :
کد PHP:
# nano /usr/local/bin/log.io
# chmod +x /usr/local/bin/log.io
کد PHP:
#!/bin/bash
start() {
echo "Starting log.io process..."
/usr/bin/log.io-server &
/usr/bin/log.io-harvester &
}
stop() {
echo "Stopping io-log process..."
pkill node
}
status() {
echo "Status io-log process..."
netstat -tlp | grep node
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
echo "Usage: start|stop|status"
;;
Esac
14 - برای start ,stop یا نمایش وضعیت log.io ابتدا با اکانت root (یا کاربری که نرم افزار log.io تحت آن نصب شده) لاگین کنید و تنها دستورات زیر را برای مدیریت آسان نرم افزار اجرا کنید :
کد PHP:
# log.io start
# log.io status
# log.io stop
تمام شد! به نظر من log.io یک اپلیکیشن وب موثر و بی نظیر برای مانیتور log فایل های سرورهای remote یا local میباشد که real-time بوده و نمایش میدهد که به صورت internal چه اتفاقاتی در سیستم روی میدهد و به خصوص برای دیباگ مشکلات سرور در زمان بروز crache و یا .... بدون نیاز به استفاده از یک کنسول مفید و موثر خواهد بود.
موفق باشید
محمد هابیلی