يتناول هذا المقال كيفية تثبيت الإصدار 1.3 من برنامج Graylog (يُشار إليه أحيانا بـ Graylog2) وإعداده لتجميع سجلات نظام التشغيل Syslog في موضِع مركزي. Graylog هو أداة فعّالة لإدارة السجلات وتحليلها تُستخدم في حالات كثيرة من مراقبة Monitoring الدخول عبر SSH والأنشطة غير المعتادة إلى تنقيح Debugging التطبيقات. تعتمد الأداة على Elasticsearch، جافا وقاعدة بيانات MongoDB.
يمكن استخدام Graylog لتجميع أنواع مختلفة من السجلات ومراقبتها، إلا أننا سنقتصر في هذا الدرس على تجميع سجلات النظام.
مكونات Graylog
توجد أربعة عناصر أساسية في Graylog:
- عُقد خادوم Graylog: تشتغل عاملا لاستقبال الرسائل ومعالجتها، كما أنها تتواصل مع بقية العناصر (غير عقد الخادوم). يعتمد أداء هذه العقد على قدرات معالج Processor الخادوم المضيف.
- عُقد Elasticsearch: تخزّن الرسائل والسجلات. يعتمد أداءها على الذاكرة الحية RAM وقدرة الأقراص على الإدخال/الإخراج.
- قاعدة بيانات MongoDB: تخزّن البيانات الوصفية Metadata؛ لا تُستحث كثيرا.
- واجهة المستخدم (صفحات ويب).
إعداد Graylog القاعدي
سننفذ في هذا الدرس إعدادا قاعديا لـGraylog توجد جميع العناصر فيه على نفس الخادوم. يُستحسن في بيئات الإنتاج الكبيرة أن يُضبط كل مكوِّن على خادوم منفصل لتحسين الأداء.
المتطلبات
ستحتاج من أجل تنفيذ الخطوات المشروحة في هذا الدرس إلى حساب إداري على خادوم أوبنتو 14.04 ذي ذاكرة عشوائية لا تقلّ عن 2GB. طريقة إعداد الحساب مشروحة في درس الإعداد الابتدائي لخادوم أوبنتو 14.04. إن كانت ذاكرة الوصول العشوائي لديك أقل من 2GB فلن تستطيع تشغيل جميع مكونات Graylog.
نبدأ بتثبيت MongoDB.
تثبيت MongoDB
تثبيت MongoDB سهل وسريع. نفّذ الأمر التالي لاستيراد مفتاح GPG الخاص بـ MongoDB إلى apt
:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
ثم أنشئ قائمة مصادر MongoDB بتنفيذ الأمر:
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
حدّث أرشيف الحزم:
sudo apt-get update
ثم نثبّت الإصدار المستقر Stable من MongoDB بتنفيذ الأمر:
sudo apt-get install mongodb-org
يجب أن تكون قاعدة بيانات MongoDB الآن جاهزة وتعمل على الخادوم. يمكنك التأكد من ذلك بتنفيذ الأمر:
sudo service mongod status
لتشغيل قاعدة البيانات (إن لم تشتغل لسبب ما):
sudo service mongod start
تثبيت Java
يحتاج Elasticsearch لجافا حتى يعمل، لذا سنثبته. ينصح Elasticsearch بتثبيت Oracle Java 8، وهو ما سنفعله (على الرغم من ذلك، إلا أن Elasticsearch ينبغي أن يعمل دون مشاكل مع OpenJDK).
أضف مستودع PPA الخاص بـ ـOracle Java إلى apt
:
sudo add-apt-repository ppa:webupd8team/java
ثم حدّث قاعدة بيانات الحزم:
sudo apt-get update
نفذ أمر تثبيت Oracle Java 8 التالي (واقبل شروط الرخصة في النافذة المنبثقة):
sudo apt-get install oracle-java8-installer
بعد اكتمال تثبيت جافا يأتي دور Elasticsearch.
تثبيت Elasticsearch
نحتاج لإصدار من Elasticsearch سابق للإصدار 2.0 ليعمل معه Graylog، لذا سنثبّت الإصدار 1.7 من Elasticsearch.
نستورد مفتاح GPG العمومي الخاص بـ ـElasticsearch إلى apt
كما يلي:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
قد تحتاج لإدخال كلمة السر الخاصة بالمستخدم الجذر.
ثم أنشئ قائمة مورد لـ Elasticsearch:
echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.x.list
نحدّث بيانات الحزم:
sudo apt-get update
ثم نثبت Elasticsearch:
sudo apt-get -y install elasticsearch
الخطوة الموالية هي إعداد Elasticsearch؛ افتح ملف التعديل:
sudo vi /etc/elasticsearch/elasticsearch.yml
ابحث عن فقرة cluster.name
ثم انزع عنها علامة التعليق #
وأبدل القيمة المبدئية بـ graylog-development
(الاسم الذي اخترناه للعنقود Cluster. لا يمكن أن يكون لعنقودين في نفس الشبكة نفس الاسم):
cluster.name: graylog-development
يستعمل Elasticsearch المنفذ Port رقم 9200
. سنمنع المتصلين من خارج الشبكة المحلية من الوصول إليه. اعثر على السطر الذي يحدّد المضيف على الشبكة network.host
، أزل علامة التعليق وضع مكانها localhost
(المضيف المحلي) كالتالي:
network.host: localhost
احفظ ملف elasticsearch.yml
ثم أغلقه. أعد تشغيل Elasticsearch:
sudo service elasticsearch restart
نفذ الأمر التالي لتشغيل Elasticsearch مع بدء تشغيل النظام:
sudo update-rc.d elasticsearch defaults 95 10
انتظر بضع لحظات ثم نفذ الأمر التالي للتأكد من أن Elasticsearch يعمل كما يرام:
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
تظهر نتيجة الأمر كالتالي:
{
"cluster_name" : "graylog-development",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0
}
تثبيت خادوم Graylog
يمكننا الآن بعد تجهيز المتطلبات تثبيتُ برنامج Graylog. نبدأ بتثبيت خادوم Graylog.
ننزل حزمة مستودع Graylog في المجلد الشخصي للمستخدم:
cd ~
wget https://packages.graylog2.org/repo/packages/graylog-1.3-repository-ubuntu14.04_latest.deb
ونثبتها:
sudo dpkg -i graylog-1.3-repository-ubuntu14.04_latest.deb
تضيف هذه الحزمة عند تثبيتها مستودع Graylog إلى قائمة المستودعات لدى النظام.
قبل تثبيت حزمة خادوم Graylog نتأكد من أن apt-transport-https
التي تمكّن من تنزيل حزم apt
باتصال آمن مثبتة:
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install graylog-server
سنستخدم حزمة pwgen
لتوليد مفاتيح سرية لذا سنثبتها:
sudo apt-get install pwgen
سنحتاج لضبط كلمة سر مدير خادوم Graylog ومفتاحه الخاص. يُضبط المفتاح الخاص في ملف server.conf
بتحديد قيمة معطى password_secret
. يمكن توليد مفتاح عشوائي وإدراجه في إعداد Graylog عبر الأمرين التاليين:
SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog/server/server.conf
تُعيَّن كلمة سر المدير بإنشاء مجموع تحقق Checksum لكلمة السر المرغوبة ثم تحديد قيمة المعطى root_password_sha2
في ملف إعداد Graylog بمجموع التحقق المُنشأ.
أنشئ مجموع التحقق الخاص بكلمة السر بتنفيذ الأمر أدناه مع إبدال password
بكلمة السر التي ترغب فيها. يدرج أمر sed
في السطر الثاني مجموع التحقق في ملف إعداد Graylog (يمكنك تنفيذ أمر shasum
ثم إدراج النتيجة يدويا في الملف server.conf
):
PASSWORD=$(echo -n password | shasum -a 256 | awk '{print $1}')
sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf
نفتح ملف server.conf
لتحريره:
sudo vi /etc/graylog/server/server.conf
ستجد أن قيمتي المعطيين password_secret
وroot_password_sha2
عبارة عن سلسلة محارف Strings عشوائية هي ناتج الأوامر أعلاه.
نعيد تعيين قيمة المعطى rest_transport_uri
التي هي وسيلة اتصال واجهة ويب Graylog بخادومه. بما أننا نثبت جميع العناصر على نفس الخادوم فسنحدّد القيمة 127.0.0.1
أو localhost
. اعثُر على المعطى rest_transport_uri
وعدّل قيمته لتصبح على النحو التالي (مع إزالة علامة التعليق أمام السطر #
):
rest_transport_uri = http://127.0.0.1:12900/
نغيّر قيمة معطى elasticsearch_shards
إلى 1
نظرا لأن لدينا عامل Elasticsearch وحيدا وهو الخادوم:
elasticsearch_shards = 1
ثم نغير قيمة المعطى elasticsearch_cluster_name
إلى graylog-development
(نفس الاسم الذي حددناه أعلاه لمعطى cluster.name
):
elasticsearch_cluster_name = graylog-development
نزيل علامة التعليق من أمام السطرين التاليين لاستخدام اتصال من نوع unicast
بدلا من multicast
:
elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300
احفظ الملف ثم أغلقه. خادوم Graylog الآن مضبوط وجاهز للعمل. نشغّل خادوم Graylog بتنفيذ الأمر التالي:
sudo java -jar /usr/share/graylog-server/graylog.jar server
تظهر في مخرجات الأمر العبارتان التاليتان دلالة على نجاح تشغيل خادوم Graylog:
Started REST API at <http://127.0.0.1:12900/> Graylog server up and running
الخطوة الموالية هي تثبيت واجهة ويب Graylog.
تثبيت واجهة ويب Graylog
ننفذ أمر التثبيت التالي للحصول على واجهة ويب Graylog:
sudo apt-get install graylog-web
الخطوة التالية هي إعداد المفتاح السري لواجهة الويب الذي يمثله معطى application.secret
في ملف الإعداد web.conf
. نطبق نفس الطريقة السابقة لتوليد مفتاح سري وإدراجه:
SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /etc/graylog/web/web.conf
افتح ملف إعداد واجهة الويب لتحريره:
sudo vi /etc/graylog/web/web.conf
نحتاج لتحديث ملف الإعداد لتحديد قيمة المعطى graylog2-server.uris
التي هي قائمة من مسارات URI خاصة بخواديم Graylog. بما أن لدينا عقدة خادوم واحدة فيجب أن تطابق قيمة graylog2-server.uris
قيمةَ المعطى rest_listen_uri
في إعداد الخادوم (أي http://127.0.0.1:12900/
):
graylog2-server.uris="http://127.0.0.1:12900/"
احفظ الملف ثم أغلقه. يجب نسخ ملف الإعداد إلى المسار /usr/share/graylog-web/conf/web.conf
كالتالي:
sudo cp /etc/graylog/web/web.conf /usr/share/graylog-web/conf/web.conf
ننفذ الأمر التالي لتشغيل واجهة ويب Graylog:
sudo /usr/share/graylog-web/bin/graylog-web-interface
نستطيع الآن استخدام واجهة الويب، وهو ما سنفعله في الفقرات التالية.
إعداد Graylog لاستقبال رسائل النظام Syslog
أدخل عنوان الويب التالي إلى شريط العناوين في متصفحك المفضل:
http://graylog_public_IP:9000/
يمثّل graylog_public_IP
عنوان IP العمومي لخادومك.
ستظهر لديك واجهة تطلب اسم المستخدم وكلمة السر. أدخل admin
وكلمة السر التي اخترتها أثناء إعداد خادوم Graylog.
ثم بعد الدخول الواجهة التالية:
يوجد في أعلى الواجهة عدد يمثل إشعارا تظهر بعد النقر عليه رسالة تقول إن لديك عقدة نشطة لا تصلها أية مُدخَلات Inputs. فلنضف مدخلا لاستقبال رسائل سجل النظام عبر UDP.
إنشاء مدخل لسجلات النظام عبر ميثاق UDP
انقر على القائمة المنسدلة System (النظام) الموجودة في شريط القوائم العلوي واختر Inputs (مُدخلات) لإضافة مُدخَل يستقبل رسائل سجل النظام. اختر Syslog UDP من القائمة المنسدلة في الصفحة الجديدة ثم انقر على زر Launch new input (ابدأ المُدخَل الجديد).
ستظهر نافذة منبثقة جديدة. أدخل البيانات التالية (أبدِل graylog_private_IP
بعنوان IP الداخلي لخادومك):
Title: syslog
Port: 8514
Bind address: graylog_private_IP
ثم انقر على زرّ Launch أسفل النافذة.
ستجد أن مُدخلا جديدا باسم syslog يظهر في فقرة Local inputs؛ تظهر أولا لصيقة starting (في طور التشغيل) ثم بعد قليل تتحول إلى اللون الأخضر وعبارة running (يعمل)، قد تحتاج لإعادة تحميل الصفحة لتحديث الحالة.
جهزنا خادوم Graylog لاستقبال رسائل من سجل النظام، بقي لنا ضبط الخادوم لإرسال سجلات النظام إلى Graylog.
إعداد الخواديم لإرسال سجلات النظام إلى Graylog
ينبغي تطبيق الخطوات التالية على الخواديم التي نريد مراقبتها.
نبدأ بإنشاء ملف إعداد rsyslog
في المجلد etc/rsyslog/
، سنسميه 90-graylog.conf
:
sudo vi /etc/rsyslog.d/90-graylog.conf
نضيف الأسطر التالية إلى الملف كي يبعث برسائل سجلات النظام إلى خادوم Graylog (أبدل graylog_private_IP
بعنوان IP المحلي لخادوم Graylog):
$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n" *.* @graylog_private_IP:8514;GRAYLOGRFC5424
احفظ الملف ثم أغلقه. سيُحمَّل هذا الملف مع تحميل إعداد rsyslog
، تجب إعادة تحميل rsyslog
من أجل اعتماده:
sudo service rsyslog restart
نعود، بعد إكمال إعداد rsyslog
على جميع الخواديم التي نريد مراقبة سجلاتها إلى واجهة Graylog.
عرض مصادر Graylog
بالعودة إلى واجهة الويب، انقر قائمة Sources في الشريط العلوي. ستظهر أسفل الصفحة لائحة بجميع الخواديم التي أعددت عليها rsyslog
لإرسال السجلات إلى Graylog، مع عدد الرسائل الواردة منها في المدة المحددة ضمن القائمة المنسدلة (ساعة مبدئيا).
البحث في بيانات Graylog
توفر واجهة Graylog إمكانية البحث في بيانات السجلات. تختلف البيانات المتوصَّل إليها حسب نشاط الخادوم، لذا امنح Graylog دقائق لجمع البيانات خصوصا إذا كان النشاط على الخادوم ضعيفا. في الصورة التوضيحية أدناه مثال للبحث عن DNS
في البيانات التي جُمعت في آخر 15 دقيقة.
تظهر الرسائل في أسفل الصفحة، ويمكن استخدامها للبحث عن مشاكل في الإعدادات ومن ثم إصلاحها. يتيح Graylog إمكانية حصْر البحث في الرسائل القادمة على خادوم واحد فقط في حالة إعداد Graylog لتجميع البيانات من أكثر من مصدر. يمكن أيضا حصر البحث في نطاق زمني محدّد.
يفيد البحث قي بيانات Graylog كثيرا حيث يمكّنك مثلا من مراجعة سجلات خادوم أو خواديم بعد حدوث مشكل. تساعد السجلات المركزية في تشخيص الحوادث المترابطة، فأنت لا تحتاج لتسجيل الدخول إلى جميع الخواديم لعرض بيانات الأحداث.
خاتمة
لا تنحصر إمكانيات Graylog في تجميع بيانات سجل النظام بل يمكن استخدامه لمركزة سجلات مختلفة ومراقبة التطبيقات أو الأنظمة التي ترسلها. كما تمكن أيضا إعادة تهيئة السجلات المرسلة لاستخراج بيانات محدّدة منها. لا تتردد في استكشاف إمكانيات البرنامج. يُستحسن في بيئات العمل الكبيرة تثبيت عناصر Graylog وإعدادها على خوادم منفصلة لأداء أعلى.
ترجمة -وبتصرف- لمقال How To Install Graylog 1.x on Ubuntu 14.04 لصاحبه Mitchell Anicas.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.