כיצד לנתח סטטיסטיקות מנוהלות במסד נתונים Redis באמצעות הערכת קונגיט ב־Elastic Stack על Ubuntu 18.04

הסופר בחר ב־קרן הקוד הפתוח והחופשית כדי לקבל תרומה כחלק מתוכנית כתוב בשביל תרומות.

הקדמה

מעקב בסיסי הנתונים הוא תהליך רציף של מעקב מערכתי אחר מדדים שונים שמציינים כיצד הבסיס נתונים מבצע. על ידי צפייה בנתוני הביצועים, ניתן לרכוש הבנה עמוקה ולזהות מכשולים אפשריים, וכן למצוא דרכים נוספות לשיפור ביצועי הבסיס. מערכות כאלה תמיד מיישמות התראה המודיעה למנהלים כאשר יש תקלות. הסטטיסטיקות שנאספו יכולות לשמש לא רק לשיפור הגדרת הבסיס ולזרימת העבודה שלו, אלא גם לאלה של יישומי לקוח.

היתרון בשימוש ב- Elastic Stack (ELK stack) למעקב אחר בסיס הנתונים שלך הוא התמיכה המעולה שלו בחיפוש וביכולת לשאול נתונים חדשים בקלות רבה. הוא לא מצטיין בעדכון הנתונים, אך המחאה הזו מתקבלת עבור מטרות מעקב ולוגים, שבהן הנתונים הקודמים נערכים נדיבות. Elasticsearch מציע דרך עוצמתית לשאילתת הנתונים, אשר ניתן להשתמש בה דרך Kibana כדי לקבל הבנה טובה יותר של כיצד המסד נתונים מתנהל בתקופות זמן שונות. זה יאפשר לך להתאים את העומס על מסד הנתונים עם אירועים בחיים אמיתיים כדי להשיג הבנה על איך המסד משמש.

במדריך זה, תייבא מדדי בסיס הנתונים, שנוצרו על ידי פקודת ה-INFO של Redis, לתוך 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 עם הפקודה שהעתקת כעת:

  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 משתמש במונחים "מאסטר" ו"עבד" בתיעוד שלו ובפקודות שונות. דיגיטל אושן מעדיף בדרך כלל את המונחים החלופיים "ראשי" ו"רפליקה". מדריך זה יעדיף באופן ברירת המחדל את המונחים "ראשי" ו"רפליקה" ככל הניתן, אך שים לב כי ישנם מקרים חלופיים בהם המונחים "מאסטר" ו"עבד" יופיעו באופן לא נמנע.

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 ומספק פרמטרים לציון מהו מפריד הערך והשדה. מפריד השדה מתייחס למחרוזות שמפרידות את הנתונים בצורת הכלל מאחדתם והפריד של הערך (value_split) הוא :. שורות שאינן עוקבות אחר הצורה המוגדרת יישלכו, כולל הערות.

כדי להגדיר את מסנן kv, אתה מעביר : לפרמטר value_split, ו־\r\n (המציין שורה חדשה) לפרמטר field_split. אתה גם מזמין אותו להסיר את השדות command ו־message מאובייקט הנתונים הנוכחי על ידי מעברם ל־remove_field כאיברים של מערך, משום שהם מכילים נתונים שכעת אינם שימושיים.

מסנן kv מייצג את הערך שהוא פירסם כסוג מחרוזת (טקסט) לפי העיצוב. זה גורם לבעיה מכיוון ש־Kibana לא יכולה בקלות לעבד סוגי מחרוזות, גם אם זה בעצם מספר. כדי לפתור זאת, תשתמש בקוד Ruby מותאם אישית כדי להמיר את המחרוזות המכילות רק מספרים למספרים, כאשר זה אפשרי. המסנן השני הוא בלוק ruby שמספק פרמטר code המקבל מחרוזת המכילה את הקוד שיש להריץ.

event הוא משתנה שהופק Logstash לקוד שלך, ומכיל את הנתונים הנוכחיים בצינור המסננים. כפי שצוין קודם, המסננים מריצים אחרי זה אחרי זה, המשמעות היא שמסנן ה־Ruby יקבל את הנתונים המפורסמים מהמסנן kv. הקוד של Ruby עצמו ממיר את ה־event ל־Hash ומעבור דרך המפתחות, ואז בודק אם הערך המשויך למפתח יכול להיות מיוצג כמספר שלם או כמספר עם נקודה עשרונית (מספר עם נקודה עשרונית). אם כן, הערך של המחרוזת מוחלף במספר שנפרס. כאשר הלולאה מסתיימת, היא מדפיסה הודעה (Ruby filter finished) כדי לדווח על התקדמות התהליך.

הפלט שולח את הנתונים שעובדו ל-Elasticsearch לאינדקסציה. המסמך התוצאה יאוחסן באינדקס redis_info, הוגדר בקובץ הקלט והועבר כפרמטר לבלוק הפלט.

