احسان رضایی

یک توسعه دهنده، شاید هم نه.

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

در big data , پایگاه داده / تاریخ ارسال 18:13 02-07-1396 / 0 نظر / 809 بازدید / آخرین ویرایش 17:07 08-01-1397

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 لیست شدن.

مرتبط ها

ارسال نظر