احسان رضایی

یک توسعه دهنده

ذخیره و تجزیه و تحلیل apache logs در elasticsearch

در big data , پایگاه داده , / تاریخ ارسال 02-07-1396 / 0 نظر / آخرین ویرایش 19-08-1403

filebeat-1

elastic اخیرا ماژول های filebeat رو معرفی کرده، که برای پردازش و به دست آوردن یک بینش بصری از log های رایج طراحی شده. filebeat در kibana به عنوان نقطه ی شروع یک داشبورد از پیش طراحی شده در اختیارتون قرار میده که میتونید بعدا نمودار های دیگه ای هم بسته به نیازتون بهش اضافه کنید. ماژول Apache2 که اینجا در موردش حرف میزنیم، اطلاعات مربوط به log های apache رو از مسیر های پیشفرض جمع آوری میکنه، اگر مسیر های پیشفرض رو هم تغییر دادین امکان پیکره بندی این ماژول وجود داره.
اطلاعات جمع آوری شده توسط filebeat به elasticsearch ingest node ارسال خواهد شد(به گره هایی که قبل از شاخص گذاری روی پرونده ها عملیات پیش پرازش رو انجام میدن ingest node گفته میشه) تا عملیات تجزیه و تحلیل قبل از شاخص گذاری در elasticsearch انجام بگیره.

filebeat-2

هر زمان که اطلاعات در elasticsearch ذخیره شدن میتونید نتیجه تحلیل log ها رو در kibana مشاهده کنید.

در هر سطر apache log چیزی مثل نمونه زیر قابل مشاهده است:

85.214.196.224 - - [30/May/2014:09:31:13 -0500] "GET /files/xdotool/docs/html/files.html HTTP/1.1" 200 4465 "http://semicomplete.com/files/xdotool/docs/html/osx__hacks_8h_source.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.73.11 (KHTML, like Gecko) Version/6.1.1 Safari/537.73.11"

اطلاعات در مرحله ی پیش پردازش به یک ساختار مانند نمونه زیر تبدیل و سپس در elasticsearch شاخص گذاری میشود.

{
        "input_type" : "log",
        "@timestamp" : "2014-05-30T14:31:13.000Z",
        "read_timestamp" : "2017-04-20T20:11:30.976Z",
        "source" : "/home/ec2-user/access_log_size_test/sample_access_log",
        "type" : "log",
        "apache2" : {
                "access" : {
                        "body_sent" : {
                                "bytes" : "4465"
                        },
                        "remote_ip" : "85.214.196.224",
                        "response_code" : "200",
                        "method" : "GET",
                        "url" : "/files/xdotool/docs/html/files.html",
                        "geoip" : {
                                "region_name" : "Land Berlin",
                                "country_iso_code" : "DE",
                                "city_name" : "Berlin",
                                "location" : {
                                        "lat" : 52.5167,
                                        "lon" : 13.4
                                },
                                "continent_name" : "Europe"
                        },
                        "http_version" : "1.1",
                        "referrer" : "http://semicomplete.com/files/xdotool/docs/html/osx__hacks_8h_source.html",
                        "user_agent" : {
                                "patch" : "1",
                                "os_minor" : "8",
                                "os" : "Mac OS X 10.8.5",
                                "os_name" : "Mac OS X",
                                "device" : "Other",
                                "major" : "6",
                                "minor" : "1",
                                "name" : "Safari",
                                "os_major" : "10"
                        },
                        "user_name" : "-"
                }
        },
        "offset" : 2961191,
        "beat" : {
                "version" : "5.3.0",
                "name" : "ip-10-0-0-128",
                "hostname" : "ip-10-0-0-128"
        },
        "fileset" : {
                "module" : "apache2",
                "name" : "access"
        }
}

اگر به این ساختار توجه کنید متوجه خواهید شد اطلاعات بیشتری نسبت اون چیزی که در هر سطر apache log وجود داره در مرحله پیش پردازش اضافه شده. این اطلاعات مثل موقعیت مکانی، مشخصات کاربر و... با استفاده از ماژول های elasticsearch مثل geoip بدست میاد. نصب کردن این ماژول ها اجباریه و در مستندات نصب و راه اندازی filebeat لیست شدن.

پیشنهاد

کتاب‌ها

کتاب الگوهای طراحی به بیان ساده(design patterns / دیزاین پترن)

در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حل‌های قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرم‌افزار اتفاق می افتند.

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

کتاب refactoring / ریفکتورینگ

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

در کتاب Refactoring اثر Martin Fowler نوشته شده: refactoring تکنیک مرتب/منظم سازی برای تجدید ساختار کد موجود است. تغییر ساختار داخلی کد بدون تغییر رفتار خارجی آن.

refactoring یک سرمایه‌گذاری و راه حلی برای مقابله با کد کثیف و بدهی فنی است که باعث کاهش هزینه‌های توسعه نرم‌افزار در آینده خواهد شد.

ارسال نظر