
يشغّل عوامل تصفية مخصصة على Elasticsearch ويُطلق تنبيهات عند التطابق
بدأ Reactor كفرع (fork) من المشروع مفتوح المصدر ElastAlert. يجب على القائم على صيانة هذا المشروع أن يتابع عن كثب التغييرات في ElastAlert (باستثناء أدوات التنبيه الإضافية الخاصة به) وأن يضمن تطبيق أي إصلاحات ذات صلة بالأخطاء ونقل أي ميزات مفيدة إليه.
Reactor هو محرك تنبيه يأخذ مجموعة من القواعد مع عوامل تصفية مخصصة ويطلق تنبيهات عند التطابق. يقوم Reactor تلقائيًا بتحديث التنبيهات المكبوتة بمعلومات التنبيه المتكرر.
| تاريخ الوصول | Commit | ملاحظات |
|---|---|---|
| 2019-10-16 | 325f1dfe7a45f3ca2a2cc00127ab71fcd4f9cead | تم الرجوع إلى ما قبل إنشاء Reactor لأول مرة. |
| 2020-01-09 | ec5d03b95708ea0aa3d29c065f9794fdd95a82a1 | نحن لا نستخدم التغطية. |
يدعم Reactor حاليًا ElasticSearch 5.x.x و6.x.x و7.x.x. عندما تتوفر إصدارات جديدة من elasticsearch، سيتم تحديث Reactor لدعمها. لا توجد نية لإضافة دعم للإصدارات الأقدم من ElasticSearch. حاليًا، لا يوجد موعد محدد لإزالة دعم الإصدارات الأقدم من ElasticSearch. إذا أزالت مكتبة بايثون الخاصة بـ ElasticSearch الدعم، فمن المرجح أن نحذو حذوها.
وفقًا لإرشادات مكتبة بايثون الخاصة بـ ElasticSearch، يُنصح بتثبيت إصدار المكتبة الذي يتطابق مع نفس الإصدار الرئيسي للعنقود (cluster).
بالنسبة إلى Elasticsearch 7.0 والإصدارات الأحدث، استخدم الإصدار الرئيسي 7 (elasticsearch<8.0.0,>=7.0.0).
بالنسبة إلى Elasticsearch 6.0 والإصدارات الأحدث، استخدم الإصدار الرئيسي 6 (elasticsearch<7.0.0,>=6.0.0).
بالنسبة إلى Elasticsearch 5.0 والإصدارات الأحدث، استخدم الإصدار الرئيسي 5 (elasticsearch<6.0.0,>=5.0.0).
يُرجى ملاحظة وجود خطأ معروف تم تقديمه في الإصدار 6.4.0
من مكتبة ElasticSearch وتم إصلاحه في 7.0.4 ولكن ليس في الإصدار الرئيسي 6. يضع هذا الخطأ scroll_id في
معامل الاستعلام، مما قد يؤدي إلى إرجاع Elasticsearch لرمز حالة 400 لمعرفات التمرير الصالحة.
يمكنك تشغيل مثيل من elasticsearch داخل docker للتطوير المحلي باستخدام الأمر التالي:
$ docker run -d -p 9200:9200/tcp --name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:<version>
والتكوين التالي في config.yaml:
writeback_index: reactor
alert_alias: reactor_alerts
elasticsearch: &elasticsearch
host: localhost
port: 9200
# Global settings to be applied to every run
rule:
elasticsearch: *elasticsearch
يوفر هذا المشروع خطافات git لمنع أخطاء المستخدم. يرجى تشغيل الأوامر التالية:
$ cp .git-hooks-pre-push .git/hooks/pre-push
يغطي Reactor بنوعين من الاختبارات: الوحدة والتكامل. اختبارات الوحدة للتأكد من أن الدوال الفردية وتدفقات المنطق تعمل بشكل صحيح؛ واختبارات التكامل للتأكد من أن النظام بأكمله يعمل بتناغم.
اختبارات الوحدة مكتوبة باستخدام PyTest. لتشغيل جميع الاختبارات، نفّذ الأمر التالي:
$ py.test
يتم تنفيذ اختبارات الوحدة في docker وتتطلب ملف .env في الدليل الجذر للمشروع.
تتطلب الاختبارات المحتويات التالية داخل ملف .env:
# The ElasticSearch version to be tested, reactor supports >= 5.x.x
ES_VERSION=6.3.2
# Basic configuration information so that reactor can query ElasticSearch
ES_HOST=elasticsearch
ES_USER=elastic
ES_PASSWORD=changeme
يحتوي ملف Docker Compose الخاص باختبارات التكامل test.docker-compose.yml على 3 متغيرات بيئة
مطلوبة للإصدار >= v7.x.x وستؤدي إلى كسر الإصدارات الأقدم:
node.name=elasticsearch
discovery.seed_hosts=elasticsearch
cluster.initial_master_nodes=elasticsearch
لتنفيذ اختبارات التكامل، نفّذ الأمر التالي:
$ docker-compose -f docker-compose-test.yml up --abort-on-container-exit --build reactor elasticsearch
مجموعة الأوامر التالية (التي يتم تنفيذها في ./certs/) ستنشئ مجموعة من شهادة CA وشهادة جهاز لتشغيل العنقود التجريبي على localhost:
# Only do once: generate the root CA key:
$ openssl genrsa -out transport-ca.key 4096
# Generate the root CA certificate:
## Country Name (2 letter code) []:GB
## State or Province Name (full name) []:.
## Locality Name (eg, city) []:.
## Organization Name (eg, company) []:.
## Organizational Unit Name (eg, section) []:.
## Common Name (eg, fully qualified host name) []:PyRaftLog
## Email Address []:.
$ openssl req -x509 -new -nodes -key transport-ca.key -sha256 -days 1024 -out transport-ca.pem
# Generate device certificates
# Only do once: generate device key:
$ openssl genrsa -out transport-consensus.key 4096
# Generate device certificate signing request:
## Country Name (2 letter code) []:GB
## State or Province Name (full name) []:.
## Locality Name (eg, city) []:.
## Organization Name (eg, company) []:.
## Organizational Unit Name (eg, section) []:.
## Common Name (eg, fully qualified host name) []:localhost
## Email Address []:.
$ openssl req -new -key transport-consensus.key -out transport-consensus.csr
# Generate a signed device certificate:
$ openssl x509 -req -in transport-consensus.csr -CA transport-ca.pem -CAkey transport-ca.key -CAcreateserial -out transport-consensus.crt -days 500 -sha256
لبناء التوثيق:
$ pip install -r requirements-docs.txt
$ cd docs
$ sphinx-build -b html -d build/doctrees -W source build/html
pip install --upgrade setuptools wheelpip install --upgrade twinepython3 setup.py sdist bdist_wheeltwine check dist/*twine upload --skip-existing dist/* --verbose