Autor: Jing Lei
Szenen
Dank der ES-Kompatibilität von SLS können Sie Kibana jetzt problemlos zum Abfragen und Visualisieren von SLS-Daten verwenden. Benutzer, die von ES zu SLS migrieren, können weiterhin ihre ursprünglichen Kibana-Nutzungsgewohnheiten beibehalten. Im Folgenden wird gezeigt, wie Sie über Kibana auf SLS zugreifen.
Anweisungen
Bereitstellungsarchitektur
Die blauen Teile hier sind Komponenten, die eine Client-Bereitstellung erfordern.
- Kibana wird zur Visualisierung verwendet
- Proxy wird verwendet, um Kibana-Anfragen zu unterscheiden und SLS-bezogene Anfragen an die ES-kompatible Schnittstelle von SLS weiterzuleiten.
- Elasticsearch wird zum Speichern der Kibana-Meta verwendet
Moment, warum brauchen wir hier eine ES?
Der Grund dafür ist, dass der Logstore von SLS keine Aktualisierungen unterstützt und viele Metaklassendaten nicht für SLS geeignet sind.
In Kibana müssen viele Metadaten gespeichert werden, z. B. die Diagrammkonfiguration von Kibana, die Indexmusterkonfiguration usw.
Daher müssen Sie eine ES-Instanz bereitstellen, die nur die Metadaten von Kibana speichert, sodass ihr Ressourcenverbrauch sehr gering ist.
Bereitstellungsprozess
Bereitstellen mit Docker-Compose
Verwandte Vorbereitungen
Nach der Installation von Docker und Docker Compose gelten die folgenden Schritte auch für Podman Compose.
Erstellen Sie verwandte Verzeichnisse
mkdir sls-kibaba # 创建一个新的目录
cd sls-kibaba # 进入
mkdir es_data # 创建一个目录用于放es的数据
Aufbau
Erstellen Sie die Datei docker-compose.yml im Verzeichnis sls-kibana.
Der Inhalt lautet wie folgt: (Die folgenden Markierungen sind die Orte, die hier geändert werden sollten. Bitte nehmen Sie Änderungen entsprechend der tatsächlichen Situation vor.)
version: '3'
services:
es:
image: elasticsearch:7.17.3
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms2G -Xmx2G"
- ELASTIC_USERNAME=elastic
- ELASTIC_PASSWORD=ES密码 # 此处请修改
- xpack.security.enabled=true
volumes:
- ./data:/usr/share/elasticsearch/data
networks:
- es717net
kproxy:
image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d
depends_on:
- es
environment:
- ES_ENDPOINT=es:9200
- SLS_ENDPOINT=https://etl-dev.cn-huhehaote.log.aliyuncs.com/es/ # 此处请修改,规则为 https://${project名}.${slsEnpoint名}/es/
- SLS_PROJECT=etl-dev # 此处请修改
- SLS_ACCESS_KEY_ID=ALIYUN_ACCESS_KEY_ID # 此处请修改, 确保有读logstore的权限
- SLS_ACCESS_KEY_SECRET=ALIYUN_ACCESS_KEY_SECRET # 此处请修改为真实accessKeySecret
networks:
- es717net
kibana:
image: kibana:7.17.3
depends_on:
- kproxy
environment:
- ELASTICSEARCH_HOSTS=http://kproxy:9201
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=ES密码 # 此处请修改(跟前面设置的ES密码相同)
- XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true
ports:
- "5601:5601"
networks:
- es717net
networks:
es717net:
ipam:
driver: default
Starten Sie den lokalen Kibana-Dienst:
docker compose up -d
Überprüfen Sie den Startstatus von Docker Compose:
docker compose ps
Besuchen Sie Kibana
Greifen Sie mit Ihrem Browser auf http://$ (Bereitstellungs- Kibaba-IP-Adresse}:5601 zu, geben Sie Ihr Konto und Ihr Passwort ein, um sich bei Kibana anzumelden.
Indexmuster konfigurieren
Wählen Sie Stack-Management:
Klicken Sie auf die Registerkarte „Indexmuster“. Es ist normal, dass in der Indexmusterliste keine Daten angezeigt werden. Der Protokollspeicher des Protokolldiensts ist den Indexmustern in Kibana zugeordnet und muss manuell erstellt werden. Klicken Sie im Eingabeaufforderungsfeld auf „Indexmuster für ausgeblendete Indexe oder Systemindizes erstellen“.
Auf der Seite „Indexmuster erstellen“ lautet das Format für „Name“ ${project}.${logstore}. Beachten Sie, dass das Verhältnis vollständig ausgefüllt werden muss und ein *-Abgleich nicht unterstützt wird.
Klicken Sie auf „Indexmuster erstellen“, um die Mustererstellung abzuschließen, und geben Sie dann „Discover“ ein, um die Daten abzufragen.
Logstore abfragen
KQL und Lucene können im Abfragefeld von Kibana ausgewählt werden, und beide ES-kompatiblen Schnittstellen von SLS werden unterstützt.
Einfache Host-Abfrage:
Es können einige komplexe Abfragen und Filter abgefragt werden.
Visuelle Diagramme
Kann Kibana zusätzlich zur Abfrage auch zur Visualisierung verwendet werden? Sicher! Wählen Sie Dashboard aus.
Klicken Sie nach der Eingabe auf Dashboard erstellen, um ein Diagramm zu erstellen.
Durch Festlegen der Felder und statistischen Methoden der horizontalen und vertikalen Achse können Sie ganz einfach das gewünschte Diagramm erstellen.
Das einfachste Histogramm ist beispielsweise ein Histogramm, das die Anzahl der angeforderten Besuche zählt, mit der Zeit auf der horizontalen Achse und der Anzahl der Datensätze auf der vertikalen Achse.
Jetzt möchte ich den Status jeder Spalte sehen. Als Status kann ich das Feld „Aufschlüsselung nach“ auswählen.
FAQ
1) Warum kann ich den Logstore auf SLS in Kibana nicht sehen?
Der Logstore auf SLS wird über das Indexmuster von Kibana abgefragt, und der Logstore auf SLS muss durch manuelles Erstellen eines Indexmusters erstellt werden.
2) Warum gibt es beim Erstellen eines Indexmusters in Kibana keine Eingabeaufforderung, wenn keine Eingabe erfolgt?
Das ist normal. Nach der Eingabe des richtigen ${project}.${logstore} auf der linken Seite (wobei ${project} und ${logstore} durch echte Werte ersetzt werden müssen) wird Folgendes angezeigt:
3) Unterstützt Kibana *-Platzhalter beim Erstellen eines Indexmusters?
Platzhalter werden nicht unterstützt und ${project}.${logstore} muss vollständig ausgefüllt werden, z. B. etl-dev.accesslog passend.
4) Warum gibt es beim Erstellen des Indexmusters von Logstore auf Kibana auf der rechten Seite keine Eingabeaufforderung?
Es gibt mehrere Möglichkeiten:
- Die ES-kompatible Adresse von SLS ist falsch. Bei der Konfiguration in kproxy lautet die Regel https://${Projektname}.${slsEnpoint-Name}/es/ . 2. Die entsprechende accessKeyId und accessKeySerect haben keine Berechtigung zum Zugriff auf SLS Logstore (Leseberechtigung).
- 5) Ich habe mehrere SLS-Projekte, auf die ich in Kibana zugreifen möchte.
Ja, der Schlüssel liegt in der Konfiguration von kproxy. SLS_PROJECT, SLS_ENDPOINT, SLS_ACCESS_KEY_ID, SLS_ACCESS_KEY_SECRET sind die Variablennamen, die sich auf das erste Projekt beziehen. Ab dem zweiten Projekt müssen die relevanten Variablennamen mit numerischen Suffixen hinzugefügt werden, z. B. SLS_PROJECT2, SLS_ENDPOINT2, SLS_ACCESS_KEY_ID2, SLS_ACCESS_KEY_SECRET2. Wenn der AccessKey eines nachfolgenden Projekts mit dem ersten Projekt übereinstimmt, kann auf die Konfiguration des dem Projekt entsprechenden AccessKeys verzichtet werden.
Angenommen, dass ein anderes Projekt von Kibaba überprüft werden soll, dann als zweiter kproxy:
- SLS_ENDPOINT2=https://etl-dev2.cn-huhehaote.log.aliyuncs.com/es/
- SLS_PROJECT2=etl-dev2
- SLS_ACCESS_KEY_ID2=etl-dev2对应的accessKeyId #如果和SLS_ACCESS_KEY_ID2一样可以不加
- SLS_ACCESS_KEY_SECRET2=etl-dev2对应的accessKeyKey #如果和SLS_ACCESS_KEY_ID2一样可以不加
Zusammenfassung
In diesem Artikel wird gezeigt, wie Sie mit Kibana eine Verbindung zur SLS ES-kompatiblen Schnittstelle für Abfragen und Analysen herstellen. Die Abfrage- und Visualisierungsfunktionen von Kibana können normal angeschlossen und verwendet werden. Geeignet für die folgenden zwei Situationen:
- Wenn Ihre bisherige Nutzungsgewohnheit Kibana ist und die Protokolle bereits in Alibaba Cloud SLS vorhanden sind, können Sie diese Lösung zum Herstellen einer Verbindung verwenden.
- Wenn Sie derzeit die Standard-ELK-Lösung verwenden, aber die Wartungsarbeiten oder Optimierungen bei der Verwendung von ES satt haben, möchten Sie vielleicht die Alibaba Cloud SLS-Lösung ausprobieren (C++-Bottom-Layer, serverlos, kostengünstig, ES-kompatibel).
Wir freuen uns auf Ihren Einsatz.
Referenzdokumentation:
-
SLS-kompatible ES-Einführung
-
Verwenden Sie Kibana, um eine Verbindung zur ES-kompatiblen Schnittstelle https://help.aliyun.com/zh/sls/user-guide/use-kibana-to-access-the-elasticsearch-kompatible-api-of-log-service?spm herzustellen =a2c4g. 11186623.0.0.27bc54e3bgGvsa#cdb8c7a157t0v