Dieses Plug-in erhält verschiedene Metriken von DynamoDB.
Sie können Metriken in jeder Tabelle und Antwortzeiten in jeder API abrufen.
Table Metrics
Zunächst aus den Metriken jeder Tabelle. Die Statistik in der folgenden Tabelle zeigt, welche Formel zu erhalten ist (Summe ist der Gesamtwert pro Zeiteinheit, Durchschnitt ist der Durchschnittswert pro Zeiteinheit).
Metric Name | Statistics | Detail |
---|---|---|
UserErrors | Sum | Client-Fehler |
SystemErros | Sum | AWS-Seitenfehler(Ich möchte denken, dass es nur wenige geben wird) |
ThrottleRequests | Sum | Anzahl der gedrosselten Anforderungen, die das Limit für bereitgestellte Kapazitätseinheiten erreicht haben |
ReadThrottleEvents | Sum | Lesen Sie Anforderungen, die die Obergrenze der bereitgestellten Kapazitätseinheiten erreicht haben |
WriteThrottleEvents | Sum | Schreiben Sie Anforderungen, die die Obergrenze der bereitgestellten Kapazitätseinheiten erreicht haben |
ProvisionedReadCapacityUnits | Maximum | Anzahl der in der Tabelle angegebenen ProvisionedReadCapacityUnits |
ProvisionedWriteCapacityUnits | Maximum | Anzahl der in der Tabelle angegebenen ProvisionedWriteCapacityUnits |
ConsumedReadCapacityUnits | Maximum | Maximale Anzahl der pro Zeiteinheit verbrauchten Lesekapazitätseinheiten |
ConsumedReadCapacityUnits | Average | Durchschnittliche Anzahl der pro Zeiteinheit verbrauchten Lesekapazitätseinheiten |
ConsumedWriteCapacityUnits | Maximum | Maximale Anzahl der pro Zeiteinheit verbrauchten WriteCapacityUnits |
ConsumedWriteCapacityUnits | Average | Durchschnittliche Anzahl der pro Zeiteinheit verbrauchten WriteCapacityUnits |
about UserErrors
Ich denke, es fühlt sich wie UserErrors an, aber es ist ein Fehler beim Aufrufen von DynamoDB auf der SDK-Seite. Insbesondere, wenn der 4XX-Statuscode zurückgegeben wird.
about Each CapacityUnits
DynamoDB ist eine verteilte Datenbank mit mehreren Shards auf der Rückseite. Die von Ihnen festgelegten CapacityUnits werden jedoch der gesamten Tabelle zugewiesen. Es ist leicht zu glauben, dass es kein Problem gibt, da sich der Splitter proportional zur Größe der Kapazitätseinheiten teilt und skaliert. Ich finde es großartig, dass Sie sich nicht um Skalierung oder Belastung kümmern müssen.
Da CapacityUnits jedoch der Tabelle zugewiesen ist, ist jeder Shard der Wert geteilt durch die Anzahl der Shards. Ich erhalte eine LimitExceededException, obwohl ConsumedReadCapacityUnits das Limit überhaupt nicht erreicht hat! !! !! !! Das kann Passieren.
Dies liegt daran, dass (wenn Sie die Dokumentation richtig lesen, ist sie recht gut geschrieben, aber ...) der Hash-Schlüssel weit verbreitet ist und der Wert hart ist, sodass ein heißer Shard erstellt wird. Sobald es passiert ist, denke ich, dass es ziemlich schwierig ist, es zu beheben, deshalb würde ich es gerne in der Entwurfsphase gut machen, wenn es möglich ist.
Each Operation Metrics
Sie können die Antwortzeit abrufen, wenn die API erfolgreich ist, und die Anzahl der Elemente, die bei der Ausgabe der Bereichsabfrage zurückgegeben werden. Seien Sie beispielsweise vorsichtig, wenn die Scan-API oder die Abfrage-API zu viele Elemente zurückgibt. (Wenn überhaupt, werden Sie anscheinend feststellen, dass sich die Latenz von ELB zuerst verschlechtert hat.)
In Bezug auf ResponseTime gibt es Folgendes:
Für die Anzahl der erworbenen Artikel
es gibt. Beide Werte sind auf Maximum und Durchschnitt ausgelegt.
Entschuldigung, daher werde ich so schnell wie möglich antworten.
Die Optionen sind wie folgt.
Key Name | Default | Require | Detail |
---|---|---|---|
region_name | us-east-1 | No | Name der AWS-Region |
aws_access_key_id | - | Yes | AWS Acces Key ID |
aws_secret_access_key | - | Yes | AWS Secret Access Key |
table_name | - | Yes | Tabellenname von DynamoDB |
hostname | - | Yes | Hostname auf Zabbix(Es ist eine gute Idee, es zuerst zu machen) |
module | - | Yes | Welches Plugin soll man also hier verwendendynamodbIst festgelegt bei |
ignore_metrics | - | No | Wenn es eine Metrik gibt, die Sie nicht erhalten möchten, schreiben Sie sie bitte durch Kommas getrennt. |
ignore_operations | - | No | Wenn es eine Operationsmetrik gibt, die Sie nicht erhalten möchten, trennen Sie sie bitte durch ein Komma. |
about ignore_XXXXX parameter
Wenn es Werte gibt, die Sie für ignore_metrics nicht erhalten möchten (CloudWatch kostet auch Geld, um API über die einmonatige kostenlose Stufe hinaus aufzurufen), trennen Sie diese bitte durch Kommas wie "ignore_metrics = UserErrors, ConsumedWriteCapacityUnits".
Gleiches gilt für ignore_operations. Wenn Sie die BatchWrite- und Scan-API nicht verwenden, schreiben Sie bitte mit ignore_operations = BatchWriteItem, Scan
!
Example
Dies ist eine Beispielkonfigurationsdatei
#Der Abschnittsname kann beliebig sein, aber es ist der Name des Threads, der intern generiert wird. Daher ist es möglicherweise besser, ihn nicht mit anderen zu tragen. Da das Debug-Protokoll einen Thread-Namen hat, verwende ich den Namen der DynamoDB-Tabelle.
[ANYTHING_OK]
# AWS Information
region_name = ap-northeast-1
aws_access_key_id = XXXXXXXXXX
aws_secret_access_key = YYYYYYYYYY
#Bitte geben Sie den Tabellennamen von DynamoDB ein
table_name = YOUR_DYNAMODB_TABLE_NAME
#Hostname auf Zabbix. Aufgrund von Einschränkungen für zabbix frage ich mich, was ich tun soll, wenn es nicht an einen solchen Server gebunden ist, aber ich erstelle und verwende denselben Hostnamen wie den Tabellennamen.
hostname = HOSTNAME_ON_ZBX_SERVER
#Es ist auf dynamodb festgelegt.
module = dynamodb
Es sieht aus wie das!
Recommended Posts