أداة تغليف البيانات الخارجية StableNet® StableNet®

المتطلبات الأساسية

يلزم وجود قاعدة بيانات PostgreSQL مع مستخدم مسموح له بتعديل كائنات قاعدة البيانات. يجب تثبيت أداة تجميع البيانات الخارجية على نفس مثيل الخادم الذي يعمل عليه خادم قاعدة البيانات.

مثال: إنشاء قاعدة بيانات إنفوسيم مملوكة من قبل الدور إنفوسيم:

export DB_NAME=infosim
mkdir -p /var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/tab_space/${DB_NAME} \
 /var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/idx_space/${DB_NAME} && \
 chown -R postgres:postgres /var/lib/pgsql/custom/user_tblspc
psql -Upostgres -c "CREATE ROLE $DB_NAME WITH LOGIN PASSWORD '$DB_NAME';"
psql -Upostgres -c "CREATE TABLESPACE ${DB_NAME}_tab OWNER $DB_NAME \
LOCATION '/var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/tab_space/$DB_NAME';"
psql -Upostgres -c "CREATE TABLESPACE ${DB_NAME}_idx OWNER $DB_NAME \
LOCATION '/var/lib/pgsql/custom/user_tblspc/${DB_NAME}_tblspc/idx_space/$DB_NAME';"
psql -Upostgres -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_NAME TEMPLATE template0 \
TABLESPACE ${DB_NAME}_tab ENCODING 'UTF8' LC_COLLATE 'de_CH.UTF-8' LC_CTYPE 'de_CH.UTF-8';"

التثبيت القياسي

تثبيت RPM من SKOOR Repo

dnf install eranger-stablenet-fdw

التكوين

ملف التكوين

/etc/stablenet-fdw/stablenet-fdw.conf

[global]

accept_insecure_certificate = false
                                        # Accept insecure certificates
                                        # (self-signed, expired, etc.)
                                        # when connecting to the web service
default_user = 
                                        # Default user name for the web service.
                                        # This is used in case no authorization 
                                        # is provided by the SQL client.
default_password =
                                        # Default password for the web service.
                                        # This is used in case no authorization 
                                        # is provided by the SQL client.
skoor_auth_url = http://localhost:8094
                                        # URL of the SKOOR web service
                                        # (default: http://localhost:8094)
                                        # This is used to get the StableNet®
                                        # auth tokens.

[webservice]  

url =
                                        # URL of StableNet® the web service

#[webservice_<server_id>]               # Optional, if multiple StableNet® servers 
                                        # are used. Replace <server_id> with a unique
                                        # identifier for the StableNet® server.
                                        # Only alphanumeric lower case characters are allowed.
                                        # Please note, that every webservice section 
                                        # must have a unique identifier if multiple 
                                        # StableNet® servers are used.

#server_name = 
                                        # Unique name of the connected StableNet®
                                        # server. This should be a human readable
                                        # name, not a technical identifier.
                                        # Defaults to server_id if omitted.
#url =
                                        # URL of the StableNet® the web service

يمكن أيضًا توفير الخيارات عن طريق متغيرات البيئة باستخدام البادئة STABLENET_FDW_WEBSERVICE_ واسم الخيار بالأحرف الكبيرة (على سبيل المثال STABLENET_FDW_WEBSERVICE_URL). بالنسبة لإعدادات global ، يجب حذف GLOBAL من مفتاح ENV (على سبيل المثال STABLENET_FDW_DEFAULT_USER ).

url هو URl الأساسي لخدمة الويب StableNet® API. وعادةً ما يكون على الشكل https://<host>:5443/api/1.

يمكن تعريف مثيلات StableNet® متعددة باستخدام أقسام متعددة webservice مع لاحقات server_id فريدة من نوعها. يتم استخدام server_id كمعرف داخلي للحصول على سلسلة التفويض المطابقة من SKOOR Auth على سبيل المثال. يجب تعيين server_name المناسب الذي يستخدم لتحديد الخادم في الجداول الخارجية والمجمعة. يمكن أيضًا تكوين ذلك باستخدام متغيرات البيئة (على سبيل المثال STABLENET_FDW_WEBSERVICE_URL_TEST ، STABLENET_FDW_WEBSERVICE_SERVER_NAME_TEST).

بعد تغيير التهيئة، يجب إعادة تشغيل خادم PostgreSQL.

systemctl restart postgresql-13

تهيئة الجداول الخارجية

تهيئة الجداول الخارجية التي يحتاجها مجمع البيانات الخارجية.

/opt/stablenet-fdw/init-foreign-tables.sh -h <host> -p <port> -d <database> -U <user> -o <owner>

على سبيل المثال

/opt/stablenet-fdw/init-foreign-tables.sh -U postgres -h localhost -p 5432 -d infosim -o infosim

يجب تنفيذ هذا الأمر بعد كل تحديث لـ eranger-stablenet-fdw للحصول على تعريفات جداول جديدة.

اختبار الاتصال

psql -h localhost -p 5432 -U infosim -d infosim -c "SELECT * from stablenet.stablenet_info;"

يجب أن يُرجع هذا الأمر عدد الأجهزة في مثيل StableNet® المتصل.

تجميع البيانات

تهيئة البيانات المجمعة

تهيئة المقياس الزمني المفرط اللازم للبيانات المترية المجمعة.

/opt/stablenet-fdw/init-aggregated-data.sh -h <host> -p <port> -d <database> -U <user> -o <owner> \
-i <interval> [-m <metric_keys>] [-f <tag_filter>] [-r <retention>]

-m قائمة مفصولة بفواصل بمفاتيح القياس للتجميع المسبق. يمكن حذفها لتحميل البيانات مسبقًا لجميع المقاييس، ولكن قد يستغرق ذلك وقتًا طويلاً جدًا. على سبيل المثال "SNMP_1,SNMP_2,SNMP_3"

-i الفاصل الزمني للتحميل المسبق للبيانات على سبيل المثال 6 months ، 1 week, 5 days

-f عامل تصفية العلامات لتصفية القياسات على سبيل المثال "'Device Domain' eq 'Test'"

-r سياسة الاحتفاظ بالبيانات، على سبيل المثال "1 year"

تهيئة تحديث البيانات المجمعة

إنشاء مهمة TimescaleDB لتحديث البيانات المجمعة بشكل دوري لمقاييس معينة

/opt/stablenet-fdw/init-aggregated-data-refresher.sh -h <host> -p <port> -d <database> -U <user> -o <owner> \
[-m <metric_keys>][-f <tag_filter>]

-m قائمة مفصولة بفواصل لمفاتيح المقاييس المراد تجميعها. يمكن حذفها لتحديث البيانات لجميع المقاييس. على سبيل المثال "SNMP_1,SNMP_2,SNMP_3"

-f عامل تصفية العلامات لتصفية القياسات على سبيل المثال "'Device Domain' eq 'Test'"

إضافة/إزالة المقاييس

تثبيت Docker Compose

التكوين

قم بإضافة متغيرات البيئة التالية إلى قسم بيئة خدمات eranger-postgresql في SKOOR docker-compose.yaml وقم بتعيين المتغير STABLENET_FDW_WEBSERVICE_URL إلى عنوان URL صالح لمضيف StableNet:

      - STABLENET_FDW_WEBSERVICE_URL=https://<StableNet host>:5443/api/1
      - STABLENET_FDW_ACCEPT_INSECURE_CERTIFICATE=false
      - STABLENET_FDW_DEFAULT_USER=myuser
      - STABLENET_FDW_DEFAULT_PASSWORD=mypass
      - STABLENET_FDW_SKOOR_AUTH_URL=http://eranger-auth-${INSTANCE_NAME}:8094

تكوين حاوية خدمة الويب

يجب أن تكون خدمة الويب قادرة على التواصل مع مكون eranger-auth لمصادقة الطلبات إلى StableNet. في قسم خدمة eranger-webservice، أضف متغير البيئة التالي:

      - SKOOR_WEBSERVICE_auth_service_url=http://eranger-auth-${INSTANCE_NAME}:8094

تهيئة الجداول الخارجية

في الحاوية قيد التشغيل، قم بتشغيل البرنامج النصي init-database.sh لإسقاط مخطط stablenet وإعادة إنشائه (تنبيه: يتم إسقاط جميع الكائنات في المخطط!).

مثال مع قاعدة بيانات العميل المسماة infosim مع المستخدم infosim (اضبط المتغير PGSQL_CONTAINER على اسم حاوية eranger-postgresql):

export PGSQL_CONTAINER=eranger-postgresql-<instance>
docker exec $PGSQL_CONTAINER /opt/stablenet-fdw/init-foreign-tables.sh -h localhost \
-p 5432 -d infosim -U postgres -o infosim

قم بتشغيل استعلام بيانات في لوحة التحكم للتحقق من مجمع البيانات الخارجية:

SELECT * from stablenet.stablenet_info

تجميع البيانات

تهيئة البيانات المجمعة

يقوم بتهيئة المقياس الزمني المفرط اللازم للبيانات المترية المجمعة.

docker exec $PGSQL_CONTAINER /opt/stablenet-fdw/init-aggregated-data.sh -h localhost \
-p 5432 -d infosim -U postgres -o infosim -i <interval> [-m <metric_keys>] [-f <tag_filter>] [-r <retention>]

-m قائمة مفصولة بفواصل بمفاتيح القياس للتجميع المسبق. يمكن حذفها للتحميل المسبق للبيانات لجميع المقاييس، ولكن قد يستغرق ذلك وقتًا طويلاً جدًا.

-i الفاصل الزمني للتحميل المسبق للبيانات. على سبيل المثال 6 months ، 1 week, 5 days

-f عامل تصفية العلامات لتصفية القياسات على سبيل المثال "'Device Domain' eq 'Test'"

-r سياسة الاحتفاظ بالبيانات، على سبيل المثال "1 year"

تهيئة تحديث البيانات المجمعة

إنشاء مهمة TimescaleDB لتحديث البيانات المجمعة بشكل دوري لمقاييس معينة

docker exec $PGSQL_CONTAINER /opt/stablenet-fdw/init-aggregated-data-refresher.sh -h localhost \
-p 5432 -d infosim -U postgres -o infosim [-m <metric_keys>] [-f <tag_filter>]

-m قائمة مفصولة بفواصل لمفاتيح المقاييس المراد تجميعها. يمكن حذفها لتحديث البيانات لجميع المقاييس. على سبيل المثال "SNMP_1,SNMP_2,SNMP_3"

-f عامل تصفية العلامات لتصفية القياسات على سبيل المثال "'Device Domain' eq 'Test'"

الدمج في SKOOR

يمكن دمج StabeleNet FDW عن طريق إنشاء مصدر بيانات جديد في قسم البيانات والكائنات.

image-20240313-115126.png

بعد الحفظ، يجب أن يتحول المصباح الضوئي في التنقل إلى اللون الأخضر.

image-20240313-120727.png

يمكن فحص الجداول الخارجية في علامة تبويب البيانات .

image-20240313-121026.png

بينما يمكن معاينة بعض الجداول الخارجية على الفور (على سبيل المثال stablenet_taggable_device)، يحتاج البعض الآخر إلى بعض المؤهلات الإلزامية ولا يمكن معاينتها. انظر الجدول أدناه لمعرفة المؤهلات الإلزامية.

الجداول الخارجية

الاسم

الحقول

المؤهلات

stablenet_info

server_name TEXT
name TEXT
version TEXT
technical_version TEXT

stablenet_taggable

server_name TEXT
domain TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

domain TEXT (إلزامية)
id BIGINT
tag_filter TEXT

stablenet_taggable_device

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_interface

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_job

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_link

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_service

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_taggable_agent

server_name TEXT
id BIGINT
name TEXT
display_name TEXT
state TEXT
attribute_tags JSONB
custom_tags JSONB
tag_filter TEXT

id BIGINT
tag_filter TEXT

stablenet_tag_category

server_name TEXT
domain TEXT
id BIGINT
name TEXT
description TEXT

domain TEXT (إلزامية)
id BIGINT

stablenet_measurement

server_name TEXT
id BIGINT
name TEXT
description TEXT
tags JSONB
dest_device_id BIGINT
dest_interface_id BIGINT
agent_id BIGINT
start_time TIMESTAMPTZ
end_time TIMESTAMPTZ
state TEXT
type TEXT
template_name TEXT
permanent BOOL
payload JSONB
active BOOL
tag_filter TEXT

tag_filter TEXT
dest_device_id BIGINT

stablenet_measurement_metric

server_name TEXT
measurement_id BIGINT
data_id BIGINT
description TEXT
expected_interval INT
key TEXT
name TEXT
only_average BOOL
unit TEXT

measurement_id BIGINT

stablenet_measurement_data

server_name TEXT
measurement_id BIGINT
metric_key TEXT
metric_name TEXT
"start" TIMESTAMPTZ
"end" TIMESTAMPTZ
bucket_size INT (بالثواني)
"timestamp" TIMESTAMPTZ
min double precision
max double precision
avg double precision
tag_filter TEXT

measurement_id BIGINT
metric_key TEXT
"start" TIMESTAMPTZ (إلزامي)
"end" TIMESTAMPTZ (إلزامي)
bucket_size INT (إلزامي)
tag_filter TEXT

على الرغم من أن measurement_id و metric_key اختياريان، إلا أنه لا يوصى بتنفيذ الاستعلامات بدونهما. يؤدي القيام بذلك إلى قراءة بيانات القياس لجميع القياسات وجميع المقاييس التي قد تستغرق وقتًا طويلاً لقراءتها وتضع بعض الأحمال الثقيلة على خادم StableNet. يُنصح به فقط للنطاقات الزمنية القصيرة جدًا < 1 ساعة. إذا كانت هناك حاجة إلى قياسات ومقاييس متعددة، فيجب استخدام الجدول stablenet_measurement_data_aggregated.

بيانات القياس المجمعة

مجمعة حسب الساعة، ويتم تحديثها تلقائيًا كل ساعة. يمكن استخدامه لإجراء استعلامات تحليلية على نطاق واسع من القياسات وعلى نطاقات زمنية كبيرة.

هو في الأساس مقياس زمني مفرط(https://docs.timescale.com/ ). حجم القطع هو 7 أيام، ويتم ضغط القطع بعد 7 أيام.

الاسم

الحقول

stablenet_measurement_data_aggregated

server_name TEXT
measurement_id BIGINT
metric_key TEXT
metric_name TEXT
"timestamp" TIMESTAMPTZ NOT NULL
min double precision
max double precision
avg double precision

stablenet_measurement_data_aggregated يحتوي فقط على بيانات مفاتيح القياس المكوّنة.