Metriken aus einer Monitoring-Instanz mithilfe der Monitoring-API extrahieren
Sie können Metriken aus einer IBM Cloud Monitoring-Instanz extrahieren, indem Sie die Monitoring-API verwenden.
Metriken mithilfe von cURL abrufen
Zum Abrufen von Metriken können Sie den folgenden cURL-Befehl verwenden:
curl -X POST <SYSDIG_REST_API_ENDPOINT>/data -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json" -d DATA
Wo
-
<SYSDIG_REST_API_ENDPOINT>gibt den Endpunkt an, den der REST-API-Aufruf zum Ziel hat. Weitere Informationen finden Sie unter Monitoring-REST-API-Endpunkte. Der öffentliche Endpunkt für eine Instanz, die in der Region 'us-south' verfügbar ist, ist beispielsweise folgender:https://us-south.monitoring.cloud.ibm.com/api -
Sie können mehrere Header übergeben, indem Sie
-Hverwenden.AuthorizationundIBMInstanceIDsind Header, die für die Authentifizierung erforderlich sind.Der Header
SysdigTeamIDist optional. Wenn Sie diesen Header angeben, begrenzen Sie die Anforderung auf die Daten und Ressourcen, die für das angegebene Team verfügbar sind.Informationen zum Abrufen eines Autorisierungstokens (
AUTH_TOKEN) und derGUIDfinden Sie unter Header für IAM-Tokens. -
Sie können die Datei
metrics.jsonübergeben, um Metriken mithilfe von-dzu extrahieren. Beispiel:-d @metrics.json.
Das folgende Beispiel zeigt eine Vorlage für die Datei metrics.json:
{
"start": "Number: seconds",
"end": "Number: seconds",
"last": "Number: last available seconds",
"metrics": [
{
"id": "<>",
"aggregations": {}
}
],
"sampling": "Number: <10|60|600|3600|86400>",
"dataSourceType": "<host|container>",
"filter": "<>",
"paging": {
"from": "Number",
"to": "Number"
}
}
Metrikverzeichnis
Die vordefinierten Metriken von Sysdig finden Sie im Metrik-Wörterbuch.
Informationen zur Anzeige der vordefinierten Metriken, die durch Sysdig-fähige IBM Cloud-Services definiert werden, finden Sie unter Cloud-Services.
Datenaggregation
Weitere Informationen zur Datenaggregation finden Sie unter Datenaggregation.
Beispiel: Plattformmetriken extrahieren
Dieses Beispiel zeigt, wie Plattformmetriken aus Cloud Foundry in us-south für die letzten 24 Stunden extrahiert werden können.
curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "content-type: application/json" -d @metrics.json
Das folgende Beispiel der Datei metrics.json zeigt, wie Sie die Datei so konfigurieren, dass Daten nach Instanz-ID, Alter und Anzahl der Bytes extrahiert werden, die die App verwendet:
{
"metrics": [
{
"id": "ibm_resource"
},
{
"id": "ibm_cloudfoundry_app_container_age",
"aggregations": {"group": "max", "time": "max"}
},
{
"id": "ibm_cloudfoundry_app_memory_bytes_used",
"aggregations": {"group": "avg", "time": "avg"}
}
],
"filter": "ibm_location = \"us-south\"",
"sampling": 86400,
"last": 86400
}
Das Ergebnis zum Extrahieren von Daten gibt die folgenden Informationen zurück:
{
"data": [
{
"d": [
"73a9d202-7e97-45b2-a107-3b1528856be3",
316660942465643,
18809015.575
],
"t": 1587772800
}
],
"end": 1587772800,
"start": 1587686400
}
Beispiel: CPU-Daten extrahieren
Dieses Beispiel zeigt, wie CPU-Daten nach Host mit Start-, End- und Stichprobenlimit extrahiert werden können.
Das folgende Beispiel der Datei metrics.json zeigt, wie die Datei zum Extrahieren von CPU-Daten konfiguriert wird:
{
"start":"1555404790",
"end":"1555404850",
"sampling": 10,
"metrics": [
{
"id": "host.hostName"
},
{
"id": "cpu.used.percent",
"aggregations": {"time": "avg"}
}
],
"dataSourceType": "host"
}
Das Ergebnis zum Extrahieren von Daten gibt die folgenden Informationen zurück:
{
"data": [
{
"d": [
"j-rhel71.fyre.ibm.com",
3.621
],
"t": 1555404800
},
{
"d": [
"j-rhel71.fyre.ibm.com",
3.597
],
"t": 1555404810
},
{
"d": [
"j-rhel71.fyre.ibm.com",
3.993
],
"t": 1555404820
},
{
"d": [
"j-rhel71.fyre.ibm.com",
3.145
],
"t": 1555404830
},
{
"d": [
"j-rhel71.fyre.ibm.com",
4.09
],
"t": 1555404840
},
{
"d": [
"j-rhel71.fyre.ibm.com",
5.057
],
"t": 1555404850
}
],
"end": 1555404850,
"start": 1555404790
}
Beispiel: cURL-Beispiel zum Extrahieren der letzten Metrik
Um den neuesten Wert einer Metrik zu erhalten, geben Sie nur den Namen der Metrik an. Es wird der letzte Wert zurückgegeben, der vor maximal 5 Minuten generiert wurde.
Zum Beispiel, um den letzten Wert von host_cpu_used_percent zu erhalten:
curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"
Wo
-
<SYSDIG_REST_API_ENDPOINT>gibt den Endpunkt an, den der REST-API-Aufruf zum Ziel hat. Weitere Informationen finden Sie unter Monitoring-REST-API-Endpunkte. Der öffentliche Endpunkt für eine Instanz, die in der Region 'us-south' verfügbar ist, ist beispielsweise folgender:https://us-south.monitoring.cloud.ibm.com/api -
Sie können mehrere Header übergeben, indem Sie
-Hverwenden.AuthorizationundIBMInstanceIDsind Header, die für die Authentifizierung erforderlich sind.Der Header
SysdigTeamIDist optional. Wenn Sie diesen Header angeben, begrenzen Sie die Anforderung auf die Daten und Ressourcen, die für das angegebene Team verfügbar sind.Informationen zum Abrufen eines Autorisierungstokens (
AUTH_TOKEN) und derGUIDfinden Sie unter Header für IAM-Tokens.
Alle Dashboards unterstützen die vollständige PromQL-API. Weitere Informationen darüber, was mit PromQL, möglich ist, finden Sie in der Dokumentation zu Prometheus.
cURL-Beispielbefehl zum Extrahieren von CPU-Daten für ein Team
Dieses Beispiel zeigt, wie CPU-Daten extrahiert werden, die im Kontext eines Teams verfügbar sind.
curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: 30785" -H "content-type: application/json" -d @metrics.json
Beispiel: Extrahieren metrischer Daten von Monitoring nach Event Streams
Sie können das folgende Codebeispiel verwenden, um Metriken aus Ihrer Monitoring-Instanz nach Event Streams zu extrahieren.
- Ersetzen Sie
<region>durch die Region Ihrer Monitoring-Instanz, z. B.us-east. - Ersetzen Sie
<apikey>durch ein IBM Cloud IAM-API-Schlüsseltoken. - Ersetzen Sie
<instance_id>durch die ID Ihrer Monitoring-Instanz. - Ersetzen Sie das Feld
metricsdurch das JSON-Array der Metriken, die Sie extrahieren möchten. Die Beispielmetrik istcpu.cores.used.
from sdcclient import IbmAuthHelper, SdMonitorClient
endpoint = "https://<region>.monitoring.cloud.ibm.com"
apikey = "<apikey>"
instanceID = "<instance_id>"
ibm_headers = IbmAuthHelper.get_headers(endpoint, apikey, instanceID)
sdclient = SdMonitorClient(sdc_url=endpoint, custom_headers=ibm_headers)
metrics = [
{
"id": "cpu.cores.used",
"aggregations": {
"time": "avg",
"group": "sum"
}
}
]
filter = None
start = -120
end = 0
sampling = 60
ok, res = sdclient.get_data(metrics, start, end, sampling, filter=filter, datasource_type = "container")
print(ok)
print(res)
return res
Beispiel: Extrahieren von Benachrichtigungen von Monitoring nach Event Streams mit der Event Streams-REST-API
-
Erstellen Sie eine Event Streams-Instanz.
- Wählen Sie aus den Preisplänen einen Unternehmensplan aus.
- Richten Sie bei Bedarf eine Autorisierung in IAM für Event Streams ein, um einen KMS-Anbieter wie Key Protect anzusprechen, und aktualisieren Sie die Seite.
- Wählen Sie für den Serviceendpunkt eine Option mit einem privaten Netzwerk.
-
Warten Sie ein paar Minuten, bis Ihre Event Streams-Instanz bereitsteht.
-
In Ihrer Event Streams-Instanz, erstellen Sie ein Topic, z. B.
kafka-java-console-sample-topic. -
Erstellen Sie einen Serviceschlüssel für die Berechtigungsnachweise für Ihre Event Streams-Instanz auf dem Serviceendpunkt der private Cloud.
<name>: Geben Sie einen Namen für den Service-Schlüssel ein.<event_streams_instance>: Ersetzen Sie durch den Namen Ihrer Event Streams-Instanz.
ibmcloud resource service-key-create <name> Writer --instance-name <event_streams_instance> --service-endpoint private -
In der Ausgabe des vorherigen Befehls erhalten Sie die Details, die Sie für einen REST-Aufruf benötigen.
api_keykafka_http_url
Beispielausgabe:
api_key: 123465123456123465123465123465123465 kafka_http_url: https://mh-<id>.private.us-south.messagehub.appdomain.cloud -
Klicken Sie im Dashboard von Monitoring auf "Dashboard öffnen" für die Monitoring-Instanz, die Sie verwenden möchten.
-
Klicken Sie auf Erste Schritte > Einen Benachrichtigungskanal konfigurieren > Benachrichtigungskanal konfigurieren. Die Seite Einstellungen wird geöffnet.
-
Klicken Sie auf + Benachrichtigungskanal hinzufügen und wählen Sie die Option Webhook.
-
Konfigurieren Sie den Webhook-Benachrichtigungskanal. Nachdem Sie den Webhook-Benachrichtigungskanal erstellt haben, müssen Sie die Authentifizierung für den Kanal fortsetzen.
- Für URL geben Sie
kafka_http_urlaus dem Dienstschlüssel ein und hängen Sie die Route/topics/<topic>/recordsan URL an. "<topic>" ist der Name des Themas, das Sie in Ihrer Event Streams-Instanz erstellt haben. - Geben Sie für Name einen Namen für den Webhook-Benachrichtigungskanal ein.
- Belassen Sie die anderen Felder auf den Standardeinstellungen.
- Klicken Sie auf Speichern, um den Kanal zu erstellen.
- Für URL geben Sie
-
Rufen Sie ein IAM-Token ab, um Ihre Anfragen an die Monitoring-API zu authentifizieren.
-
Rufen Sie die Monitoring-API auf, um die Benachrichtigungskanäle aufzulisten.
- Ersetzen Sie
<region>durch die Region Ihrer Monitoring-Instanz, z. B.us-east. - Ersetzen Sie
<token>durch das IAM-Token, das Sie zuvor abgerufen haben.
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq
Beachten Sie in der Ausgabe die id des Benachrichtigungskanals, bei dem das Feld options.url mit der URL übereinstimmt, die Sie zuvor erstellt haben.
{
"id": 123,
"version": 6,
...
"options": {
"notifyOnOk": true,
"url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud",
"notifyOnResolve": true
}
},
- Rufen Sie die Monitoring-API auf, um den Authentifizierungs-Header zum Webhook-Benachrichtigungskanal hinzuzufügen.
- Ersetzen Sie
<region>durch die Region Ihrer Monitoring-Instanz, z. B.us-east. - Ersetzen Sie
<id>durch die ID des Benachrichtigungskanals, die Sie zuvor abgerufen haben. - Ersetzen Sie
<token>durch das IAM-Token, das Sie zuvor abgerufen haben.
curl -X PUT ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels/<id>' \
--header ‘Content-Type: application/json’
--header ‘Authorization: Bearer <token>’ -d @/tmp/notification.json
- Rufen Sie die Monitoring-API erneut auf, um zu bestätigen, dass der Benachrichtigungskanal mit dem Authentifizierungsheader aktualisiert wird.
- Ersetzen Sie
<region>durch die Region Ihrer Monitoring-Instanz, z. B.us-east. - Ersetzen Sie
<token>durch das IAM-Token, das Sie zuvor abgerufen haben.
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq
Beachten Sie in der Ausgabe, dass das Feld additionalHeaders.X-Auth-Token dem Benachrichtigungskanal hinzugefügt wird.
{
"notificationChannel":
{
"id": 123,
....
"options": {
"notifyOnOk": true,
"url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud/topics/kafka-java-console-sample-topic/records",
"notifyOnResolve": true,
"additionalHeaders": {
"X-Auth-Token": "123456123456123456123456123465123456"
...
- Richten Sie einen Alert ein, der den Webhook-Benachrichtigungskanal verwendet, den Sie für Event Streams erstellt haben.
Wenn nun ein Alarm von Event Streams ausgelöst wird, können Sie die Details in Ihrer Monitoring-Instanz überprüfen.