كيفية تحليل إحصاءات قاعدة بيانات Redis المُدارة باستخدام Elastic Stack على Ubuntu 18.04

اختار المؤلف صندوق البرمجيات الحرة والمفتوحة المصدر لتلقي تبرع كجزء من برنامج كتابة من أجل التبرعات.

المقدمة

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

الفائدة من استخدام مجموعة الـ (ELK stack) لمراقبة قاعدة البيانات التي تديرها هي دعمها الممتاز للبحث والقدرة على استيعاب البيانات الجديدة بسرعة كبيرة. فهي لا تبرع في تحديث البيانات، ولكن هذا التضحية مقبولة لأغراض المراقبة والتسجيل، حيث نادرًا ما يتم تغيير البيانات السابقة. تقدم Elasticsearch وسيلة قوية للاستعلام عن البيانات، التي يمكنك استخدامها من خلال Kibana لفهم أفضل لكيفية تطور قاعدة البيانات عبر فترات زمنية مختلفة. سيتيح لك ذلك ترتيب حمل قاعدة البيانات مع الأحداث الحقيقية لكسب رؤية في كيفية استخدام قاعدة البيانات.

في هذا البرنامج التعليمي، ستقوم بتوريد مقاييس قاعدة البيانات، التي تم إنشاؤها بواسطة أمر Redis INFO، إلى Elasticsearch عبر Logstash. يتضمن هذا تكوين Logstash لتشغيل الأمر بانتظام، تحليل مخرجاته، وإرسالها إلى Elasticsearch لفهرسة على الفور بعد ذلك. يمكن للبيانات المستوردة أن تُحلل وتُرسم بعد ذلك في Kibana. بحلول نهاية البرنامج التعليمي، ستمتلك نظامًا آليًا يجلب إحصائيات Redis للتحليل لاحقًا.

المتطلبات المسبقة

الخطوة 1 — تثبيت وتكوين Logstash

في هذا القسم، ستقوم بتثبيت Logstash وتكوينه لاستخراج الإحصائيات من مجموعة بيانات Redis الخاصة بك، ثم تحليلها لإرسالها إلى Elasticsearch للفهرسة.

ابدأ بتثبيت Logstash باستخدام الأمر التالي:

  1. sudo apt install logstash -y

بمجرد تثبيت Logstash، قم بتمكين الخدمة للبدء تلقائيًا عند التمهيد:

  1. sudo systemctl enable logstash

قبل تكوين Logstash لاستخراج الإحصائيات، دعنا نرى كيف تبدو البيانات نفسها. للاتصال بقاعدة بيانات Redis الخاصة بك، انتقل إلى لوحة تحكم قاعدة البيانات المُدارة الخاصة بك، وفي لوحة البيانات تفاصيل الاتصال، حدد العلامات من القائمة المنسدلة:

سيتم عرض لك أمر مُعدّ مسبقًا لعميل Redli، الذي ستستخدمه للاتصال بقاعدة البيانات الخاصة بك. انقر فوق نسخ وقم بتشغيل الأمر التالي على خادمك، مستبدلاً redli_flags_command بالأمر الذي قمت بنسخه للتو:

  1. redli_flags_command info

نظرًا لأن الإخراج من هذا الأمر طويل، سنقوم بشرحه مقسمًا إلى أقسامه المختلفة.

في إخراج أمر Redis info، يتم وضع علامات على الأقسام بواسطة #، مما يدل على تعليق. تم تعبئة القيم في شكل key:value، مما يجعلها نسبيًا سهلة الفرز.

القسم Server يحتوي على معلومات تقنية حول بناء Redis، مثل إصداره والتزامن Git الذي يستند إليه، بينما يوفر القسم Clients عدد الاتصالات المفتوحة حاليًا.

Output
# Server redis_version:6.2.6 redis_git_sha1:4f4e829a redis_git_dirty:1 redis_build_id:5861572cb79aebf3 redis_mode:standalone os:Linux 5.11.12-300.fc34.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:11.2.1 process_id:79 process_supervised:systemd run_id:b8a0aa25d8f49a879112a04a817ac2acd92e0c75 tcp_port:25060 server_time_usec:1640878632737564 uptime_in_seconds:1679 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:13488680 executable:/usr/bin/redis-server config_file:/etc/redis.conf io_threads_active:0 # Clients connected_clients:4 cluster_connections:0 maxclients:10032 client_recent_max_input_buffer:24 client_recent_max_output_buffer:0 ...

Memory يؤكد كم من ذاكرة الوصول العشوائي (RAM) تم تخصيصها لـ Redis، بالإضافة إلى الحد الأقصى للذاكرة التي يمكن استخدامها على الإطلاق. إذا بدأت في نفاد الذاكرة، سيقوم بتحرير المفاتيح باستخدام الاستراتيجية التي حددتها في لوحة التحكم (الموضحة في حقل maxmemory_policy في هذا الإخراج).

Output
... # Memory used_memory:977696 used_memory_human:954.78K used_memory_rss:9977856 used_memory_rss_human:9.52M used_memory_peak:977696 used_memory_peak_human:954.78K used_memory_peak_perc:100.00% used_memory_overhead:871632 used_memory_startup:810128 used_memory_dataset:106064 used_memory_dataset_perc:63.30% allocator_allocated:947216 allocator_active:1273856 allocator_resident:3510272 total_system_memory:1017667584 total_system_memory_human:970.52M used_memory_lua:37888 used_memory_lua_human:37.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:455081984 maxmemory_human:434.00M maxmemory_policy:noeviction allocator_frag_ratio:1.34 allocator_frag_bytes:326640 allocator_rss_ratio:2.76 allocator_rss_bytes:2236416 rss_overhead_ratio:2.84 rss_overhead_bytes:6467584 mem_fragmentation_ratio:11.43 mem_fragmentation_bytes:9104832 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:61504 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0 ...

في القسم Persistence، يمكنك رؤية آخر مرة قام فيها Redis بحفظ المفاتيح التي يخزنها إلى القرص، وما إذا كانت ناجحة. يوفر القسم Stats أرقامًا متعلقة بالاتصالات العميل والداخلية في العقدة، وعدد المرات التي تم فيها العثور (أو عدم العثور) على المفتاح المطلوب، وما إلى ذلك.

Output
... # Persistence loading:0 current_cow_size:0 current_cow_size_age:0 current_fork_perc:0.00 current_save_keys_processed:0 current_save_keys_total:0 rdb_changes_since_last_save:0 rdb_bgsave_in_progress:0 rdb_last_save_time:1640876954 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:1 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:217088 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0 module_fork_in_progress:0 module_fork_last_cow_size:0 # Stats total_connections_received:202 total_commands_processed:2290 instantaneous_ops_per_sec:0 total_net_input_bytes:38034 total_net_output_bytes:1103968 instantaneous_input_kbps:0.01 instantaneous_output_kbps:0.00 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 expired_stale_perc:0.00 expired_time_cap_reached_count:0 expire_cycle_cpu_milliseconds:29 evicted_keys:0 keyspace_hits:0 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:452 total_forks:1 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0 tracking_total_keys:0 tracking_total_items:0 tracking_total_prefixes:0 unexpected_error_replies:0 total_error_replies:0 dump_payload_sanitizations:0 total_reads_processed:2489 total_writes_processed:2290 io_threaded_reads_processed:0 io_threaded_writes_processed:0 ...

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

ملاحظة: يستخدم مشروع Redis مصطلحات “master” و “slave” في توثيقه وفي أوامر مختلفة. عمومًا، تفضل DigitalOcean البدائل “primary” و “replica”. سيفضل هذا الدليل استخدام المصطلحات “primary” و “replica” عندما يكون ذلك ممكنًا، ولكن لاحظ أن هناك بعض الحالات التي لا يمكن تجنب فيها استخدام المصطلحات “master” و “slave”.

Output
... # Replication role:master connected_slaves:0 master_failover_state:no-failover master_replid:f727fad3691f2a8d8e593b087c468bbb83703af3 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:45088768 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 ...

تحت CPU، سترى كمية النظام (used_cpu_sys) والمستخدم (used_cpu_user) من طاقة وحدة المعالجة المركزية التي يستهلكها Redis في الوقت الحالي. تحتوي قسم Cluster على حقل فريد واحد فقط، cluster_enabled، الذي يُستخدم للإشارة إلى أن مجموعة Redis مُشغَّلة.

Output
... # CPU used_cpu_sys:1.617986 used_cpu_user:1.248422 used_cpu_sys_children:0.000000 used_cpu_user_children:0.001459 used_cpu_sys_main_thread:1.567638 used_cpu_user_main_thread:1.218768 # Modules # إحصائيات الأخطاء # مجموعة cluster_enabled:0 # Keyspace

سيتم تكليف Logstash بتشغيل الأمر info بانتظام على قاعدة بيانات Redis الخاصة بك (بطريقة مماثلة لما فعلته للتو)، وتحليل النتائج، وإرسالها إلى Elasticsearch. بعد ذلك، ستتمكن من الوصول إليها لاحقًا من Kibana.

سوف تقوم بتخزين تكوين فهرسة إحصائيات Redis في Elasticsearch في ملف يسمى redis.conf تحت الدليل /etc/logstash/conf.d، حيث يخزن Logstash ملفات التكوين. عند بدء التشغيل كخدمة، سيقوم بتشغيلها تلقائيًا في الخلفية.

قم بإنشاء redis.conf باستخدام محررك المفضل (على سبيل المثال، nano):

  1. sudo nano /etc/logstash/conf.d/redis.conf

أضف الأسطر التالية:

/etc/logstash/conf.d/redis.conf
input {
	exec {
		command => "redis_flags_command info"
		interval => 10
		type => "redis_info"
	}
}

filter {
	kv {
		value_split => ":"
		field_split => "\r\n"
		remove_field => [ "command", "message" ]
	}

	ruby {
		code =>
		"
		event.to_hash.keys.each { |k|
			if event.get(k).to_i.to_s == event.get(k) # is integer?
				event.set(k, event.get(k).to_i) # convert to integer
			end
			if event.get(k).to_f.to_s == event.get(k) # is float?
				event.set(k, event.get(k).to_f) # convert to float
			end
		}
		puts 'Ruby filter finished'
		"
	}
}

output {
    elasticsearch {
        hosts => "http://localhost:9200"
        index => "%{type}"
    }
}

تذكّر أن تقوم بتغيير redis_flags_command بالأمر المعروض في لوحة التحكم التي استخدمتها في الخطوة السابقة.

تحديد input، وهو مجموعة من الفلاتر التي ستعمل على البيانات المجمعة، ومخرجات ترسل البيانات المصفاة إلى Elasticsearch. يتكون المدخل من أمر exec، الذي سيقوم بتشغيل command على الخادم بشكل دوري، بعد فترة زمنية محددة interval (معبّرة بالثواني). كما يحدد معلمة type نوع المستند عند فهرسة في Elasticsearch. يمر كتلة exec بكائن يحتوي على حقلين، command وmessage سلسلة. يحتوي الحقل command على الأمر الذي تم تشغيله، وmessage سيحتوي على إخراجه.

هناك فلترين سيتم تشغيلهما تتابعيًا على البيانات المجمعة من المدخل. يرمز الفلتر kv إلى فلتر المفتاح والقيمة، وهو مدمج في Logstash. يُستخدم لتحليل البيانات في الشكل العام keyvalue_separatorvalue ويوفر معلمات لتحديد ما هي المفاصل التي يُعتبر القيم والحقول منفصلة عن بعضها. تنطبق المفاصل على السلاسل التي تفصل البيانات المنسقة في الشكل العام عن بعضها البعض. في حالة إخراج أمر Redis INFO، المفاصل (field_split) هو سطر جديد، والفاصلة بين القيم (value_split) هي :. سيتم تجاهل الأسطر التي لا تتبع النموذج المحدد، بما في ذلك التعليقات.

لتكوين مُصفّي kv، يُمرر : إلى مُعامل value_split، و \r\n (ممثلة لسطر جديد) إلى مُعامل field_split. كما تُطلب أيضًا منه إزالة حقول command و message من كائن البيانات الحالي عن طريق تمريرها إلى remove_field كعناصر في مصفوفة، لأنها تحتوي على بيانات غير مفيدة الآن.

مُصفّي kv يُمثّل القيمة التي يقوم بتحليلها على أنها نوع نصي (نص) بتصميمه. وهذا يثير مشكلة لأن Kibana لا يمكنها معالجة أنواع النصوص بسهولة، حتى لو كانت في الواقع أرقامًا. لحل هذا، ستستخدم كود Ruby مخصص لتحويل سلاسل الأرقام فقط إلى أرقام، إذا كان ذلك ممكنًا. المُصفّى الثاني هو كتلة ruby التي توفر مُعاملاً للكود يقبل سلسلة تحتوي على الكود الذي سيتم تشغيله.

event هو متغير يوفّره Logstash لكودك، ويحتوي على البيانات الحالية في خط أنابيب التصفية. كما تم الإشارة إليه سابقًا، تعمل التصفيات بشكل متتالي، مما يعني أن المُصفّي Ruby سيتلقى البيانات المحللة من مُصفّي kv. يقوم الكود Ruby نفسه بتحويل event إلى Hash ويتجوّل عبر المفاتيح، ثم يتحقق مما إذا كان بإمكان تمثيل القيمة المرتبطة بالمفتاح على أنها عدد صحيح أو على أنها عدد عشري (عدد يحتوي على أرقام عشرية). إذا كان الأمر كذلك، يتم استبدال القيمة النصية بالرقم المحلل. عندما ينتهي الحلقة، يقوم بطباعة رسالة (Ruby filter finished) للإبلاغ عن التقدم.

يُرسل الإخراج البيانات المعالجة إلى Elasticsearch للفهرسة. سيتم تخزين الوثيقة الناتجة في فهرس redis_info، المحدد في الإدخال وتمريره كمعلمة إلى كتلة الإخراج.

احفظ وأغلق الملف.

لقد قمت بتثبيت Logstash باستخدام apt وقمت بتكوينه لطلب الإحصائيات بانتظام من Redis، ومعالجتها، وإرسالها إلى مثيل Elasticsearch الخاص بك.

الخطوة ٢ — اختبار تكوين Logstash

الآن ستقوم ب اختبار التكوين عن طريق تشغيل Logstash للتحقق من أنه سيستحضر البيانات بشكل صحيح.

يدعم Logstash تشغيل تكوين معين عن طريق تمرير مسار ملفه إلى المعلمة -f. قم بتشغيل الأمر التالي لاختبار التكوين الجديد الخاص بك من الخطوة السابقة:

  1. sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf

قد يستغرق بعض الوقت لعرض الناتج، لكن سترى قريبًا شيئًا مشابهًا للتالي:

Output
Using bundled JDK: /usr/share/logstash/jdk OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release. WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console [INFO ] 2021-12-30 15:42:08.887 [main] runner - Starting Logstash {"logstash.version"=>"7.16.2", "jruby.version"=>"jruby 9.2.20.1 (2.5.8) 2021-11-30 2a2962fbd1 OpenJDK 64-Bit Server VM 11.0.13+8 on 11.0.13+8 +indy +jit [linux-x86_64]"} [INFO ] 2021-12-30 15:42:08.932 [main] settings - Creating directory {:setting=>"path.queue", :path=>"/usr/share/logstash/data/queue"} [INFO ] 2021-12-30 15:42:08.939 [main] settings - Creating directory {:setting=>"path.dead_letter_queue", :path=>"/usr/share/logstash/data/dead_letter_queue"} [WARN ] 2021-12-30 15:42:09.406 [LogStash::Runner] multilocal - Ignoring the 'pipelines.yml' file because modules or command line options are specified [INFO ] 2021-12-30 15:42:09.449 [LogStash::Runner] agent - No persistent UUID file found. Generating new UUID {:uuid=>"acc4c891-936b-4271-95de-7d41f4a41166", :path=>"/usr/share/logstash/data/uuid"} [INFO ] 2021-12-30 15:42:10.985 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false} [INFO ] 2021-12-30 15:42:11.601 [Converge PipelineAction::Create<main>] Reflections - Reflections took 77 ms to scan 1 urls, producing 119 keys and 417 values [WARN ] 2021-12-30 15:42:12.215 [Converge PipelineAction::Create<main>] plain - Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode. [WARN ] 2021-12-30 15:42:12.366 [Converge PipelineAction::Create<main>] plain - Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode. [WARN ] 2021-12-30 15:42:12.431 [Converge PipelineAction::Create<main>] elasticsearch - Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode. [INFO ] 2021-12-30 15:42:12.494 [[main]-pipeline-manager] elasticsearch - New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["http://localhost:9200"]} [INFO ] 2021-12-30 15:42:12.755 [[main]-pipeline-manager] elasticsearch - Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}} [WARN ] 2021-12-30 15:42:12.955 [[main]-pipeline-manager] elasticsearch - Restored connection to ES instance {:url=>"http://localhost:9200/"} [INFO ] 2021-12-30 15:42:12.967 [[main]-pipeline-manager] elasticsearch - Elasticsearch version determined (7.16.2) {:es_version=>7} [WARN ] 2021-12-30 15:42:12.968 [[main]-pipeline-manager] elasticsearch - Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7} [WARN ] 2021-12-30 15:42:13.065 [[main]-pipeline-manager] kv - Relying on default value of `pipeline.ecs_compatibility`, which may change in a future major release of Logstash. To avoid unexpected changes when upgrading Logstash, please explicitly declare your desired ECS Compatibility mode. [INFO ] 2021-12-30 15:42:13.090 [Ruby-0-Thread-10: :1] elasticsearch - Using a default mapping template {:es_version=>7, :ecs_compatibility=>:disabled} [INFO ] 2021-12-30 15:42:13.147 [Ruby-0-Thread-10: :1] elasticsearch - Installing Elasticsearch template {:name=>"logstash"} [INFO ] 2021-12-30 15:42:13.192 [[main]-pipeline-manager] javapipeline - Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>250, "pipeline.sources"=>["/etc/logstash/conf.d/redis.conf"], :thread=>"#<Thread:0x5104e975 run>"} [INFO ] 2021-12-30 15:42:13.973 [[main]-pipeline-manager] javapipeline - Pipeline Java execution initialization time {"seconds"=>0.78} [INFO ] 2021-12-30 15:42:13.983 [[main]-pipeline-manager] exec - Registering Exec Input {:type=>"redis_info", :command=>"redli --tls -h db-redis-fra1-68603-do-user-1446234-0.b.db.ondigitalocean.com -a hnpJxAgoH3Om3UwM -p 25061 info", :interval=>10, :schedule=>nil} [INFO ] 2021-12-30 15:42:13.994 [[main]-pipeline-manager] javapipeline - Pipeline started {"pipeline.id"=>"main"} [INFO ] 2021-12-30 15:42:14.034 [Agent thread] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]} Ruby filter finished Ruby filter finished Ruby filter finished ...

ستشاهد رسالة انتهت عملية التصفية Ruby تُطبع بانتظام (تم تعيينها على فترات 10 ثوان في الخطوة السابقة)، مما يعني أن الإحصائيات يتم شحنها إلى Elasticsearch.

يمكنك الخروج من Logstash بالنقر على CTRL + C على لوحة المفاتيح الخاصة بك. كما ذكر سابقًا، سيقوم Logstash تلقائيًا بتشغيل جميع ملفات التكوين الموجودة تحت /etc/logstash/conf.d في الخلفية عند بدء التشغيل كخدمة. قم بتشغيل الأمر التالي لبدء التشغيل:

  1. sudo systemctl start logstash

لقد قمت بتشغيل Logstash للتحقق مما إذا كان يمكنه الاتصال بمجموعة Redis الخاصة بك وجمع البيانات. الخطوة التالية هي استكشاف بعض البيانات الإحصائية في Kibana.

الخطوة 3 — استكشاف البيانات المستوردة في كيبانا

في هذا القسم، ستقوم باستكشاف وتصوير البيانات الإحصائية التي تصف أداء قاعدة البيانات الخاصة بك في Kibana.

في متصفح الويب الخاص بك، انتقل إلى نطاقك حيث قمت بتعريض Kibana كجزء من المتطلبات الأساسية. سترى الصفحة الترحيبية الافتراضية:

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

ثم ستطلبك Kibana إنشاء نمط فهرس جديد:

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

على اليمين، يقوم كيبانا بسرد جميع الفهارس المتاحة، مثل redis_info التي قمت بتكوينها ليتم استخدامها بواسطة Logstash. اكتبها في حقل النص الاسم وحدد @timestamp من القائمة المنسدلة كـ حقل الطابع الزمني. عندما تنتهي، اضغط على الزر إنشاء نمط الفهرس أدناه.

لإنشاء ورؤية التصورات البصرية الحالية، افتح قائمة الهامبرغر. تحت التحليلات، حدد لوحة المعلومات. عندما تحمل، اضغط على إنشاء تصور لبدء إنشاء واحد جديد:

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

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

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

يمكنك تحديد وظيفة مختلفة، أو توفير واحدة خاصة بك:

سيتم تحديث الرسم البياني على الفور مع القيم المحدثة.

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

الختام

الآن لديك حزمة Elastic مثبتة على خادمك ومكونة لسحب بيانات الإحصاءات من قاعدة بيانات Redis المُدارة الخاصة بك بشكل منتظم. يمكنك تحليل وتصور البيانات باستخدام Kibana، أو برنامج مناسب آخر، مما سيساعدك في جمع رؤى قيمة وارتباطات عملية حول كيفية أداء قاعدة البيانات الخاصة بك.

لمزيد من المعلومات حول ما يمكنك القيام به مع قاعدة البيانات Redis المُدارة الخاصة بك، قم بزيارة وثائق المنتج. إذا كنت ترغب في عرض إحصائيات قاعدة البيانات باستخدام نوع تصور آخر، تحقق من وثائق Kibana للحصول على تعليمات إضافية.

Source:
https://www.digitalocean.com/community/tutorials/how-to-analyze-managed-redis-database-statistics-using-the-elastic-stack-on-ubuntu-18-04