ارسال لاگ‌های آپاچی به OpenSearch از طریق Logstash

مقدمه
مدیریت موثر لاگ‌های وب سرور برای حفظ عملکرد وب‌سایت، عیب‌یابی مشکلات و کسب بینش از رفتار کاربران ضروری است. آپاچی یکی از محبوب‌ترین وب سرورهاست و لاگ‌های دسترسی و خطا را تولید می‌کند که شامل اطلاعات ارزشمندی هستند. برای مدیریت و تحلیل این لاگ‌ها، می‌توان از Logstash برای پردازش و ارسال آن‌ها به OpenSearch مدیریت‌شده‌ی DigitalOcean برای ایندکس و بصری‌سازی استفاده کرد.
در این آموزش، نحوه‌ی نصب Logstash بر روی یک Droplet، پیکربندی آن برای جمع‌آوری لاگ‌های آپاچی و ارسال آن‌ها به OpenSearch مدیریت‌شده برای تحلیل را توضیح خواهیم داد.
پیش‌نیازها
1. یک یا چند Droplet با وب‌سرور Apache نصب‌شده.
2. یک کلاستر OpenSearch مدیریت‌شده.
مرحله ۱ – نصب Logstash
Logstash را می‌توان با استفاده از فایل‌های باینری یا از طریق مخازن پکیج نصب کرد. برای مدیریت و به‌روزرسانی آسان‌تر، استفاده از مخازن پکیج توصیه می‌شود.
در این بخش، نحوه‌ی نصب Logstash روی Droplet را با استفاده از دو مدیر بسته‌ی APT و YUM توضیح می‌دهیم.
شناسایی سیستم‌عامل
ابتدا نوع سیستم‌عامل را بررسی کنید:
cat /etc/os-release
برای سیستم‌های مبتنی بر APT (Ubuntu/Debian)
۱. دریافت و نصب کلید عمومی امضا:
wget -qOhttps://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg –dearmor -o /usr/share/keyrings/elastic-keyring.gpg
۲. نصب پیش‌نیازها (در صورت نیاز):
sudo apt-get install apt-transport-https
۳. افزودن مخزن Logstash به منابع سیستم:
echo “deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
warning توجه:
از دستور add-apt-repository استفاده نکنید، زیرا یک ورودی deb-src نیز اضافه می‌کند که منجر به خطای زیر خواهد شد:
Unable to find expected entry ‘main/source/Sources’ in Release file (Wrong sources.list entry or malformed file)
اگر این ورودی را اضافه کرده‌اید، کافی است خط deb-src را از فایل /etc/apt/sources.list حذف کنید تا نصب بدون مشکل انجام شود.
۴. به‌روزرسانی مخازن و نصب Logstash:
sudo apt-get update && sudo apt-get install logstash
برای سیستم‌های مبتنی بر YUM (CentOS/RHEL)
۱. دریافت و نصب کلید عمومی امضا:
۲. افزودن مخزن Logstash:
برای افزودن مخزن، فایل /etc/yum.repos.d/logstash.repo را ایجاد و به‌روزرسانی کنید:
sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
gpgcheck=1
enabled=1
autorefresh=1
type=rpm-md
EOF
۳. نصب Logstash:
پس از پیکربندی مخزن، Logstash را با دستور زیر نصب کنید:
sudo yum install logstash
برای اطلاعات بیشتر، به راهنمای نصب Logstash مراجعه کنید.
مرحله ۲ – پیکربندی Logstash برای ارسال لاگ‌ها به OpenSearch
یک پایپ‌لاین Logstash شامل سه مرحله‌ی اصلی است: ورودی (Input)، فیلتر (Filter)، و خروجی (Output). Logstash برای این مراحل از پلاگین‌ها استفاده می‌کند. شما می‌توانید از پلاگین‌های موجود در جامعه‌ی کاربری استفاده کنید یا پلاگین‌های اختصاصی خود را ایجاد کنید.
۱. ورودی (Input)
این مرحله داده‌ها را از منابع مختلف جمع‌آوری می‌کند. Logstash از پلاگین‌های ورودی متعددی برای پردازش داده‌ها از منابعی مانند فایل‌های لاگ، پایگاه‌های داده، پیام‌صف‌ها و سرویس‌های ابری پشتیبانی می‌کند.
۲. فیلتر (Filter)
این مرحله داده‌های جمع‌آوری‌شده را پردازش و تبدیل می‌کند. فیلترها می‌توانند داده‌ها را تغییر دهند، غنی‌سازی کنند و ساختار دهند تا تحلیل آن‌ها آسان‌تر شود.
۳. خروجی (Output)
این مرحله داده‌های پردازش‌شده را به مقصد موردنظر ارسال می‌کند. مقاصد خروجی می‌توانند شامل پایگاه‌های داده، فایل‌ها و مخازن داده‌ای مانند OpenSearch باشند.
مرحله ۳ – نصب پلاگین خروجی OpenSearch
برای نصب پلاگین خروجی OpenSearch، از دستور زیر استفاده کنید:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
برای اطلاعات بیشتر می‌توانید به مخزن پلاگین logstash-output-opensearch مراجعه کنید.
حالا بیایید یک پایپلاین ایجاد کنیم:
یک فایل جدید در مسیر /etc/logstash/conf.d/ به نام apache_pipeline.conf ایجاد کنید و محتوای زیر را در آن کپی کنید:
input {
  file {
    path => “/var/log/apache2/access.log”
    start_position => “beginning”
    sincedb_path => “/dev/null”
    tags => “apache_access”
  }
  file {
    path => “/var/log/apache2/error.log”
    start_position => “beginning”
    sincedb_path => “/dev/null”
    tags => “apache_error”
  }
}
filter {
  if “apache_access” in [tags] {
    grok {
        match => { “message” => “%{HTTPD_COMBINEDLOG}” }
    }
    mutate {
        remove_field => [ “message”,”[log][file][path]”,”[event][original]” ]
      }
   } else {
   grok {
        match => { “message” => “%{HTTPD24_ERRORLOG}” }
    }
   }
}
output {
  if “apache_access” in [tags] {
  opensearch {
    hosts       => “https://<OpenSearch-Hostname>:25060”
    user        => “doadmin”
    password    => “<your_password>”
    index       => “apache_access”
    ssl_certificate_verification => true
  }
  } else {
  opensearch {
    hosts       => “https://<OpenSearch-Hostname>:25060”
    user        => “doadmin”
    password    => “<your_password>”
    index       => “apache_error”
    ssl_certificate_verification => true
  }
  }
}
توضیح پیکربندی:
• ورودی (INPUT): این بخش برای پیکربندی منبع رویدادها استفاده می‌شود. از پلاگین ورودی file در اینجا استفاده شده است.
• path => “/var/log/apache2/access.log”: مسیر فایل لاگ دسترسی Apache که Logstash از آن می‌خواند.
• start_position => “beginning”: تعیین می‌کند که Logstash باید از کجا شروع به خواندن فایل کند. “beginning” به این معنی است که Logstash باید از ابتدای فایل شروع کند.
• sincedb_path => “/dev/null”: مسیر فایل sincedb که برای پیگیری موقعیت فعلی در فایل‌های لاگ استفاده می‌شود.
• tags => “apache_access”: به رویدادهای خوانده‌شده از این ورودی یک تگ اختصاص می‌دهد.
• فیلتر (FILTER): این بخش برای پردازش رویدادها استفاده می‌شود. در ابتدا یک شرط برای بررسی تگ apache_access در فیلد [tags] وجود دارد.
• فیلتر GROK برای لاگ‌های دسترسی Apache: این فیلتر برای پارس کردن فرمت لاگ‌های دسترسی Apache استفاده می‌شود و اطلاعاتی مانند آدرس IP، زمان، روش HTTP، URI، کد وضعیت و غیره استخراج می‌کند.
• فیلتر Mutate (حذف اختیاری): پس از پارس کردن لاگ‌های Apache، این فیلتر برای حذف برخی فیلدها استفاده می‌شود.
• خروجی (OUTPUT): این بخش برای ارسال رویدادها به مقصد مشخص استفاده می‌شود. در اینجا از پلاگین خروجی OpenSearch استفاده می‌شود.
• در این قسمت، اگر تگ apache_access موجود باشد، داده‌ها به ایندکس apache_access ارسال می‌شوند و اگر تگ apache_error موجود باشد، به ایندکس apache_error ارسال می‌شوند.
اطمینان حاصل کنید که <OpenSearch-Hostname> را با نام میزبان OpenSearch خود و <your_password> را با رمز عبور OpenSearch خود جایگزین کنید.
• الگوهای GROK را می‌توانید در اینجا پیدا کنید: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.
خروجی (OUTPUT)
افزونه خروجی برای ارسال رویدادها به مقصد خاص استفاده می‌شود. بخش خروجی با یک شرط if آغاز می‌شود. در اینجا از شرایط if برای هدایت لاگ‌ها به دو شاخص مجزا در OpenSearch استفاده می‌کنیم: apache_error و apache_access.
توضیح پارامترهای خروجی:
• hosts => https://XXX:25060“: نام میزبان OpenSearch شما
• user => “doadmin”: نام کاربری OpenSearch شما
• password => “XXXXX”: رمز عبور OpenSearch شما
• index => “apache_error”: نام شاخص در OpenSearch
• ssl_certificate_verification => true: فعال‌سازی تأیید گواهی‌نامه SSL برای ارتباط ایمن
این پیکربندی به شما کمک می‌کند تا داده‌ها را به دو شاخص مختلف ارسال کنید: یکی برای دسترسی به Apache (apache_access) و دیگری برای خطاهای Apache (apache_error).
مرحله ۴ – راه‌اندازی Logstash
پس از پیکربندی پایپلاین، سرویس Logstash را راه‌اندازی کنید:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service
مرحله ۵ – رفع اشکال
بررسی اتصال
برای بررسی اینکه Logstash می‌تواند به OpenSearch متصل شود، از دستور زیر استفاده کنید:
curl -u your_username:your_password -X GET https://your-opensearch-server:25060/_cat/indices?v
در این دستور، <your-opensearch-server> را با نام میزبان OpenSearch و <your_username> و <your_password> را با اطلاعات کاربری OpenSearch خود جایگزین کنید.
بارگذاری داده
برای اطمینان از اینکه داده‌ها به درستی در OpenSearch ایندکس شده‌اند، از دستور زیر استفاده کنید:
curl -u your_username:your_password -X GET http://your-opensearch-server:25060/<your-index-name>/_search?pretty”
در اینجا نیز <your-opensearch-server> را با نام میزبان OpenSearch و <your_username>, <your_password> را با اطلاعات کاربری خود جایگزین کنید. همچنین، <your-index-name> را با نام ایندکس مورد نظر خود جایگزین کنید.
پیکربندی فایروال و شبکه
اطمینان حاصل کنید که قوانین فایروال و تنظیمات شبکه اجازه عبور ترافیک بین Logstash و OpenSearch را از طریق پورت ۲۵۰۶۰ می‌دهند.
مشاهده لاگ‌ها
برای مشاهده لاگ‌های Logstash به مسیر /var/log/logstash/logstash-plain.log مراجعه کنید.
نتیجه‌گیری
در این راهنما، مراحل تنظیم Logstash برای جمع‌آوری و ارسال لاگ‌های Apache به OpenSearch را مرور کردیم. خلاصه‌ای از مراحل انجام‌شده به شرح زیر است:
1. نصب Logstash: نحوه نصب Logstash با استفاده از مدیر بسته‌های APT یا YUM، بسته به توزیع لینوکس شما، توضیح داده شد.
2. پیکربندی Logstash: فایل پیکربندی Logstash را برای اطمینان از پارس شدن صحیح لاگ‌های Apache و ارسال آن‌ها به OpenSearch تنظیم کردیم.
3. بررسی در OpenSearch: یک الگوی ایندکس در OpenSearch Dashboards ایجاد کردیم تا اطمینان حاصل کنیم که لاگ‌ها به درستی ایندکس شده و برای تحلیل در دسترس هستند.
با اتمام این مراحل، اکنون باید یک راه‌اندازی کاربردی داشته باشید که در آن Logstash لاگ‌های Apache را جمع‌آوری کرده و به OpenSearch ارسال می‌کند.
برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *