البحث في الموقع
المحتوى عن 'syslog'.
-
يتناول هذا المقال كيفية تثبيت الإصدار 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.