Wie kann ich benutzerdefinierte Metriken an CloudWatch übertragen?

Lesedauer: 3 Minute
0

Wie kann ich benutzerdefinierte Metriken an Amazon CloudWatch übertragen?

Kurzbeschreibung

AWS-Services übertragen standardmäßig Datenpunkte an CloudWatch. Es kann jedoch Fälle geben, in denen Sie die Leistung Ihrer Ressourcen auf der Grundlage von Kennzahlen kalibrieren müssen, die von AWS-Services nicht unterstützt werden. In diesen Fällen können Sie mithilfe des einheitlichen CloudWatch-Agenten oder der API benutzerdefinierte Metriken an CloudWatch übertragen.

Wichtig: Benutzerdefinierte Metriken werden je nach Speicherplatz und API-Nutzung berechnet.

Behebung

Übertragen Sie benutzerdefinierte Metriken mithilfe des CloudWatch-Agenten

Der vereinheitlichte CloudWatch-Agent sammelt Metriken auf Systemebene und sendet sie als benutzerdefinierte Metriken an CloudWatch. Sie können den Agenten verwenden, um benutzerdefinierte Metriken von folgenden Quellen zu übertragen:

  • Linux- oder Windows-Server
  • Amazon Elastic Compute Cloud (Amazon EC2) -Instances oder lokale Server

Informationen zu Linux finden Sie in der Liste der unterstützten Metriken.

Beispiel für einen Metrikblock der Agentenkonfigurationsdatei für Festplattenmetriken (Linux):

"disk":
    {
        "measurement": [

          "used_percent"
        ],
        "resources": [

          "*"
        ],
        "drop_device":
        true
      }

Für Windows können Sie in der Agentenkonfigurationsdatei auf jeden im Windows-Leistungsmonitor genannten Leistungsindikator verweisen.

Beispiel für einen metrischen Block der Agentenkonfigurationsdatei für Processor Counter (Windows):

"Processor": {
        "measurement": [
          {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"},
          "% Interrupt Time",
          "% User Time",
          "% Processor Time"
        ],
        "resources": [
          "*"
        ],
        "append_dimensions": {
          "d1": "win_foo",
          "d2": "win_bar"
        }
      }

Sie können auch die Protokolle „StatsD“ und „collectd“ verwenden, um benutzerdefinierte Metriken aus Ihren Anwendungen oder Diensten abzurufen. Anschließend werden die Metriken an den Agenten weitergegeben. StatsD wird sowohl auf Linux- als auch auf Windows-Servern unterstützt. collectd wird nur auf Linux-Servern unterstützt. Um diese Protokolle zu verwenden:

1.    Installieren Sie den CloudWatch Unified Agent.

2.    Weisen Sie der Instance mit CloudWatch-Berechtigungen eine Rolle oder Anmeldeinformationen zu.

3.    Erstellen Sie die CloudWatch-Agent-Konfigurationsdatei.

4.    Starten Sie den Agenten.

Push benutzerdefinierter Metriken mithilfe von PutMetricData

Wenn Ihr Anwendungsfall die Verwendung des CloudWatch Unified Agent nicht unterstützt, können Sie die PutMetricData-API verwenden, um benutzerdefinierte Metriken an CloudWatch zu übertragen.

Um beispielsweise Verbindungen für einen bestimmten Port als benutzerdefinierte Metrik zu übertragen, können Sie die Werte lokal abrufen und in der API übertragen:

total_conn=$(netstat -an | grep <port> | wc -l)

aws cloudwatch put-metric-data   --namespace "totalconn"   --metric-name <port> --dimensions Instance=<InstanceId> --value $  total_conn

Ebenso können Sie AWS-SDKs verwenden, um die PutMetricData-API zu verwenden und benutzerdefinierte Metriken an CloudWatch zu senden. Erstellen Sie ein lokales Skript, das regelmäßig ausgeführt wird, um benutzerdefinierte Metriken zu senden. Die API ist aus den folgenden Gründen optimal für die Übertragung verschiedener Metriken und mehrerer Werte:

  • Sie können bis zu 1.000 verschiedene Metriken in einer einzigen API verwenden.
  • Mit der Methode Values and Counts können Sie mit einer PutMetricData-Anfrage bis zu 150 Werte pro Metrik veröffentlichen.
  • Sie können bis zu 30 Dimensionen pro Metrik verwenden.
  • Jede PutMetricData-Anfrage ist für HTTP-POST-Anfragen auf 1 MB begrenzt.

Anstatt beispielsweise für jede Metrik einen separaten API-Aufruf zu tätigen, können Sie mehrere Metriken mithilfe eines einzigen API-Aufrufs pushen:

aws cloudwatch put-metric-data --namespace "Usage Metrics" --metric-data file://metric.json

wobei metric.json ist:

[
  {
    "MetricName": "DiskMetric",
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  },
  {
    "MetricName": "MemoryMetric",

    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  }
]

Dieser Ansatz reduziert in der Regel die Kosten, da benutzerdefinierte Metriken auf der Grundlage der Anzahl der APIs und des Speichers berechnet werden. Dieser Ansatz könnte auch dazu beitragen, die Drosselung der PutMetricData-API zu reduzieren.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren