Ultimate magazine theme for WordPress.

كيفية إعداد تحليلات Elasticsearch ولوحة المراقبة لعملك – CloudSavvy IT

1

ads

جزء التحليلات.

التحليلات مهمة لأي عمل يتعامل مع الكثير من البيانات. Elasticsearch هي أداة لإدارة السجل والفهرس يمكن استخدامها لمراقبة صحة عمليات نشر الخادم والحصول على رؤى مفيدة من سجلات وصول العملاء.

لماذا يعد جمع البيانات مفيدًا؟

تعتبر البيانات نشاطًا تجاريًا ضخمًا – معظم الإنترنت مجاني للوصول لأن الشركات تجني الأموال من البيانات التي يتم جمعها من المستخدمين ، والتي غالبًا ما تستخدمها شركات التسويق لتصميم إعلانات أكثر استهدافًا.

ومع ذلك ، حتى إذا لم تكن تجمع بيانات المستخدم وتبيعها لتحقيق ربح ، فيمكن استخدام البيانات من أي نوع لعمل رؤى تجارية قيمة. على سبيل المثال ، إذا كنت تدير موقعًا إلكترونيًا ، فمن المفيد تسجيل معلومات حركة المرور حتى تتمكن من التعرف على من يستخدم خدمتك ومن أين أتوا.

إذا كان لديك الكثير من الخوادم ، فيمكنك تسجيل مقاييس النظام مثل استخدام وحدة المعالجة المركزية والذاكرة بمرور الوقت ، والتي يمكن استخدامها لتحديد اختناقات الأداء في البنية التحتية الخاصة بك وتوفير مواردك المستقبلية بشكل أفضل.

يمكنك تسجيل أي نوع من البيانات ، وليس فقط حركة المرور أو معلومات النظام. إذا كان لديك تطبيق معقد ، فقد يكون من المفيد تسجيل ضغطات الأزرار والنقرات والعناصر التي يتفاعل معها المستخدمون ، حتى تتمكن من التعرف على كيفية استخدام المستخدمين لتطبيقك. يمكنك بعد ذلك استخدام هذه المعلومات لتصميم تجربة أفضل لهم.

في النهاية ، سيكون الأمر متروكًا لك فيما تقرر تسجيله بناءً على احتياجات عملك الخاصة ، ولكن بغض النظر عن قطاعك ، يمكنك الاستفادة من فهم البيانات التي تنتجها.

ما هو Elasticsearch؟

Elasticsearch هو محرك بحث وتحليلات. باختصار ، يخزن البيانات بالطوابع الزمنية ويتتبع الفهارس والكلمات الرئيسية المهمة لتسهيل البحث من خلال تلك البيانات. إنه قلب كومة مرنة، أداة مهمة لتشغيل إعدادات تحليلات DIY. حتى الشركات الكبيرة جدًا تدير مجموعات ضخمة من Elasticsearch لتحليل تيرابايت من البيانات.

بينما يمكنك أيضًا استخدام مجموعات التحليلات المعدة مسبقًا مثل Google Analytics ، يمنحك Elasticsearch المرونة لتصميم لوحات المعلومات والتصورات الخاصة بك بناءً على أي نوع من البيانات. إنه مخطط حيادي. يمكنك ببساطة إرسال بعض السجلات لتخزينها ، وتقوم بفهرستها للبحث.

Kibana هي لوحة معلومات مرئية لـ Elasticsearch ، وتعمل أيضًا كواجهة مستخدم رسومية عامة قائمة على الويب لإدارة المثيل الخاص بك. يتم استخدامه لإنشاء لوحات المعلومات والرسوم البيانية من البيانات ، وهو شيء يمكنك استخدامه لفهم الملايين من إدخالات السجل في كثير من الأحيان.

Kibana هي لوحة تحكم التصور لـ Elasticsearch.

يمكنك إدخال السجلات في Elasticsearch عبر طريقتين رئيسيتين – إدخال السجلات المستندة إلى الملفات ، أو التسجيل المباشر عبر API أو SDK. لتسهيل الأول ، توفر Elastic Beats ، وشركات شحن البيانات خفيفة الوزن التي يمكنك تثبيتها على الخادم الخاص بك لإرسال البيانات إلى Elasticsearch. إذا كنت بحاجة إلى معالجة إضافية ، فهناك أيضًا Logstash ، وهو عبارة عن خط أنابيب لجمع البيانات وتحويلها لتعديل السجلات قبل إرسالها إلى Elasticsearch.

قد تكون البداية الجيدة هي استيعاب سجلاتك الحالية ، مثل سجلات الوصول إلى خادم ويب NGINX ، أو سجلات الملفات التي تم إنشاؤها بواسطة تطبيقك ، مع شاحن السجل على الخادم. إذا كنت ترغب في تخصيص البيانات التي يتم استيعابها ، فيمكنك أيضًا تسجيل مستندات JSON مباشرةً في Elasticsearch API. سنناقش كيفية إعداد كليهما أدناه.

إذا كنت تدير موقعًا عامًا بشكل أساسي بدلاً من ذلك ، فقد ترغب أيضًا في النظر في Google Analytics ، وهي مجموعة تحليلات مجانية مصممة لمالكي مواقع الويب. يمكنك قراءة دليلنا لأدوات تحليلات مواقع الويب لمعرفة المزيد.

ذات صلة: تحتاج تحليلات لموقع الويب الخاص بك؟ إليك أربع أدوات يمكنك استخدامها

تركيب Elasticsearch

الخطوة الأولى هي تشغيل Elasticsearch على الخادم الخاص بك. سنعرض خطوات لتوزيعات Linux التي تستند إلى Debian مثل Ubuntu ، ولكن إذا لم يكن لديك apt-get، يمكنك اتباع تعليمات Elastic لنظام التشغيل الخاص بك.

للبدء ، ستحتاج إلى إضافة مستودعات Elastic إلى ملف apt-get التثبيت وتثبيت بعض المتطلبات الأساسية:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

وأخيرًا ، قم بتثبيت Elasticsearch نفسه:

sudo apt-get update && sudo apt-get install elasticsearch

بشكل افتراضي ، يعمل Elasticsearch على المنفذ 9200 وهو غير آمن. ما لم تقم بإعداد مصادقة وتفويض مستخدمين إضافيين ، فستحتاج إلى إبقاء هذا المنفذ مغلقًا على الخادم.

مهما فعلت ، سترغب في التأكد من أنها ليست مفتوحة على الإنترنت فقط. هذه في الواقع مشكلة شائعة مع Elasticsearch ؛ لأنه لا يأتي مع أي ميزات أمان بشكل افتراضي ، وإذا كان المنفذ 9200 أو لوحة الويب Kibana مفتوحة على الإنترنت بالكامل ، يمكن لأي شخص قراءة سجلاتك. ارتكبت Microsoft هذا الخطأ مع خادم Elasticsearch الخاص بـ Bing ، حيث كشفت عن 6.5 تيرابايت من سجلات بحث الويب.

أسهل طريقة لتأمين Elasticsearch هي إبقاء 9200 مغلقًا وإعداد المصادقة الأساسية للوحة الويب Kibana باستخدام وكيل NGINX ، والذي سنعرض كيفية القيام به أدناه. بالنسبة لعمليات النشر البسيطة ، يعمل هذا بشكل جيد. ومع ذلك ، إذا كنت بحاجة إلى إدارة عدة مستخدمين ، وتعيين مستويات الأذونات لكل منهم ، فستحتاج إلى النظر في إعداد مصادقة المستخدم وترخيص المستخدم.

إعداد وتأمين Kibana

Kibana هي لوحة تحكم للتصور:

sudo apt-get update && sudo apt-get install kibana

سترغب في تمكين الخدمة بحيث تبدأ عند التمهيد:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable kibana.service

ليس هناك أي إعداد إضافي مطلوب. يجب أن يعمل Kibana الآن على المنفذ 5601. إذا كنت تريد تغيير هذا ، فيمكنك التحرير /etc/kibana/kibana.yml.

يجب عليك بالتأكيد إبقاء هذا المنفذ مغلقًا للجمهور ، حيث لا توجد مصادقة تم إعدادها افتراضيًا. ومع ذلك ، يمكنك إضافة عنوان IP الخاص بك إلى القائمة البيضاء للوصول إليه:

sudo ufw allow from x.x.x.x to any port 5601

الحل الأفضل هو إعداد وكيل عكسي NGINX. يمكنك تأمين هذا باستخدام المصادقة الأساسية ، بحيث يجب على أي شخص يحاول الوصول إليه إدخال كلمة مرور. هذا يبقيه مفتوحًا من الإنترنت دون وضع عناوين IP في القائمة البيضاء ، ولكنه يحافظ على أمانه من المتسللين العشوائيين.

حتى إذا قمت بتثبيت NGINX ، فستحتاج إلى التثبيت apache2-utils، وأنشئ ملف كلمة مرور بامتداد htpasswd:

sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd admin

بعد ذلك ، يمكنك إنشاء ملف تكوين جديد لـ Kibana:

sudo nano /etc/nginx/sites-enabled/kibana

والصق التكوين التالي:

  upstream elasticsearch {
    server 127.0.0.1:9200;
    keepalive 15;
  }

  upstream kibana {
    server 127.0.0.1:5601;
    keepalive 15;
  }

  server {
    listen 9201;
    server_name elastic.example.com;

    location / {
      auth_basic "Restricted Access";
      auth_basic_user_file /etc/nginx/.htpasswd;


      proxy_pass http://elasticsearch;
      proxy_redirect off;
      proxy_buffering off;

      proxy_http_version 1.1;
      proxy_set_header Connection "Keep-Alive";
      proxy_set_header Proxy-Connection "Keep-Alive";
    }

  }

  server {
    listen 80;
    server_name elastic.example.com;

    location / {
      auth_basic "Restricted Access";
      auth_basic_user_file /etc/nginx/.htpasswd;

      proxy_pass http://kibana;
      proxy_redirect off;
      proxy_buffering off;

      proxy_http_version 1.1;
      proxy_set_header Connection "Keep-Alive";
      proxy_set_header Proxy-Connection "Keep-Alive";
    }
  }

يقوم هذا التكوين بإعداد Kibana للاستماع على المنفذ 80 باستخدام ملف كلمة المرور الذي أنشأته من قبل. سوف تحتاج إلى التغيير elastic.example.com لمطابقة اسم موقعك. أعد تشغيل NGINX:

sudo service nginx restart

ويجب أن تشاهد الآن لوحة تحكم Kibana ، بعد إدخال كلمة المرور الخاصة بك.

يمكنك البدء ببعض عينات البيانات ، ولكن إذا كنت ترغب في الحصول على أي شيء ذي معنى من هذا ، فستحتاج إلى البدء في شحن سجلاتك الخاصة.

ربط الشاحنين الخشبيين

لاستيعاب السجلات في Elasticsearch ، ستحتاج إلى إرسالها من الخادم المصدر إلى خادم Elasticsearch الخاص بك. للقيام بذلك ، توفر Elastic شركات شحن خشبية خفيفة الوزن تسمى Beats. هناك مجموعة من الدقات لحالات الاستخدام المختلفة ؛ يجمع Metricbeat مقاييس النظام مثل استخدام وحدة المعالجة المركزية. Packetbeat هو محلل حزم الشبكة الذي يتتبع بيانات حركة المرور. Heartbeat يتتبع وقت تشغيل عناوين URL.

يُطلق على أبسط واحد لمعظم السجلات الأساسية اسم Filebeat ، ويمكن تهيئته بسهولة لإرسال الأحداث من ملفات سجل النظام.

قم بتثبيت Filebeat من ملف apt. بدلاً من ذلك ، يمكنك تنزيل الثنائي للتوزيع الخاص بك:

sudo apt-get install filebeat

لإعداده ، ستحتاج إلى تحرير ملف التكوين:

sudo nano /etc/filebeat/filebeat.yml

هنا ، هناك شيئان رئيسيان للتحرير. تحت filebeat.inputs، ستحتاج إلى تغيير “ممكّن” إلى true، ثم أضف أي مسارات سجل يجب أن يبحث عنها Filebeat ويشحنها.

قم بتحرير ملف التكوين.

بعد ذلك ، ضمن “إخراج البحث المرن”:

أضف اسم مستخدم وكلمة مرور.

إذا كنت لا تستخدم localhost، ستحتاج إلى إضافة اسم مستخدم وكلمة مرور في هذا القسم:

username: "filebeat_writer" 
password: "YOUR_PASSWORD"

بعد ذلك ، ابدأ تشغيل Filebeat. ضع في اعتبارك أنه بمجرد البدء ، سيبدأ على الفور في إرسال جميع السجلات السابقة إلى Elasticsearch ، والتي يمكن أن تكون الكثير من البيانات إذا لم تقم بتدوير ملفات السجل الخاصة بك:

sudo service filebeat start

استخدام كيبانا (إحداث ضجيج)

يفرز Elasticsearch البيانات إلى مؤشرات ، والتي تستخدم للأغراض التنظيمية. يستخدم Kibana “أنماط الفهرس” لاستخدام البيانات فعليًا ، لذلك ستحتاج إلى إنشاء واحد ضمن إدارة المكدس> أنماط الفهرس.

أنشئ وفهرس ضمن إدارة المكدس> أنماط الفهرس.” width=”580″ height=”328″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”/></p><p>مؤشر <em>نمط</em> يمكن أن تتطابق مع مؤشرات متعددة باستخدام أحرف البدل.  على سبيل المثال ، يتم استخدام سجلات Filebeat افتراضيًا باستخدام المؤشرات اليومية المستندة إلى الوقت ، والتي يمكن تدويرها بسهولة بعد بضعة أشهر ، إذا كنت تريد توفير مساحة:</p><pre>filebeat-*</pre><p>يمكنك تغيير اسم الفهرس هذا في ملف التكوين Filebeat.  قد يكون من المنطقي تقسيمه حسب اسم المضيف أو حسب نوع السجلات التي يتم إرسالها.  بشكل افتراضي ، سيتم إرسال كل شيء إلى نفس فهرس نبضات الملفات.</p><p>يمكنك تصفح السجلات الموجودة ضمن علامة التبويب “اكتشاف” في الشريط الجانبي.  يقوم Filebeat بفهرسة المستندات ذات الطابع الزمني بناءً على وقت إرسالها إلى Elasticsearch ، لذلك إذا كنت تقوم بتشغيل الخادم الخاص بك لفترة من الوقت ، فمن المحتمل أن ترى الكثير من إدخالات السجل.</p><p>إذا لم تكن قد بحثت في سجلاتك مطلقًا من قبل ، فسترى على الفور سبب كون وجود منفذ SSH مفتوح مع مصادقة كلمة المرور أمرًا سيئًا – فالبحث عن “كلمة مرور فاشلة” ، يوضح أن خادم Linux العادي هذا بدون تعطيل تسجيل الدخول بكلمة مرور به أكثر من 22000 سجل إدخالات من الروبوتات الآلية التي تحاول كلمات مرور جذر عشوائية على مدار بضعة أشهر.</p><p><img class=

ضمن علامة التبويب “تصور” ، يمكنك إنشاء رسوم بيانية وتصورات من البيانات الموجودة في المؤشرات. سيكون لكل فهرس مجالات، والتي سيكون لها نوع بيانات مثل الرقم والسلسلة.

تتكون المرئيات من مكونين: المقاييس والمستودعات. يحسب قسم المقاييس القيم بناءً على الحقول. في مخطط المنطقة ، يمثل هذا المحور ص. يتضمن ذلك ، على سبيل المثال ، أخذ متوسط ​​جميع العناصر ، أو حساب مجموع كل الإدخالات. Min / Max مفيدان أيضًا في اصطياد القيم المتطرفة في البيانات. يمكن أن تكون الرتب المئوية مفيدة لتصور توحيد البيانات.

تنظم المجموعات البيانات بشكل أساسي في مجموعات. على قطعة الأرض ، هذا هو المحور X. أبسط شكل من أشكال هذا هو الرسم البياني للتاريخ ، والذي يعرض البيانات بمرور الوقت ، ولكن يمكن أيضًا تجميعها حسب المصطلحات المهمة وعوامل أخرى. يمكنك أيضًا تقسيم المخطط أو السلسلة بالكامل حسب شروط محددة.

قسّم الرسم البياني بأكمله أو السلسلة باستخدام مصطلحات محددة.

بمجرد الانتهاء من عمل التصور ، يمكنك إضافته إلى لوحة المعلومات للوصول السريع.

أضف تصورًا إلى لوحة معلومات للوصول السريع.

تتمثل إحدى الميزات المفيدة الرئيسية للوحات المعلومات في القدرة على البحث عن النطاقات الزمنية وتغييرها لجميع المرئيات على لوحة المعلومات. على سبيل المثال ، يمكنك تصفية النتائج لإظهار البيانات من خادم معين فقط ، أو تعيين جميع الرسوم البيانية لإظهار آخر 24 ساعة.

تسجيل مباشر لواجهة برمجة التطبيقات

يعد التسجيل باستخدام Beats أمرًا رائعًا لربط Elasticsearch بالخدمات الحالية ، ولكن إذا كنت تقوم بتشغيل التطبيق الخاص بك ، فقد يكون من المنطقي أكثر قطع الوسيط وتسجيل المستندات مباشرة.

التسجيل المباشر سهل جدا. يوفر Elasticsearch واجهة برمجة تطبيقات لها ، لذلك كل ما عليك فعله هو إرسال مستند بتنسيق JSON إلى عنوان URL التالي ، مع استبدال indexname بالفهرس الذي تنشر عليه:

http://example.com:9200/indexname/_doc

يمكنك بالطبع القيام بذلك برمجيًا باستخدام مكتبة اللغة ومكتبة HTTP التي تختارها.

أرسل مستندًا بتنسيق JSON ، واستبدل اسم الفهرس بالفهرس الذي تنشر عليه.

ومع ذلك ، إذا كنت ترسل سجلات متعددة في الثانية ، فقد ترغب في تنفيذ قائمة انتظار وإرسالها بشكل مجمّع إلى عنوان URL التالي:

http://example.com:9200/_bulk

ومع ذلك ، فإنه يتوقع تنسيقًا غريبًا جدًا: أزواج قائمة منفصلة بسطر جديد. يقوم الأول بتعيين الفهرس المطلوب استخدامه ، والثاني هو مستند JSON الفعلي.

{ "index" : { "_index" : "test"} }
{ "field1" : "value1" }
{ "index" : { "_index" : "test2"} }
{ "field1" : "value1" }
{ "index" : { "_index" : "test3"} }
{ "field1" : "value1" }

قد لا يكون لديك طريقة غير تقليدية للتعامل مع هذا الأمر ، لذلك قد تضطر إلى التعامل مع الأمر بنفسك. على سبيل المثال ، في C # ، يمكنك استخدام StringBuilder كطريقة فعالة لإلحاق التنسيق المطلوب حول الكائن المتسلسل:

private string GetESBulkString<TObj>(List<TObj> list, string index)
{
      var builder = new StringBuilder(40 * list.Count);

      foreach (var item in list)
      {
           builder.Append(@"{""index"":{""_index"":""");
           builder.Append(index);
           builder.Append(@"""}}");

           builder.Append("n");

           builder.Append(JsonConvert.SerializeObject(item));
           builder.Append("n");
       } 

       return builder.ToString();
}

ads

اترك رد

لن يتم نشر عنوان بريدك الإلكتروني.