שמור וסגור את הקובץ.

התקנת Logstash באמצעות apt והגדרתו לבקש סטטיסטיקות בתדירות מ-Redis, לעבד אותם, ולשלוח אותם למופע ה-Elasticsearch שלך.

שלב 2 — בדיקת התצורה של 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 filter finished מודפסת במרווחים קבועים (הוגדרו ל-10 שניות בשלב הקודם), שזה אומר שהסטטיסטיקות נשלחות ל-Elasticsearch.

תוכל לצאת מ-Logstash על ידי לחיצה על CTRL + C על המקלדת שלך. כפי שצוין מראש, Logstash יפעל באופן אוטומטי את כל קבצי התצורה הנמצאים תחת /etc/logstash/conf.d ברקע כאשר מופע השירות מופעל. הפעל את הפקודה הבאה כדי להתחיל:

  1. sudo systemctl start logstash

שוחררת את Logstash כדי לבדוק האם הוא יכול להתחבר לאשף שלך ולאסוף נתונים. לאחר מכן, תסתכל על חלק מהנתונים הסטטיסטיים ב-Kibana.

שלב 3 — חקירת הנתונים שיובאו ב-Kibana

בסעיף זה, תבחן ותחזור על הנתונים הסטטיסטיים המתארים את ביצועי מסד הנתונים שלך ב-Kibana.

בדפדפן האינטרנט שלך, נווט לדומיין שלך שבו חשפת את Kibana כחלק מהנדרשים. תראה את דף הבית המברך המותקן כברירת מחדל:

לפני בידוד הנתונים ש-Logstash שולח אל Elasticsearch, עליך תחילה להוסיף את אינדקס ה-redis_info ל-Kibana. כדי לעשות זאת, בחר תחילה לחקור לבד מדף הבית ולאחר מכן פתח את תפריט ההמבורגר בפינה השמאלית העליונה. בתוך ניתוחים, לחץ על לגלות.

כעת, Kibana תבקש ממך ליצור דפוס אינדקס חדש:

לחץ על צור דפוס אינדקס. תראה טופס ליצירת דפוס אינדקס חדש. דפוסי אינדקס ב-Kibana מספקים דרך למשוך נתונים מאינדקסי Elasticsearch מרובים בו זמנית, וניתן להשתמש בהם כדי לחקור רק אינדקס אחד.

בצד ימין, Kibana מפרטת את כל האינדקסים הזמינים, כגון redis_info שהגדרת להשתמש בו ב־Logstash. הקלד אותו בשדה הטקסט Name ובחר @timestamp מהרשימה הנפתחת כשדה ה־Timestamp. כאשר תסיים, לחץ על הלחצן Create index pattern למטה.

כדי ליצור ולראות ויזואליזציות קיימות, פתח את תפריט ההמבורגר. בתת־תפריט Analytics, בחר Dashboard. כאשר הוא נטען, לחץ על Create visualization כדי להתחיל ליצור אחת חדשה:

הפאנל בצד שמאל מספק רשימת ערכים שבאמצעותם Kibana יכולה לצייר את הויזואליזציה, שתוצג בחלק המרכזי של המסך. בחלק הימני העליון של המסך נמצאת תיבת הבחירה של טווח התאריכים. אם שדה ה־@timestamp משמש בויזואליזציה, Kibana תציג רק את הנתונים השייכים לטווח הזמן שצויין בתיבת הבחירה.

מהתיבת הנפתחת בחלק הראשי של העמוד, בחר Line תחת האזור Line and area. לאחר מכן, מצא את השדה used_memory מהרשימה בצד שמאל וגרור אותו לחלק המרכזי. בקרוב תראה ויזואליזציה של קו של כמות הזיכרון המשומשת בינונית דרך הזמן:

בצד ימין, תוכל להגדיר איך ציר האופקי והאנכי מעובדים. שם, תוכל להגדיר את ציר האנכי להציג את הערכים הממוצעים במקום התיכון על ידי לחיצה על הציר שמוצג:

תוכל לבחור פונקציה שונה, או לספק את שלך:

הגרף יתעדכן מיידית עם הערכים המעודכנים.

בשלב זה, ייחוסת את שימוש הזיכרון במסד הנתונים שלך שמנוהל באמצעות Redis באמצעות Kibana. זה יאפשר לך להבין טוב יותר איך המסד הנתונים שלך משמש, וזה יסייע לך לייעל את יישומי הלקוח וכן את המסד הנתונים שלך בעצמו.

מסקנה

עכשיו יש לך את חבילת האלסטיק מותקנת על השרת שלך ומוגדרת למשוך נתוני סטטיסטיקה ממסד הנתונים שלך שמנוהל באמצעות 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