针对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
EXPERTE
gefragt vor 6 Monaten6 Aufrufe
1 Antwort
0

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

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

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

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

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

顺颂商祺,

-Kurt

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen