اختار المؤلف صندوق البرمجيات الحرة والمفتوحة المصدر لتلقي تبرع كجزء من برنامج كتابة من أجل التبرعات.
المقدمة
مراقبة قاعدة البيانات هي عملية مستمرة لتتبع بنية معينة من المقاييس التي تظهر كيفية أداء قاعدة البيانات. من خلال مراقبة بيانات الأداء، يمكنك الحصول على رؤى قيمة وتحديد نقاط الضعف المحتملة، بالإضافة إلى إيجاد طرق إضافية لتحسين أداء قاعدة البيانات. غالبًا ما تقوم هذه الأنظمة بتنفيذ نظام تنبيه يُخطر المسؤولين عندما تحدث مشكلات. يمكن استخدام الإحصائيات المجمعة لتحسين ليس فقط تكوين وسير العمل لقاعدة البيانات، ولكن أيضًا تلك التطبيقات العميلية.
الفائدة من استخدام مجموعة الـ (ELK stack) لمراقبة قاعدة البيانات التي تديرها هي دعمها الممتاز للبحث والقدرة على استيعاب البيانات الجديدة بسرعة كبيرة. فهي لا تبرع في تحديث البيانات، ولكن هذا التضحية مقبولة لأغراض المراقبة والتسجيل، حيث نادرًا ما يتم تغيير البيانات السابقة. تقدم Elasticsearch وسيلة قوية للاستعلام عن البيانات، التي يمكنك استخدامها من خلال Kibana لفهم أفضل لكيفية تطور قاعدة البيانات عبر فترات زمنية مختلفة. سيتيح لك ذلك ترتيب حمل قاعدة البيانات مع الأحداث الحقيقية لكسب رؤية في كيفية استخدام قاعدة البيانات.
في هذا البرنامج التعليمي، ستقوم بتوريد مقاييس قاعدة البيانات، التي تم إنشاؤها بواسطة أمر Redis INFO، إلى Elasticsearch عبر Logstash. يتضمن هذا تكوين Logstash لتشغيل الأمر بانتظام، تحليل مخرجاته، وإرسالها إلى Elasticsearch لفهرسة على الفور بعد ذلك. يمكن للبيانات المستوردة أن تُحلل وتُرسم بعد ذلك في Kibana. بحلول نهاية البرنامج التعليمي، ستمتلك نظامًا آليًا يجلب إحصائيات Redis للتحليل لاحقًا.
المتطلبات المسبقة
- خادم Ubuntu 18.04 مع ما لا يقل عن 8 غيغابايت من ذاكرة الوصول العشوائي، وامتيازات الجذر، وحساب ثانوي غير جذري. يمكنك إعداد ذلك من خلال اتباع دليل إعداد الخادم الأولي هذا. بالنسبة لهذا البرنامج التعليمي، يكون المستخدم غير الجذري
sammy
. - Java 8 مثبتة على خادمك. للحصول على تعليمات التثبيت، قم بزيارة كيفية تثبيت جافا باستخدام
apt
على Ubuntu 18.04 واتبع الأوامر الموضحة في الخطوة الأولى. لا داعي لتثبيت Java Development Kit (JDK). - Nginx مثبتة على خادمك. للحصول على دليل حول كيفية فعل ذلك، انظر كيفية تثبيت Nginx على Ubuntu 18.04.
- Elasticsearch و Kibana مثبتة على خادمك. أكمل الخطوتين الأوليتين في كيفية تثبيت Elasticsearch و Logstash و Kibana (Elastic Stack) على Ubuntu 18.04.
- A Redis managed database provisioned from DigitalOcean with connection information available. Make sure that your server’s IP address is on the whitelist. For a guide on creating a Redis database using the DigitalOcean Control Panel, visit the Redis Quickstart guide.
- Redli مثبت على خادمك وفقًا لـ كيفية الاتصال بقاعدة بيانات مُدارة على Ubuntu 18.04.
الخطوة 1 — تثبيت وتكوين Logstash
في هذا القسم، ستقوم بتثبيت Logstash وتكوينه لاستخراج الإحصائيات من مجموعة بيانات Redis الخاصة بك، ثم تحليلها لإرسالها إلى Elasticsearch للفهرسة.
ابدأ بتثبيت Logstash باستخدام الأمر التالي:
بمجرد تثبيت Logstash، قم بتمكين الخدمة للبدء تلقائيًا عند التمهيد:
قبل تكوين Logstash لاستخراج الإحصائيات، دعنا نرى كيف تبدو البيانات نفسها. للاتصال بقاعدة بيانات Redis الخاصة بك، انتقل إلى لوحة تحكم قاعدة البيانات المُدارة الخاصة بك، وفي لوحة البيانات تفاصيل الاتصال، حدد العلامات من القائمة المنسدلة:
سيتم عرض لك أمر مُعدّ مسبقًا لعميل Redli، الذي ستستخدمه للاتصال بقاعدة البيانات الخاصة بك. انقر فوق نسخ وقم بتشغيل الأمر التالي على خادمك، مستبدلاً redli_flags_command
بالأمر الذي قمت بنسخه للتو:
نظرًا لأن الإخراج من هذا الأمر طويل، سنقوم بشرحه مقسمًا إلى أقسامه المختلفة.
في إخراج أمر 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):
أضف الأسطر التالية:
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
. قم بتشغيل الأمر التالي لاختبار التكوين الجديد الخاص بك من الخطوة السابقة:
قد يستغرق بعض الوقت لعرض الناتج، لكن سترى قريبًا شيئًا مشابهًا للتالي:
OutputUsing 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
في الخلفية عند بدء التشغيل كخدمة. قم بتشغيل الأمر التالي لبدء التشغيل:
لقد قمت بتشغيل 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 للحصول على تعليمات إضافية.