簡體   English   中英

我可以使用自定義 CloudWatch 指標做什么?

[英]What can I use custom CloudWatch metrics for?

我可以通過創建自定義 CloudWatch 指標來做什么? 閱讀文檔后,我無法理解在 CloudWatch 中創建自定義指標背后的想法。

我創建了一個新指標:

mon-put-data --metric-name MyMetric --namespace "MyService" --value 2 --timestamp 2011-03-14T12:00:00.000Z  

我可以從這個指標中得到什么? 我無法理解自定義指標。

使用自定義指標的常見案例和示例是關於實例內存報告。

網絡上有幾個關於自定義CloudWatch指標的代碼。 我發現這對亞馬遜論壇非常有用。

#!/bin/bash

export AWS_CLOUDWATCH_HOME=/home/ec2-user/CloudWatch-1.0.12.1
export AWS_CREDENTIAL_FILE=$AWS_CLOUDWATCH_HOME/credentials
export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com
export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/jre

# get ec2 instance id
instanceid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`

memtotal=`free -m | grep 'Mem' | tr -s ' ' | cut -d ' ' -f 2`
memfree=`free -m | grep 'buffers/cache' | tr -s ' ' | cut -d ' ' -f 4`
let "memused=100-memfree*100/memtotal"

mon-put-data --metric-name "FreeMemoryMBytes" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memfree" --unit "Megabytes"

mon-put-data --metric-name "UsedMemoryPercent" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memused" --unit "Percent"

來源: https//forums.aws.amazon.com/message.jspa?messageID = 266893

Amazon CloudWatch提供可靠,可擴展且靈活的監控解決方案,您可以在幾分鍾內開始使用。 您不再需要設置,管理或擴展自己的監控系統和基礎架構。 使用Amazon CloudWatch,您可以根據需要輕松監控指標數據。 Amazon CloudWatch允許您以編程方式檢索監控數據,查看圖表和設置警報,以幫助您根據雲環境的狀態進行故障排除,發現趨勢並采取自動操作。

這是一個類似於其他Amazon Web Services的Web服務。 您可以通過API以及控制台使用它。 您還可以將其與簡單通知服務(SNS)等其他服務集成,甚至可以自動擴展實例。

自定義度量標准機制的想法是允許您將AWS提供的內置度量標准擴展到AWS無法訪問的度量標准(如內存和磁盤狀態),或者與您的業務相關(大小為購買,用戶人口...)。

CloudWatch是可擴展且可靠的服務,您無需安裝或管理。

另一個重要功能是能夠為您的指標設置警報。 例如,您可以在達到指標的閾值時向您發送電子郵件(例如,您每天銷售超過1,000件商品)。

現在,通過添加Lambda,您可以更多地選擇使用CloudWatch Metrics和Alarms。 您可以根據自定義指標將Lambda函數訂閱到警報,並自動實時響應此類事件。 請參閱此處以獲取在Elastic Container Service(ECS)中自動擴展Docker環境的示例: https//aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and -aws -拉姆達/

CloudWatch的想法是從運行的雲資源(服務器,應用程序,數據庫等)收集指標,並在其他資源之間共享此信息,以便讓他們做出決策。 例如,您的應用程序可能會生成以下指標:

  • 內存中隊列的大小
  • 可用於JVM的內存
  • 磁盤空間可用於緩存
  • 用戶目前有效
  • 每分鍾交易
  • $每小時銷售額

在極端情況下,您甚至可以使用CloudWatch重現Google Analytics。 它是收集統計數據並分發統計數據的便捷工具。

我遇到過這種特殊情況,其中自定義指標非常有用:我有一個應用程序有幾個實例,我正在向 CloudWatch 發送日志(每個實例有不同的日志流)。 然后我需要根據錯誤日志創建一些警報。 問題是日志的現有指標是:“IncomingLogEvents”和“IncomingBytes”,這些都沒有幫助我。

在我的解決方案(下面的 Python 代碼)中,我創建了一個指標來計算每個 stream 中的錯誤數:

我記錄的消息的結構是

log = {
    'log_group': '<log_group>',
    'log_stream': '<instance_log_stream>',
    'level': '<levelname>',  # "level" could be INFO|WARNING|ERROR
    'logger': '<instance name>',
    'message': '<message>'
}

度量過濾器的創建

請注意,我正在創建維度以對每個特定實例 stream 的指標進行分組/分隔。這些維度的值與消息中的字段相關。

import boto3

client = boto3.client('logs')

client.put_metric_filter(
       logGroupName='<log_group>',
       filterName='error-logs-count',
       filterPattern="{$.level = \"ERROR\"}",
       metricTransformations=[
            {
                'metricNamespace': '<namespace>',
                'metricName': 'IncomingErrorLogs',
                'metricValue': '1',
                'dimensions': {
                    'LogGroupName': '$.log_group',
                    'StreamName': '$.log_stream'
                },
                'unit': 'Count'
            },
        ])

最終指標

這樣,當某些 instance_stream 中出現錯誤時,我可以使用創建的指標創建警報。

在此處輸入圖像描述

總之,自定義指標可能對您想從日志中的消息中衡量的任何特定事物有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM