Senden Sie IBM Cloud Kubernetes Service Protokolldaten an IBM Cloud Logs
In diesem Tutorial richten Sie IBM Cloud® Kubernetes Service ein, um Protokolle direkt an IBM Cloud Logs zu senden. Diese Protokolle helfen Ihnen, Probleme zu beheben und den Zustand und die Leistung Ihrer Kubernetes Cluster und Anwendungen zu verbessern.
Ziele
In diesem Lernprogramm werden Sie:
-
Stellen Sie den Protokollierungsagent in einem bestehenden IBM Cloud Kubernetes Service-Cluster bereit.
-
Stellen Sie sicher, dass die Protokolldaten zu Ihrer IBM Cloud Logs Instanz fließen.
Vorbereitende Schritte
Bevor Sie beginnen, vergewissern Sie sich, dass Sie über die erforderlichen Voraussetzungen verfügen.
-
Erstellen Sie eine IBM Cloud® Kubernetes Service, und stellen Sie eine Instanz von IBM Cloud Logs bereit.
-
Installieren Sie die IBM Cloud-CLI.
-
Installieren Sie das Kubernetes Kommandozeilenwerkzeug kubectl.
-
Installieren Sie den JSON CLI-Prozessor (
jq). -
Installieren Sie den YAML CLI-Prozessor (
yq).
Eine Alternative zur Installation der IBM Cloud CLI, kubectl, jq, und yq wäre die Verwendung der IBM Cloud Shell
Verbinden Sie sich mit Ihrem Cluster
Verbinden Sie sich mit Ihrem IBM Cloud Kubernetes Service cluster. Durch die Verbindung mit dem Cluster können kubectl Befehle auf dem Cluster ausgeführt werden.
-
Melden Sie sich bei Ihrem IBM Cloud-Konto an. Fügen Sie die Option
--ssohinzu, wenn Sie eine föderierte ID verwenden.ibmcloud login -
Installieren Sie das IBM Cloud Kubernetes Service CLI-Plug-in
ibmcloud plugin install ks -
Listen Sie die verfügbaren Cluster auf und notieren Sie sich den zu verbindenden Cluster.
ibmcloud ks clusters -
Verbinden Sie sich mit Ihrem Cluster. Ersetzen Sie
<cluster_name>durch den Namen Ihres Clusters.ibmcloud ks cluster config --cluster <cluster_name> -
Überprüfen Sie, ob Sie mit Ihrem Cluster verbunden sind und
kubectlBefehle ausführen können, indem Sie alle Pods auflisten, die in allen Namespaces laufen.kubectl get pods --all-namespaces
API-Schlüssel erstellen
Bevor Sie den Protokollierungsagent als Daemonset bereitstellen, benötigen Sie einen IAM-API-Schlüssel und einen Endpunkt für den Logging-Ingestion. Die IBM Cloud CLI wird verwendet, um diese Informationen zu erhalten.
Erstellen Sie zunächst eine Service-ID und erhalten Sie einen API-Schlüssel.
-
Erstellen Sie eine Service-ID, indem Sie den folgenden Befehl ausführen.
ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS" -
Gewähren Sie der erstellten Dienst-ID die Rolle
Senderfür IBM Cloud Logs, indem Sie den folgenden Befehl ausführen.ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender -
Erstellen Sie einen IAM-API-Schlüssel, indem Sie den folgenden Befehl ausführen. Sie können den Schlüsselnamen (
kubernetes-logs-agent-apikey) und die Beschreibung (--d) bei Bedarf anpassen.ibmcloud iam service-api-key-create kubernetes-logs-agent-apikey kubernetes-logs-agent --description "API key for sending logs to the IBM Cloud Logs service"Der API-Schlüssel wird in der Ausgabe nach
API Keyzurückgegeben:ID ApiKey-xxxxxxxx-b815-46c7-bc9f-516115bc31c6 Name kubernetes-logs-agent-apikey Description API key for sending logs to the IBM Cloud Logs service Created At 2024-09-18T17:17+0000 API Key <apikey is displayed here> Locked false
Hinweis:
-
Jedes Mal, wenn Sie einen API-Schlüssel erstellen, wird ein neues IAM-Geheimnis generiert.
-
Stellen Sie sicher, dass Sie den API-Schlüssel sicher aufbewahren, da er sensible Informationen enthält.
Bestimmen des Endpunkts für die Protokollierung
Die zweite Information, die benötigt wird, ist der Ingestion-Endpunkt für Ihre IBM Cloud Logs-Instanz. Verwenden Sie diesen Befehl, um URL abzurufen:
ibmcloud resource service-instances --service-name logs --long --output JSON | jq '[.[] | {name: .name, id: .id, region: .region_id, ingestion_endpoint: .extensions.external_ingress}]'
Der Endpunkt ist ähnlich wie:
ingestion_endpoint: 3a622101-7521-4002-bf91-8c26e17eedcf.ingress.eu-de.logs.cloud.ibm.com
Erstellung der Agenten-YAML-Datei
In diesem Schritt erstellen Sie die YAML-Datei, die für die Konfiguration des Agenten-Daemonsets verwendet wird.
-
Erstellen Sie eine Datei namens
logs-values.yamlmit folgendem Inhalt:Diese Datei enthält die Konfigurationen, die für Ihre Bereitstellung spezifisch sind.
metadata: name: "logs-agent" image: version: "1.4.0" # required clusterName: "" # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering. env: # ingestionHost is a required field. For example: # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com" ingestionHost: "" # required # If you are using private CSE proxy, then use port number "3443" # If you are using private VPE Gateway, then use port number "443" # If you are using the public endpoint, then use port number "443" ingestionPort: "" # required iamMode: "TrustedProfile" # trustedProfileID - trusted profile id - required for iam trusted profile mode trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile -
Aktualisieren Sie die Felder in der yaml-Datei mit Werten, die für Ihre Umgebung spezifisch sind.
Bereitstellen des Daemonsets
Verwenden Sie den API-Schlüssel, URL und die YAML-Datei, um den Agenten in Ihrem Cluster bereitzustellen.
-
Melden Sie sich bei der Registrierung Helm an, indem Sie den Befehl
helm registry loginausführen:helm registry login -u iambearer -p $(ibmcloud iam oauth-tokens --output json | jq -r .iam_token | cut -d " " -f2) icr.ioWindows Windows PowerShell-Benutzer sollten stattdessen diesen Befehl verwenden:
helm registry login -u iambearer -p ((ibmcloud iam oauth-tokens --output json | ConvertFrom-Json).iam_token -replace 'Bearer ', '') icr.ioWeitere Informationen finden Sie unter Verwendung von Helm in der Container Registry: Diagramme von einer anderen Registry oder einem Helm abrufen.
-
Setzen Sie den Agenten ein.
Wenn Sie einen API-Schlüssel mit einer Dienst-ID (
iamMode=IAMAPIKey) verwenden, führen Sie den folgenden Befehl aus:helm install <install-name> oci://icr.io/ibm/observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>Dabei gilt:
<install-name>ist der Name der Helm-Installation (logs-agent)<chart-version>ist die Version der Steuerkarte. Die Helm sollte mit der Version des Agent-Images übereinstimmen. Weitere Informationen finden Sie unter Helm.<PATH>ist der Verzeichnispfad, in dem sich die Datei "logs-values.yamlbefindet.<APIKey-value>ist der IAM apikey, der mit der in Schritt 1 eingerichteten ServiceID verbunden ist
Sie können den Agenten auch mit einem vertrauenswürdigen Profil bereitstellen. Weitere Informationen finden Sie unter Bereitstellen des Protokollierungsagenten für Kubernetes mithilfe eines Helm.
Überprüfen Sie, ob die Protokolle gesendet werden
Um sicherzustellen, dass Ihre IBM Cloud® Kubernetes Service Logs erfolgreich nach IBM Cloud Logs fließen, führen Sie die folgenden Schritte durch:
-
Rufen Sie die IBM Cloud Logs Benutzeroberfläche auf und klicken Sie auf das
Livetail.
-
Klicken Sie auf
Start, um die Protokolle in Echtzeit zu sehen.
Es sollte ein kontinuierlicher Strom von Protokolldaten aus der Anwendung kube-system zu sehen sein. Diese Protokolle stammen von Ihrem Cluster.