Wie man verwaltete Redis-Datenbankstatistiken mithilfe des Elastic Stack auf Ubuntu 18.04 analysiert

Der Autor hat den Free and Open Source Fund ausgewählt, um eine Spende im Rahmen des Write for DOnations-Programms zu erhalten.

Einführung

Die Datenbanküberwachung ist der kontinuierliche Prozess des systematischen Verfolgens verschiedener Kennzahlen, die zeigen, wie die Datenbank funktioniert. Durch die Beobachtung von Leistungsdaten können wertvolle Einblicke gewonnen und mögliche Engpässe identifiziert werden, sowie zusätzliche Möglichkeiten zur Verbesserung der Datenbankleistung gefunden werden. Solche Systeme implementieren oft Alarmierung, die Administratoren benachrichtigt, wenn etwas schief geht. Die gesammelten Statistiken können verwendet werden, um nicht nur die Konfiguration und den Arbeitsablauf der Datenbank zu verbessern, sondern auch die von Clientanwendungen.

Der Vorteil der Verwendung des Elastic Stack (ELK-Stacks) zur Überwachung Ihrer verwalteten Datenbank besteht in seiner ausgezeichneten Unterstützung für die Suche und der Fähigkeit, neue Daten sehr schnell zu erfassen. Es zeichnet sich nicht durch die Aktualisierung der Daten aus, aber dieser Kompromiss ist für Überwachungs- und Protokollzwecke akzeptabel, da vergangene Daten fast nie geändert werden. Elasticsearch bietet eine leistungsstarke Möglichkeit, auf die Daten zuzugreifen, die Sie über Kibana nutzen können, um ein besseres Verständnis dafür zu erlangen, wie die Datenbank in verschiedenen Zeiträumen abschneidet. Dies ermöglicht es Ihnen, die Datenbanklast mit realen Ereignissen in Beziehung zu setzen, um Einblicke darüber zu gewinnen, wie die Datenbank verwendet wird.

In diesem Tutorial importieren Sie Datenbankmetriken, die vom Redis INFO-Befehl generiert werden, über Logstash in Elasticsearch. Dies beinhaltet die Konfiguration von Logstash, um den Befehl regelmäßig auszuführen, seine Ausgabe zu analysieren und sie sofort danach an Elasticsearch zur Indexierung zu senden. Die importierten Daten können später in Kibana analysiert und visualisiert werden. Am Ende des Tutorials haben Sie ein automatisiertes System, das Redis-Statistiken für spätere Analysen abruft.

Voraussetzungen

Schritt 1 — Installation und Konfiguration von Logstash

In diesem Abschnitt werden Sie Logstash installieren und konfigurieren, um Statistiken von Ihrem Redis-Datenbankcluster abzurufen und sie dann zur Indizierung an Elasticsearch zu senden.

Beginnen Sie mit der Installation von Logstash mit dem folgenden Befehl:

  1. sudo apt install logstash -y

Sobald Logstash installiert ist, aktivieren Sie den Dienst, um automatisch beim Booten zu starten:

  1. sudo systemctl enable logstash

Bevor Sie Logstash konfigurieren, um die Statistiken abzurufen, sehen wir uns an, wie die Daten selbst aussehen. Um eine Verbindung zu Ihrer Redis-Datenbank herzustellen, gehen Sie zum Managed Database Control Panel und wählen Sie im Dropdown-Menü unter dem Verbindungsdetails-Panel Flags aus:

Ihnen wird ein vordefinierter Befehl für den Redli-Client angezeigt, den Sie verwenden, um eine Verbindung zu Ihrer Datenbank herzustellen. Klicken Sie auf Kopieren und führen Sie den folgenden Befehl auf Ihrem Server aus, wobei Sie redli_flags_command durch den gerade kopierten Befehl ersetzen:

  1. redli_flags_command info

Da die Ausgabe dieses Befehls lang ist, erklären wir dies in verschiedene Abschnitte unterteilt.

In der Ausgabe des Redis info-Befehls sind Abschnitte mit # markiert, was einen Kommentar kennzeichnet. Die Werte sind in Form von Schlüssel:Wert ausgefüllt, was sie relativ einfach zu analysieren macht.

Der Server-Abschnitt enthält technische Informationen zum Redis-Build, wie z.B. dessen Version und den Git-Commit, auf dem er basiert, während der Clients-Abschnitt die Anzahl der aktuell geöffneten Verbindungen angibt.

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 bestätigt, wie viel RAM Redis für sich selbst allokiert hat, sowie die maximale Menge an Speicher, die es möglicherweise verwenden kann. Wenn ihm der Speicher ausgeht, werden Schlüssel mithilfe der von Ihnen im Control Panel angegebenen Strategie freigegeben (angezeigt im maxmemory_policy-Feld in dieser Ausgabe).

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 ...

Im Persistence-Abschnitt können Sie sehen, wann Redis zuletzt die von ihm gespeicherten Schlüssel auf die Festplatte gespeichert hat, und ob dies erfolgreich war. Der Stats-Abschnitt enthält Zahlen zu Client- und In-Cluster-Verbindungen, zur Anzahl der Male, die der angeforderte Schlüssel gefunden wurde (oder nicht), usw.

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 ...

Indem Sie sich das role unter Replication ansehen, wissen Sie, ob Sie mit einem primären oder einem Replikat-Knoten verbunden sind. Der Rest des Abschnitts enthält die Anzahl der aktuell verbundenen Replikate und die Menge an Daten, die dem Replikat im Vergleich zum Primärknoten fehlen. Es können zusätzliche Felder vorhanden sein, wenn die Instanz, mit der Sie verbunden sind, ein Replikat ist.

Hinweis: Das Redis-Projekt verwendet in seiner Dokumentation und in verschiedenen Befehlen die Begriffe „Master“ und „Slave“. DigitalOcean bevorzugt im Allgemeinen die alternativen Begriffe „Primary“ und „Replica“. Dieser Leitfaden verwendet standardmäßig die Begriffe „Primary“ und „Replica“, wo immer möglich, aber beachten Sie, dass es einige Fälle gibt, in denen die Begriffe „Master“ und „Slave“ unvermeidlich auftauchen.

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 ...

Unter CPU sehen Sie die Menge an System (used_cpu_sys) und Benutzer (used_cpu_user) CPU-Leistung, die Redis gerade verbraucht. Der Cluster-Abschnitt enthält nur ein einzigartiges Feld, cluster_enabled, das anzeigt, dass der Redis-Cluster läuft.

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 # Fehlerstatistiken # Cluster cluster_enabled:0 # Keyspace

Logstash wird damit beauftragt, regelmäßig den info-Befehl auf Ihrer Redis-Datenbank auszuführen (ähnlich wie Sie es gerade getan haben), die Ergebnisse zu analysieren und sie an Elasticsearch zu senden. Sie können dann später von Kibana darauf zugreifen.

Sie speichern die Konfiguration zur Indizierung von Redis-Statistiken in Elasticsearch in einer Datei namens redis.conf im Verzeichnis /etc/logstash/conf.d, wo Logstash Konfigurationsdateien speichert. Wenn es als Dienst gestartet wird, werden sie automatisch im Hintergrund ausgeführt.

Erstellen Sie redis.conf mit Ihrem bevorzugten Editor (z. B. nano):

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

Fügen Sie die folgenden Zeilen hinzu:

/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}"
    }
}

Vergessen Sie nicht, redis_flags_command durch den Befehl zu ersetzen, der im Steuerfeld angezeigt wird, den Sie zuvor im Schritt verwendet haben.

Sie definieren eine Eingabe, die aus einer Reihe von Filtern besteht, die auf die gesammelten Daten angewendet werden, sowie eine Ausgabe, die die gefilterten Daten an Elasticsearch sendet. Die Eingabe besteht aus dem exec-Befehl, der periodisch nach einer festgelegten Zeit interval (ausgedrückt in Sekunden) einen Befehl auf dem Server ausführt. Es wird auch ein Typ-Parameter angegeben, der den Dokumenttyp definiert, wenn er in Elasticsearch indiziert wird. Der exec-Block leitet ein Objekt weiter, das zwei Felder enthält, Befehl und Nachricht-Zeichenfolge. Das Feld Befehl enthält den ausgeführten Befehl und die Nachricht enthält dessen Ausgabe.

Es gibt zwei Filter, die nacheinander auf den aus der Eingabe gesammelten Daten ausgeführt werden. Der kv-Filter steht für den Schlüssel-Wert-Filter und ist in Logstash integriert. Er wird zum Parsen von Daten im allgemeinen Format von SchlüsselWert-TrennzeichenWert verwendet und bietet Parameter zur Festlegung von Wert- und Feldtrennzeichen. Das Feldtrennzeichen bezieht sich auf Zeichenfolgen, die die im allgemeinen Format formatierten Daten voneinander trennen. Im Fall der Ausgabe des Redis INFO-Befehls ist das Feldtrennzeichen (field_split) eine neue Zeile und das Werttrennzeichen (value_split) ist :. Zeilen, die nicht dem definierten Format entsprechen, einschließlich Kommentaren, werden verworfen.

Um den kv-Filter zu konfigurieren, geben Sie : an den value_split-Parameter und \r\n (was eine neue Zeile bedeutet) an den field_split-Parameter weiter. Sie ordnen außerdem an, das command– und message-Felder aus dem aktuellen Datensatz zu entfernen, indem Sie sie als Elemente eines Arrays an remove_field übergeben, da sie Daten enthalten, die jetzt nutzlos sind.

Der kv-Filter stellt den von ihm analysierten Wert standardmäßig als String (Text) dar. Dies führt zu einem Problem, da Kibana String-Typen nicht einfach verarbeiten kann, selbst wenn es sich tatsächlich um eine Zahl handelt. Um dies zu lösen, verwenden Sie benutzerdefinierten Ruby-Code, um die nur aus Zahlen bestehenden Strings, wo möglich, in Zahlen umzuwandeln. Der zweite Filter ist ein ruby-Block, der einen code-Parameter akzeptiert, der einen String mit dem auszuführenden Code enthält.

event ist eine Variable, die Logstash Ihrem Code zur Verfügung stellt und die die aktuellen Daten im Filter-Pipeline enthält. Wie bereits erwähnt, werden Filter nacheinander ausgeführt, was bedeutet, dass der Ruby-Filter die analysierten Daten vom kv-Filter empfangen wird. Der Ruby-Code selbst wandelt das event in einen Hash um und durchläuft die Schlüssel. Dann wird überprüft, ob der mit dem Schlüssel verbundene Wert als Ganzzahl oder als Fließkommazahl (eine Zahl mit Dezimalstellen) dargestellt werden kann. Wenn ja, wird der Zeichenfolgenwert durch die geparste Zahl ersetzt. Wenn die Schleife beendet ist, wird eine Meldung (Ruby-Filter abgeschlossen) ausgegeben, um den Fortschritt zu melden.

Die Ausgabe sendet die verarbeiteten Daten zur Indizierung an Elasticsearch. Das resultierende Dokument wird im Index redis_info gespeichert, der in der Eingabe definiert und als Parameter an den Ausgabe-Block übergeben wird.

Speichern und schließen Sie die Datei.

Sie haben Logstash mit apt installiert und konfiguriert, um periodisch Statistiken von Redis anzufordern, sie zu verarbeiten und an Ihre Elasticsearch-Instanz zu senden.

Schritt 2 — Überprüfen der Logstash-Konfiguration

Jetzt werden Sie die Konfiguration testen, indem Sie Logstash ausführen, um zu überprüfen, ob es die Daten ordnungsgemäß abruft.

Logstash unterstützt das Ausführen einer bestimmten Konfiguration, indem der Dateipfad mit dem -f-Parameter übergeben wird. Führen Sie den folgenden Befehl aus, um Ihre neue Konfiguration aus dem letzten Schritt zu testen:

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

Es kann einige Zeit dauern, bis die Ausgabe angezeigt wird, aber bald sehen Sie etwas Ähnliches wie folgt:

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 ...

Sie sehen die Nachricht Ruby-Filter abgeschlossen in regelmäßigen Abständen gedruckt (auf 10 Sekunden im vorherigen Schritt eingestellt), was bedeutet, dass die Statistiken an Elasticsearch übertragen werden.

Sie können Logstash beenden, indem Sie auf Ihrer Tastatur STRG + C drücken. Wie bereits erwähnt, führt Logstash automatisch alle Konfigurationsdateien aus, die unter /etc/logstash/conf.d gefunden wurden, im Hintergrund aus, wenn es als Dienst gestartet wird. Führen Sie den folgenden Befehl aus, um es zu starten:

  1. sudo systemctl start logstash

Sie haben Logstash ausgeführt, um zu überprüfen, ob es eine Verbindung zu Ihrem Redis-Cluster herstellen und Daten sammeln kann. Als nächstes werden Sie einige der statistischen Daten in Kibana erkunden.

Schritt 3 – Erkunden der importierten Daten in Kibana

In diesem Abschnitt werden Sie die statistischen Daten erkunden und visualisieren, die die Leistung Ihrer Datenbank in Kibana beschreiben.

Öffnen Sie Ihren Webbrowser und navigieren Sie zu Ihrer Domain, auf der Sie Kibana gemäß den Voraussetzungen freigegeben haben. Sie sehen die Standard-Willkommensseite:

Bevor Sie die Daten erkunden, die Logstash an Elasticsearch sendet, müssen Sie zunächst den redis_info-Index zu Kibana hinzufügen. Wählen Sie dazu zunächst Selbst erkunden auf der Willkommensseite und öffnen Sie dann das Hamburger-Menü oben links. Unter Analytics klicken Sie auf Discover.

Kibana wird Sie dann auffordern, ein neues Indexmuster zu erstellen:

Drücken Sie auf Indexmuster erstellen. Sie sehen ein Formular zum Erstellen eines neuen Indexmusters. Indexmuster in Kibana bieten eine Möglichkeit, Daten aus mehreren Elasticsearch-Indizes gleichzeitig abzurufen und können verwendet werden, um nur einen Index zu erkunden.

Auf der rechten Seite listet Kibana alle verfügbaren Indizes auf, wie z. B. redis_info, den Sie konfiguriert haben, um Logstash zu verwenden. Geben Sie es im Name-Textfeld ein und wählen Sie @timestamp aus dem Dropdown-Menü als Zeitstempelfeld aus. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche Indexmuster erstellen unten.

Um Visualisierungen zu erstellen und vorhandene anzuzeigen, öffnen Sie das Hamburger-Menü. Wählen Sie unter Analytics Dashboard. Wenn es geladen ist, klicken Sie auf Visualisierung erstellen, um eine neue zu erstellen:

Das linke Seitenpanel bietet eine Liste von Werten, die Kibana zur Erstellung der Visualisierung verwenden kann, die im zentralen Teil des Bildschirms angezeigt wird. In der oberen rechten Ecke des Bildschirms befindet sich der Datumsbereichsauswähler. Wenn das @timestamp-Feld in der Visualisierung verwendet wird, zeigt Kibana nur die Daten an, die dem im Bereichsauswähler angegebenen Zeitintervall gehören.

Wählen Sie im Dropdown-Menü im Hauptteil der Seite Linie unter dem Abschnitt Linie und Bereich aus. Finden Sie dann das Feld used_memory in der Liste links und ziehen Sie es in den zentralen Teil. Sie werden bald eine Linienvisualisierung der durchschnittlichen Menge an verwendetem Speicher im Laufe der Zeit sehen:

Auf der rechten Seite können Sie konfigurieren, wie die horizontalen und vertikalen Achsen verarbeitet werden. Dort können Sie die vertikale Achse so einstellen, dass sie die Durchschnittswerte anzeigt, anstelle des Medians, indem Sie auf die angezeigte Achse klicken:

Sie können eine andere Funktion auswählen oder Ihre eigene bereitstellen:

Das Diagramm wird sofort mit den aktualisierten Werten aktualisiert.

In diesem Schritt haben Sie die Speicherauslastung Ihrer verwalteten Redis-Datenbank mithilfe von Kibana visualisiert. Dies ermöglicht es Ihnen, ein besseres Verständnis dafür zu erlangen, wie Ihre Datenbank genutzt wird, was Ihnen dabei helfen wird, Client-Anwendungen sowie Ihre Datenbank selbst zu optimieren.

Fazit

Sie haben nun den Elastic Stack auf Ihrem Server installiert und so konfiguriert, dass er regelmäßig Statistikdaten von Ihrer verwalteten Redis-Datenbank abruft. Sie können die Daten mithilfe von Kibana oder einer anderen geeigneten Software analysieren und visualisieren, was Ihnen wertvolle Einblicke und realweltliche Zusammenhänge darüber verschafft, wie Ihre Datenbank performt.

Für weitere Informationen darüber, was Sie mit Ihrer verwalteten Redis-Datenbank tun können, besuchen Sie die Produktdokumentation. Wenn Sie die Datenbankstatistiken gerne mit einem anderen Visualisierungstyp präsentieren möchten, werfen Sie einen Blick in die Kibana-Dokumentation für weitere Anweisungen.

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