مقدمة
تُعد إدارة سجلات خادم الويب بكفاءة أمرًا بالغ الأهمية للحفاظ على أداء موقعك الإلكتروني، واستكشاف الأخطاء وإصلاحها، والتعمق في سلوك المستخدم. يُعد Apache أحد أشهر خوادم الويب، حيث يُنشئ سجلات وصول وأخطاء تحتوي على معلومات قيّمة. لإدارة هذه السجلات وتحليلها بفعالية، يمكنك استخدام Logstash لمعالجتها وإرسالها إلى OpenSearch المُدار من DigitalOcean للفهرسة والتصور.
في هذا البرنامج التعليمي، سنرشدك خلال عملية تثبيت Logstash على Droplet الخاص بك، وتكوينه لجمع سجلات Apache، وإرسالها إلى Managed OpenSearch للتحليل.
المتطلبات الأساسية
- قطرة/قطرات مع خادم الويب Apache مثبتًا.
- مجموعة OpenSearch المُدارة
الخطوة 1 – تثبيت Logstash
يمكن تثبيت Logstash باستخدام ملفات ثنائية أو عبر مستودعات الحزم. لتسهيل الإدارة والتحديثات، يُنصح عادةً باستخدام مستودعات الحزم.
في هذا القسم، سنرشدك خلال عملية تثبيت Logstash على Droplet الخاص بك باستخدام APT وYUM Package Manager.
دعونا نحدد نظام التشغيل:
cat /etc/os-release
للأنظمة المستندة إلى APT (Ubuntu/Debian)
تنزيل وتثبيت مفتاح التوقيع العام:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
قد تحتاج إلى تثبيت حزمة apt-transport-https على Debian قبل المتابعة:
sudo apt-get install apt-transport-https
احفظ تعريف المستودع في /etc/apt/sources.list.d/elastic-8.x.list:
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
لإضافة مستودع Logstash، استخدم طريقة echo الموضحة أعلاه. لا تستخدم add-apt-repository، لأنها ستضيف أيضًا مدخل deb-src، ولكننا لا نوفر حزمة مصدر. إذا أضفتَ مدخل 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 ويجب أن يعمل التثبيت كما هو متوقع.
شغّل sudo apt-get update وسيكون المستودع جاهزًا للاستخدام. يمكنك استخدامه مع:
sudo apt-get update && sudo apt-get install logstash
للأنظمة المستندة إلى YUM (CentOS/RHEL)
تنزيل وتثبيت مفتاح التوقيع العام:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
أضف ما يلي إلى ملف /etc/yum.repos.d/logstash.repo. يمكنك استخدام "t" لتحديث الملف وإنشائه.
sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOFخزانك جاهز للاستخدام. يمكنك استخدامه مع:
sudo yum install logstash
لمزيد من المعلومات، يرجى الرجوع إلى دليل تثبيت Logstash.
الخطوة 2 - تكوين Logstash لإرسال السجلات إلى OpenSearch
يتكون خط أنابيب Logstash من ثلاث مراحل رئيسية: الإدخال، والتصفية، والإخراج. يستخدم خط أنابيب Logstash مكونات إضافية. يمكنك استخدام مكونات إضافية مجتمعية أو إنشاء مكونات إضافية خاصة بك.
- الإدخال: تجمع هذه المرحلة البيانات من مصادر متنوعة. يدعم Logstash عدة إضافات إدخال لإدارة مصادر البيانات، مثل ملفات السجل، وقواعد البيانات، وقوائم انتظار الرسائل، والخدمات السحابية.
- الفلترة: تُعالج هذه المرحلة البيانات المُجمّعة في مرحلة الإدخال وتُحوّلها. تُعدّل الفلترة البيانات وتُثريها وتُنظّمها لجعلها أكثر فائدةً وقدرةً على التحليل.
- الإخراج: تُرسِل هذه المرحلة البيانات المُعالَجة إلى وجهة مُحدَّدة. قد تشمل هذه الوجهات قواعد البيانات والملفات ومخازن البيانات، مثل OpenSearch.
الخطوة 3 – تثبيت البرنامج الإضافي Open Search Output
يمكن تثبيت البرنامج الإضافي لإخراج OpenSearch عن طريق تشغيل الأمر التالي:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
يمكن العثور على مزيد من المعلومات في مستودع logstash-output-opensearch-plugin هذا.
الآن دعونا ننشئ خط أنابيب:
قم بإنشاء ملف جديد في المسار /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
}
}
}مع اسم المضيف لخادم OpenSearch الخاص بك و استبدلها بكلمة المرور الخاصة بـ OpenSearch.
دعونا نحلل التكوين أعلاه.
- الإدخال: يُستخدم لتكوين مصدر للأحداث. يُستخدم هنا مُكوِّن إدخال الملف.
- المسار => “/var/log/apache2/access.log”: يحدد المسار إلى ملف سجل وصول Apache الذي يجب أن يقرأ منه Logstash.
تأكد من أن خدمة Logstash لديها إمكانية الوصول إلى مسار الإدخال.
- start_position => “beginning”: يحدد المكان الذي يجب أن يبدأ فيه Logstash قراءة ملف السجل. يشير “beginning” إلى أنه يجب على Logstash البدء في معالجة الملف من البداية، وليس النهاية.
- sincedb_path => “/dev/null”: يُحدد مسار ملف sincedb. يستخدم Logstash ملفات Sincedb لتتبع الموقع الحالي في ملفات السجل، مما يسمح له باستئناف العمل من حيث توقف في حالة إعادة التشغيل أو تعطل النظام.
- tags => "apache_access": يُعيّن وسمًا للأحداث المقروءة من هذا المُدخل. تُفيد الوسوم في تحديد الأحداث وتصفيتها في Logstash، وغالبًا ما تُستخدم لاحقًا في مراحل الإخراج أو تصفية التكوين. نستخدم الوسوم لهذا الغرض الأخير.
- الفلتر: يستخدم لمعالجة الأحداث.
البدء بالشرطيات:
(if "apache_access" in [tags]):
يتحقق هذا من وجود وسم apache_access في قسم [العلامات] لأحداث السجل الواردة. نستخدم هذا الشرط لتطبيق مُرشِّح GROK المناسب على سجلات وصول Apache وسجلات الأخطاء.
- مرشح Grok (لسجلات وصول Apache):
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}مرشح grok %{HTTPD_COMBINEDLOG} هو نمط مُعَدَّ مسبقًا في Logstash يُستخدم لتحليل تنسيق سجل الوصول المُجمَّع في Apache. يستخرج هذا المرشح حقولًا مثل عنوان IP، والطابع الزمني، وطريقة HTTP، وURI، ورمز الحالة، وغيرها من نص رسالة الأحداث المُستلَمة.
- إزالة مرشح التحور (اختياري): بعد تحليل سجلات Apache، نستخدم mutate-remove لإزالة بعض الحقول.
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}- شرط آخر: إذا لم يكن وسم apache_access ضمن [tags]، فسيتم تنفيذ كتلة else. تحتوي هذه الكتلة على مُرشِّح GROK آخر لسجلات أخطاء Apache.
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
يقوم هذا الفلتر %{HTTPD24_ERRORLOG} بتحليل الرسائل التي تتطابق مع تنسيق سجل أخطاء Apache. ويستخرج الحقول المتعلقة بسجلات الأخطاء، مثل الطابع الزمني، ومستوى السجل، ورسالة الخطأ، إلخ.
يمكنك العثور على أنماط GROK في: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns يجد.
- الإخراج: يرسل البرنامج المساعد أحداث الإخراج إلى وجهة محددة.
تبدأ كتلة الإخراج بشرط if. نستخدم هنا جملة الشرط.
if "apache_access" in [tags] {}
إذا تم استخدام شرط لتوجيه السجلات إلى OpenSearch إلى ملفين منفصلين، apache_error وapache_access.
دعونا نلقي نظرة على البرنامج الإضافي OpenSearch Output:
hosts => "https://XXX:25060" Your Open search Hostname
user => "doadmin" Your Open search Username
password => "XXXXX" OpenSearch Password
index => "apache_error" Index name in OpenSearch
ssl_certificate_verification => true Enabled SSL certificate verificationالخطوة 4 - بدء تشغيل Logstash
بعد تكوين خط الأنابيب، قم ببدء خدمة Logstash:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.serviceالخطوة 5 – استكشاف الأخطاء وإصلاحها
التحقق من الاتصال.
يمكنك التحقق من أن Logstash يمكنه الاتصال بـ OpenSearch عن طريق اختبار الاتصال:
curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"
مع اسم المضيف لخادم OpenSearch و ، استبدلها ببيانات اعتماد OpenSearch الخاصة بك.
استيعاب البيانات
تأكد من فهرسة البيانات بشكل صحيح في OpenSearch:
curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"
مع اسم المضيف لخادم OpenSearch و ، استبدلها ببيانات اعتماد OpenSearch الخاصة بك. وبالمثل، مع اسم الفهرس.
جدار الحماية وتكوين الشبكة
تأكد من أن قواعد جدار الحماية وإعدادات الشبكة تسمح بحركة المرور بين Logstash وOpenSearch على المنفذ 25060.
السجلات
يمكن العثور على السجلات المتعلقة بـ Logstash في /var/log/logstash/logstash-plain.log.
نتيجة
في هذا الدليل، قمنا بإعداد Logstash لجمع سجلات Apache وإرسالها إلى OpenSearch. إليك ملخص سريع لما تناولناه:
تثبيت Logstash: لقد أوضحنا كيفية استخدام مديري الحزم APT أو YUM، اعتمادًا على توزيع Linux الخاص بك، لتثبيت Logstash على Droplet الخاص بك.
تكوين Logstash: لقد قمنا بإنشاء ملف تكوين Logstash وتكوينه للتأكد من تحليل سجلات Apache بشكل صحيح وإرسالها إلى OpenSearch.
التحقق في OpenSearch: قمنا بإعداد قالب قائمة في لوحات معلومات OpenSearch للتحقق من أن تقاريرك مفهرسة بشكل صحيح ومرئية للتحليل.
بعد إكمال هذه الخطوات، يجب أن يكون لديك الآن إعداد عمل حيث يجمع Logstash سجلات Apache ويرسلها إلى OpenSearch.









