جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره ها
  • مقالات
  • معرفی ابزارهای لینوکس
  • تماس با ما

ورود

گذرواژه خود را فراموش کرده اید؟

ثبت نام

آموزش لینوکس 🐧 آموزش دوآپس 🐋
  • صفحه اصلی
  • دوره ها
  • مقالات
  • معرفی ابزارهای لینوکس
  • تماس با ما
آخرین اطلاعیه ها
جهت نمایش اطلاعیه باید وارد سایت شوید
شروع کنید
0

وبلاگ

آموزش لینوکس 🐧 آموزش دوآپس 🐋مقالاتمقالاتپارس لاگ های انجینکس در استک ELK

پارس لاگ های انجینکس در استک ELK

14 مرداد 1400
ارسال شده توسط Aref Akhtari
مقالات

برای پارس لاگ های ارسالی از سمت انجینکس نوع فرمت ارسالی لاگ ها در صورت تغییر نیازمند ایجاد pattern خاص در سمت لاگ استش برای پارس کردن میباشد
در صورت استفاده از فرمت ارسالی پیشفرض میتوان از pattern پیشفرض استفاده کرد که در ادامه به بررسی آن میپردازیرم

لاگ استش دارای سه بخش اصلی زیر است

input : ورودی لاگ ها مشخص میشود میتواند syslog یا beat باشد

filter : برای اعمال فیلتر و تغییرات استفاده میشود – این بخش میبایست بزای پارس لاگ پیکربندی شود – دارای توابع متفاوتی برای تغییرات روی لاگ ها است که در این مثال ما از تابع grok  استفاده خواهیم کرد

output : خروجی لاگ ها بعد از تغییر که میتواند فایل یا جیز دیگری باشد . در این مثال  خروجی الستیکسرچ است

پیکربندی سمت فایل بیت بر روی کلاینت ها

در این بخش میبایست ابزار فایل بیت روی همه ی کلاینت هایی که دارای  انجینکس است نصب شود

نکته:

به علت استفاده از ابزار opendistro-for-elastic به جای استفاده از ابزار elasticsearch میبایست نسخه ای که از filebeat روی کلاینت ها نصب میشود با نسخه سرور هماهنگ و ورژن آن oss باشد

ورژن oss در این بخش به معنای ورژن کاملا متن باز می باشد

 

ورژنی که در حال حاضر ما در ساتک استفاده میکنیم ورژن آخر این ابزار 1.13.2  میباشد که از وزژن 7.10.2 الستیک استفاده میکند

پس برای انتخاب هرنوع بیت برای این استک میبایست از همین ورژن استفده کنیم

میتوانیم این بیت ها را از لینک زیر دریافت کنیم.

https://www.elastic.co/downloads/past-releases

در این سایت نوع بیت را به filebeat-oss و وزژن آن را روی 7.10.2 انتخاب و ابزار را دانلود میکنیم.

برای این مثال این فایل را از طریق لینک زیر دریافت و نصب میکنیم

wget -c https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.10.2-amd64.deb
dpkg -i filebeat-oss-7.10.2-amd64.deb

بعد از نصب به دایرکتوری /etc/filebeat مراجعه و فایل پیکربندی را به صورت زیر کانفیگ میکینیم

محتویات فایل filebeat.yml

# ============================== Filebeat inputs ===============================

filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log*
exclude_files: ['.gz$']
fields:
type: access
fields_under_root: true

- type: log
enabled: true
paths:
- /var/log/nginx/error.log*
exclude_files: ['.gz$']
fields:
type: error
fields_under_root: true

# ============================== Filebeat modules ==============================

filebeat.config.modules:
# Glob pattern for configuration loading
path: ${path.config}/modules.d/*.yml

# Set to true to enable config reloading
reload.enabled: false

# Period on which files under path should be checked for changes
#reload.period: 10s

# ================================== Outputs ===================================

# ------------------------------ Logstash Output -------------------------------
output.logstash:
hosts: ["IPADDRESS:PORT"]

# ================================= Processors =================================
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~

در بخش filebeat.inputs ورودی فایل مشخص میشود برای لاگ های سمت اکسس و ارور دو نوع ورودی جدا در نظر گرفته میشود
در ادامه برای متمایز کردن لاگ های اکسس و ارور انجینکیس از هم و از الباقی لاگ ها یک فیلد به نام type برای آن ها در نظر میگیریم که در بخش فیلتز در لاگ استش بتوانیم آن هارا بسته به نوعی که دارند پارس کنیم

در قسمت output.logstash نیز آدرس و پورت مربوط به لاگ استش در این بخش قرار داده میشود.

پارس لاک های انجینکس به صورت فرمت پیشفرض

اگر قالب ارسالی لاگ های انجینکس به صورت پیشفرض باشد آنگاه نیازی به ساخت pattern وجود ندارد و از pattern پیشفرض استفاده میشود

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

 

filter {
grok {
match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"]
overwrite => [ "message" ]
}
mutate {
convert => ["response", "integer"]
convert => ["bytes", "integer"]
convert => ["responsetime", "float"]
}
geoip {
source => "clientip"
target => "geoip"
add_tag => [ "nginx-geoip" ]
}
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
remove_field => [ "timestamp" ]
}
useragent {
source => "agent"
}
}

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

در این حالت ابتدا میبایست نوع فرمت لاگ در تنظیمات انجینکس و نمونه لاگ دریافتی مورد بررسی و مشاهده قرار گیرد

نمونه لاگ دریافتی و تنظیمات لاگ انجینکس به صورت زیر است

log_format custom '$host - $remote_addr - $remote_user [$time_local] - '
'"$request" $status $body_bytes_sent - '
'"$http_referer" "$http_user_agent" - '
'cache: $upstream_cache_status [$time_local]';

نمونه لاگ دریافتی
test.ir - 1.1.1.1 - - [01/Aug/2021:11:32:44 +0000] - "GET / HTTP/2.0" 200 11760 - "-" "Mozilla/5.0 (Linux; Android 11; SM-A505F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.115 Mobile Safari/537.36" - cache: MISS [01/Aug/2021:11:32:44 +0000]

گام بعدی برای این مورد ساخت قالب grok برای است

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

https://grokdebug.herokuapp.com/

قالب منطبق بر این لاگ به صورت زیر است

## nginx Access log grok pattern

%{IPORHOST:host_name} - %{IPV4:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:access_time}\] - "%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} - "%{DATA:referrer}" "%{DATA:user_agent}" - cache: %{DATA:cache_status} \[%{HTTPDATE:time_local}\]

## nginx Error log grok pattern

%{YEAR}/%{MONTHNUM}/%{MONTHDAY} %{TIME} \[%{LOGLEVEL:level}\] %{INT:process_id}#%{INT:thread_id}: \*(%{INT:connection_id})? %{GREEDYDATA:description}

حال میریم سراغ تنظیمات لاگ استش

input {
beats {
port => 5044
}

}

filter {
if "access" in [type] {
grok {
match => { "message" => '%{IPORHOST:host_name} - %{IPV4:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:access_time}\] - "%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} - "%{DATA:referrer}" "%{DATA:user_agent}" - cache: %{DATA:cache_status} \[%{HTTPDATE:time_local}\]' }
remove_field => "message"
}
}

else if "error" in [type] {
grok {
match => { "message" => '%{YEAR}/%{MONTHNUM}/%{MONTHDAY} %{TIME} \[%{LOGLEVEL:level}\] %{INT:process_id}#%{INT:thread_id}: \*(%{INT:connection_id})? %{GREEDYDATA:description}' }
remove_field => "message"
}
}
else {
drop { }
}
}


output {
elasticsearch {
hosts => ["https://elastic:9200"]
ssl => true
ssl_certificate_verification => false
user =>
password =>
index => "%{[@metadata][beat]}-%{[host][hostname]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}

 

امیدوارم مفید بوده باشه

 

با حق

برچسب ها: elasticsearchelkhow to parse nginx log in elklogstashnginx log ELKopendistroopendistro-for-elasticparse nginx logپارس لاک های nginxپارس لاک های انجینکسپارس لاک های انجینکس به صورت فرمت خاص و شخصی سازی شدهپارس لاک های انجینکس در elkپارس لاک های انجینکس در opendistro
قبلی مانیتورینگ شبکه با ابزار Zeek و ELK
بعدی نصب استک LAMP روی Debian 11

2 Comments

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • romantik69.co.il گفت:
    14 فروردین 1401 در 21:17

    Very nice write-up. I definitely appreciate this site. Thanks!

    پاسخ
    • عارف اختری گفت:
      14 فروردین 1401 در 22:15

      thanks bro,
      Your Welcome

      پاسخ

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پشتیبانی
دسته‌ها
  • مقالات
برچسب‌ها
(NFS (Network File System Adware چیست؟ Anti-Malware CentOS cluster ProxySQL CONTEXT در SELinux چیست CONTEXT چیست dark web dd debian deep web Destributed Hash Table Discretionary Access Control Dispersed Distributed Distributed Dispersed docker docker orchestration elk Eschalot facebookcorewwwi.onion FBI fedora freebsd glusterfs glusterfs-client glusterfs-server Gluster Storge Gluster Storge چیست Gluster Storge چیست؟ gluster volume type gnome gnome desktop guake kali Linux zabbix آغاز کار با لینوکس آموزش لینوکس آنتی ویروس بات نت دبیان لینوکس لینوکس چیست نرم افزار
  • محبوب
  • جدید
  • دیدگاه ها
پشتیبانی

ما در آکادمی لینوکس لرن سعی بر این داریم که بهترین آموزش ها رو با بالاترین کیفیت در اختیار شما بزاریم.
لینوکس لرن تجربه ی متفاوت آموزش است
  • خراسان جنوبی - بیرجند
  • 09159612321
  • [email protected]
دسترسی سریع
  • دوره ها
  • مقالات
  • کتابخانه
  • پذیرش پروژه
  • ابزارهای لینوکس
  • مدرسان
  • حریم خصوصی
  • تماس با ما
  • درباره ما
خبرنامه

چیزی را از دست ندهید، ثبت نام کنید و در مورد دوره های ما مطلع باشید.

نمادها
نوشته شده با ❤️
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://linuxlearn.org/?p=22175
مرورگر شما از HTML5 پشتیبانی نمی کند.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند.

آکادمی لینوکس لرن

  • 09159612321
  • شنبه تا چهارشنبه از ساعت 8 تا 17
  • [email protected]