针对Redshift查询持续时间的CloudWatch警报

0

【以下的问题经过翻译处理】 我在CF模板中定义了以下CloudWatch报警,在查询运行30分钟或更长时间后提醒我。

    Type: AWS::CloudWatch::Alarm  
    Properties:   
      AlarmName: !Sub "awsredshift-${RSClusterName}-QueryDuration"  
      AlarmDescription: Redshift QueryDuration Alarm  
      Namespace: AWS/Redshift  
      MetricName: QueryDuration  
      Dimensions:   
        - Name: ClusterIdentifier  
          Value: !Ref RSClusterName  
        - Name: latency  
          Value: long  
      ActionsEnabled: true  
      AlarmActions:   
        - !Ref TopicARN  
      OKActions:   
        - !Ref TopicARN  
      ComparisonOperator: GreaterThanOrEqualToThreshold  
      DatapointsToAlarm: 1  
      EvaluationPeriods: 1  
      Period: 300  
      Statistic: Average  
      Threshold: 1800000000  
      TreatMissingData: missing  

但是它在没有运行那么长时间的查询时会触发警报,我是否遗漏了什么?

另外,是否有办法自定义报警来嵌入逻辑?我想要获取运行时间较长的查询的SQL文本。是否有办法通过CloudWatch报警实现这一点?如果没有,最好的方法是什么-可能是Lambda?

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,nmakb,

我想你以为的Redshift CloudWatch QueryDuration指标其实并不是它字面上含义。它不是一个查询级别的指标,而是一个按ClusterIdentifier、延迟程度(短、中、长)分组的QueryDuration数据。然后,在你的CloudWatch Alarm中,你将对其在300个周期内进行平均汇总。

另外,我没有看到任何查询ID或任何可以让你将单个指标数据点数据重新关联到源查询的内容。

我认为,使用当前的QueryDuration指标,你能做的最好的事情是在指标上创建一个CloudWatch报警,当阈值被触发时,将操作设置为AWS Lambda,用于查找报警间隔内的超过阈值的查询。最后在Lambda中进行一些处理,例如触发另一个SNS主题或发送电子邮件。

我希望这可以帮助澄清CloudWatch QueryDuration指标的含义,并至少为你提供一个如何构建你要做的事情的想法。

顺颂商祺,

-Kurt

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则