تكوين Logstash على القطرات لإعادة توجيه سجلات Nginx إلى البحث المفتوح المُدار

مقدمة

المتابعة بالمعاينات للخوادم الويب مهمة لتأمين تشغيل موقعك بسلاسة وحل مشاكل وفهم سلوك المستخدمين. إذا كنت تستخدم Nginx فهي تنتج معاينات الوصول والأخطاء تشكل معلومات قيمة. لإدارة وتحليل هذه المعاينات يمكنك استخدام Logstash لإعالة وتوجيهها وتطبيق DigitalOcean Managed OpenSearch للمؤشر وتصور البيانات.

في هذا الدرس التعليمي، سنقوم بتوجيهك خلال تثبيت Logstash على حزب، وتكييفه لجمع معاينات Nginx الخاصة بك وإرسالها إلى DigitalOcean Managed OpenSearch.

المقايس

حالة استخدام

قد تحتاج إلى هذا الإعداد إذا كنت تريد:

  • الرقابة وحل المشاكل: تتبع أداء مرور المستودعات الويب والأخطاء من خلال تحليل الأسطر التي تنشر في الوقت الحالي.
  • تحليل الأداء: تحصل على أعطاء حيوي لأنماط ترافيك الويب ومعاملات الخوادم.
  • توحيد التسجيلات: تركب تسجيلات من معدات Nginx متعددة إلى حالة OpenSearch واحدة للإدارة الأسهل.

ملاحظة: وقت تنصيب الإعداد يجب أن يكون حوالي 30 دقيقة.

خطوة 1 – تثبيت Logstash على الجليدز

يمكن تثبيت Logstash باستخدام ملفات النسخ البينية المتوفرة هنا أو مخزونات التعبير المخصصة لنظامك التشغيل. وللإدارة الأسهل والتحديثات، يوصل بشكل عام إلى استخدام المخزونات التعبيرية. يمكنك استخدام مدير التطبيقات APT على أنظمة ديبيان-بنية مثل Ubuntu، بينما على أنظمة ريد هات بنية مثل CentOS أو RHEL، يمكنك استخدام yum

في هذا المقطع، سنقوم بتعرف على تثبيت Logstash بواسطة كلا apt و yum مديري التطبيقات، متأكدين أنه يمكنك تكوين Logstash على قمة الدوبلوت بغض النظر عن توزيعك اللينكسي.

لإيجاد النظام العامل، قم بتنفيذ الأمر التالي:

cat /etc/os-release

لأنظمة تعتمد على APT (Ubuntu/Debian)

1. تحميل وتثبيت المفاتيح الموردة العامة:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

2. تثبيت apt-transport-https إذا لم يتم تثبيته بالفعل:

sudo apt-get install apt-transport-https

3. إضافة وحفظ تعريف المخزون الخاص بLogstash في قائمة المصادر التعبيرية الخاصة بكapt:

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

ملاحظة: تأكد من أنك لا تستخدم أوامر add-apt-repository لأنها قد تضيف مدخلاً deb-src لا يتم دعمه. إذا واجهت خطأ مرتبطة بمدخل deb-src، حذفه من ملف /etc/apt/sources.list. إذا أضافت المدخل 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، ينبغي أن تنتهي التثبيت كما يتوجب.

4. 更新包索引以包括新的仓库:

sudo apt-get update

5. 使用 apt 包管理器安装 Logstash:

sudo apt-get install logstash

6. 启动 Logstash 并使其在启动时自动启动:

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash 现在已安装并运行在您的系统上。

对于基于 YUM 的系统(CentOS/RHEL)

1. 下载并安装 Logstash 仓库的公共签名密钥:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2. 在 /etc/yum.repos.d/ 为 Logstash 创建一个仓库文件。例如,创建一个名为 logstash.repo 的文件。您可以复制并粘贴下面的内容来创建文件并更新内容:

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

المخزون حاول استخدامه.

3. 使用 YUM 包管理器安装 Logstash:

sudo yum install logstash

4. 启动 Logstash 并使其在启动时自动启动:

sudo systemctl start logstash
sudo systemctl enable logstash

لقد تم تثبيت Logstash وبدء تشغيله في نظامك الآن.

خطوة 2 – تثبيت ملحق البداية المفتوحة

يمكنك تثبيت ملحق البداية المفتوحة بتنفيذ الأمر التالي:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

يمكنك إيجاد مزيد من المعلومات عن الملحق في هذا مخزون ملحق logstash-output-opensearch.

خطوة 3 – تكوين Logstash لإرسال سجلات Nginx إلى OpenSearch

يتكون قناة Logstash من ثلاث مراحل رئيسية: إدخال، مرشد، وخروج. قناة Logstash تستخدم ما يلي ملحقات. يمكنك استخدام ملحقات المجتمع أو إنشاء ملحقاتك الخاصة.

  • الإدخال: هذه المرحلة تجمع البيانات من مصادر مختلفة. Logstash تدعم عدد كبير من الملحقات الإدخالية للتعامل مع مصادر البيانات مثل الملفات السجلية، البases البيانات، الخطوط الرسائلية، والخدمات السعودية.
  • المرشد: هذه المرحلة تعالج وتحويل البيانات التي تجمع في المرحلة الإدخالية. يمكن للمرشادات تعديل، تغيير وتشكيل البيانات لجعلها أكثر فائدة وسهلة التحليل.
  • الخروج: في هذه المرحلة يتم إرسال البيانات المعالجة إلى منشأ. ويمكن أن تشمل المناصب التالية: قواعد البيانات، الملفات، وقاعدات البيانات مثل OpenSearch.

دعونا نخلق مجموعة من الأدوات الجديدة.

1. قم بإنشاء ملف إعدادات Logstash في /etc/logstash/conf.d/nginx-to-opensearch.conf بالمحتويات التالية:

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_access"]
  }
  file {
    path => "/var/log/nginx/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_error"]
  }
}
filter {
  if "nginx_access" in [tags] {
    grok {
      match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  } else if "nginx_error" in [tags] {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  }
}
output {
  if "nginx_access" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_access-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  } else if "nginx_error" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_error-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  }
}

أستبدل:

  • OpenSearch-Hostname باسم معالج الOpenSearch الخاص بك.
  • <your_password> بكلمة مرور الOpenSearch الخاصة بك.

2. تطبيق الإعدادات الجديدة بإعادة بدء الLogstash:

sudo systemctl restart logstash

3. تفقد سجلات Logstash لتأكد من أنها تعالج وتتجه بالبيانات بطريقة صحيحة:

sudo tail -f /var/log/logstash/logstash-plain.log

تفسير مجموعة nginx-to-opensearch.conf

الإدخال

القطعة الإدخالية توجيه قطعتين من الملفات لقراءة المراسلات:

مراسلات Nginx:
المسارات:
/var/log/nginx/access.log (للمراسلات الناجمة عن الوصول)
/var/log/nginx/error.log (للمراسلات الخاطئة)
موقف البدء: beginning – يقرأ من بداية ملفات المراسلات.
مسار السجل التنظيمي: /dev/null – يتم تعطيل تتبع التكرار للقراءة المتواصلة.
التسميات:
["nginx_access"] للمراسلات الناجمة عن الوصول
["nginx_error"] للمراسلات الخاطئة.

ملاحظة: تأكد من أن خدمة Logstash لديها توفر على مسارات الإدخال.

تصفية

التصفيةتقوم بمعالجة المعلومات البيانية والتي تتم تحديدها بواسطة علامات التسميات:

معالجة المعلومات البيانية:
تستخدم تصفية grok لتشريح نمط المعلومات البيانية، وتسحب حقول مثل client_ip، timestamp، method، request، http_version، response، bytes، referrer، وuser_agent.
تم مسح الmessage الأصلي وبعض ميدات البيانات.

معلومات الخطأ:
يتم بحث عن علامة nginx_error وتطبيق تصفية grok لتسحب حقول مثل timestamp، level، pid، tid، وerror_message.
أيضًا تم مسح الmessage والميدات البيانية.

إيصال

الإيصاليقوم بتوجيه الحوادث إلى OpenSearch وفقًا لعلاماتها:

توجيه إلى OpenSearch:
لكلا المعلومات البيانية والخطأ، يتم تحديد:المواقع: URL لمجال OpenSearch.
المستخدم: doadmin للتحقق.
الكلمة السرية: كلمة السر الخاصة بOpenSearch.
البند:
nginx_access-%{+YYYY.MM.dd} للمعلومات البيانية
nginx_error-%{+YYYY.MM.dd} للخطأ
إعدادات SSL: تمكين SSL وتحقيق التصديق للشهادات.

خطوة 4 – Configure OpenSearch

1. افتح متصفحك الإنترنتي واذهب إلى عنوان لوحة التحكم في OpenSearch:

https://<OpenSearch-Hostname>

replace OpenSearch-Hostname باسم ماستودع الخادم OpenSearch الخاص بك.

2. إنشاء نموذج مؤشر.
a. في ال侧边栏 اليساري، انتقل إلى الإدارة > إدارة الوحات > النماذج التسلسلية.
b. انقر على إنشاء نموذج مؤشر في الأعلى الأيمن.
c. أدخل nginx_access-* أو nginx_error-* كنموذج مؤشر لتطابق جميع المؤشرات التي تنشأ بواسطة Logstash وانقر على الخطوة التالية.
d. انقر على إنشاء نموذج مؤشر.

3. تأكد من أن نموذج المؤشر تم إنشاؤه بنجاح وقابل للرؤية في قائمة النماذج التسلسلية.

4. في ال侧边栏 اليساري، اذهب إلى الإكتشاف واختار نموذج المؤشر الذي قمت بإنشائه (nginx_access-* أو nginx_error-*). تأكد من أن مدخلات السجل قابلة للرؤية ومواد المؤشر مسجلة بشكل صحيح.

5. إنشاء تمويلات ووحات. زور كيفية إنشاء وحدة بحث في OpenSearch لمعلومات تفصيلية.

تحليل المشاكل

تحقق من الاتصال

يمكنك تحقيق ان اللوجستاش قادر على الاتصال ب OpenSearch باختبار الاتصال:

curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"

استبدال:

  • OpenSearch-Hostname باسم ماثل للخوادم الخاصة بك.
  • <your_password> بكلمة المرور الخاصة ب OpenSearch.

قام التسجيل

يمكنك ضمان جميع البيانات موجودة بطريقة صحيحة في OpenSearch باستخدام أوامر الـ curl التالية:

curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"

استبدال:

  • OpenSearch-Hostname باسم ماثل للخوادم الخاصة بك.
  • <your_password> بكلمة المرور الخاصة ب OpenSearch

إعدادات الجدار والشبكة

تأكد من قوانين الجدار وإعدادات الشبكة تسمح بالتردد بين Logstash و OpenSearch على نقطة المكون 25060 للبوت.

الخلاصة

في هذه الدليل، تعلمت كيفية ترتيب وإعادة توفير Logstash لجمع وتوجيه المعلومات المتعلقة ب Nginx إلى OpenSearch.

لقد نظرت إلى كيفية استخدام مديري البرامج apt أو yum وهما ما يعتمد على توزيع لينكسك خاصتك، لتحقيق تشغيل Logstash على حزبك الصغير. أيضًا قمت بإنشاء وتنظيم ملف إعدادات Logstash لتتأكد من تحقيق تجزئة صحيحة للمعلومات المتعلقة ب Nginx وإرسالها إلى OpenSearch. ومن ثم قمت بإنشاء نموذج للبند البحثي في لوحة المعلومات OpenSearch للتحقق من أن المعلومات المتعلقة بالبيانات تُسجل بشكل صحيح وقابلة للبحث والتحليل. بعد إنجاز هذه الخطوات، يمكنك الآن الحصول على إجراء يعمل حيث Logstash يجمع معلومات Nginx ويرسلها إلى OpenSearch. هذا الإجراء يسمح لك باستخدام قواعد البحث والأدوات التجميلية القوية في OpenSearch لتحليل سجلات مختلفة للمخزون.

إذا واجهت أي مشاكل، انظر إلى النصيحة المقدمة للتصحيح واشارة إلى المساعدة الأكثر من المستندات ل Logstash و OpenSearch. والمراقبة المنظمة ستحمي نظام جمع المعلومات من التنقل والتأديب بشكل سلس.

Source:
https://www.digitalocean.com/community/tutorials/forward-nginx-logs-to-opensearch-using-logstash