{
  "Resources": {
    "queue": {
      "Type": "AWS::SQS::Queue"
    },
    "Alarm7103F465": {
      "Type": "AWS::CloudWatch::Alarm",
      "Properties": {
        "ComparisonOperator": "GreaterThanOrEqualToThreshold",
        "EvaluationPeriods": 3,
        "Metrics": [
          {
            "Expression": "m1+m2",
            "Id": "expr_1",
            "Label": "Total Messages"
          },
          {
            "Id": "m1",
            "Label": "Visible Messages",
            "MetricStat": {
              "Metric": {
                "Dimensions": [
                  {
                    "Name": "QueueName",
                    "Value": {
                      "Fn::GetAtt": [
                        "queue",
                        "QueueName"
                      ]
                    }
                  }
                ],
                "MetricName": "ApproximateNumberOfMessagesVisible",
                "Namespace": "AWS/SQS"
              },
              "Period": 60,
              "Stat": "Average"
            },
            "ReturnData": false
          },
          {
            "Id": "m2",
            "Label": "NotVisible Messages",
            "MetricStat": {
              "Metric": {
                "Dimensions": [
                  {
                    "Name": "QueueName",
                    "Value": {
                      "Fn::GetAtt": [
                        "queue",
                        "QueueName"
                      ]
                    }
                  }
                ],
                "MetricName": "ApproximateNumberOfMessagesNotVisible",
                "Namespace": "AWS/SQS"
              },
              "Period": 60,
              "Stat": "Average"
            },
            "ReturnData": false
          }
        ],
        "Threshold": 100
      }
    },
    "DashCCD7F836": {
      "Type": "AWS::CloudWatch::Dashboard",
      "Properties": {
        "DashboardBody": {
          "Fn::Join": [
            "",
            [
              "{\"widgets\":[{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Total messages in queue\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"annotations\":{\"alarms\":[\"",
              {
                "Fn::GetAtt": [
                  "Alarm7103F465",
                  "Arn"
                ]
              },
              "\"]},\"yAxis\":{}}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":6,\"properties\":{\"view\":\"timeSeries\",\"title\":\"More total messages in queue with alarm annotation\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[{\"label\":\"Total Messages\",\"expression\":\"m1+m2\"}],[\"AWS/SQS\",\"ApproximateNumberOfMessagesVisible\",\"QueueName\",\"",
              {
                "Fn::GetAtt": [
                  "queue",
                  "QueueName"
                ]
              },
              "\",{\"label\":\"Visible Messages\",\"period\":60,\"visible\":false,\"id\":\"m1\"}],[\"AWS/SQS\",\"ApproximateNumberOfMessagesNotVisible\",\"QueueName\",\"",
              {
                "Fn::GetAtt": [
                  "queue",
                  "QueueName"
                ]
              },
              "\",{\"label\":\"NotVisible Messages\",\"period\":60,\"visible\":false,\"id\":\"m2\"}],[\"AWS/SQS\",\"ApproximateNumberOfMessagesVisible\",\"QueueName\",\"",
              {
                "Fn::GetAtt": [
                  "queue",
                  "QueueName"
                ]
              },
              "\",{\"label\":\"Visible Messages\",\"period\":10,\"yAxis\":\"right\"}],[\"AWS/SQS\",\"ApproximateNumberOfMessagesNotVisible\",\"QueueName\",\"",
              {
                "Fn::GetAtt": [
                  "queue",
                  "QueueName"
                ]
              },
              "\",{\"label\":\"NotVisible Messages\",\"period\":30,\"yAxis\":\"right\"}]],\"annotations\":{\"horizontal\":[{\"label\":\"Total Messages >= 100 for 3 datapoints within 3 minutes\",\"value\":100,\"yAxis\":\"left\"}]},\"yAxis\":{}}},{\"type\":\"metric\",\"width\":6,\"height\":3,\"x\":0,\"y\":12,\"properties\":{\"view\":\"singleValue\",\"title\":\"Current total messages in queue\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[{\"label\":\"Total Messages\",\"expression\":\"m1+m2\"}],[\"AWS/SQS\",\"ApproximateNumberOfMessagesVisible\",\"QueueName\",\"",
              {
                "Fn::GetAtt": [
                  "queue",
                  "QueueName"
                ]
              },
              "\",{\"label\":\"Visible Messages\",\"period\":60,\"visible\":false,\"id\":\"m1\"}],[\"AWS/SQS\",\"ApproximateNumberOfMessagesNotVisible\",\"QueueName\",\"",
              {
                "Fn::GetAtt": [
                  "queue",
                  "QueueName"
                ]
              },
              "\",{\"label\":\"NotVisible Messages\",\"period\":60,\"visible\":false,\"id\":\"m2\"}]]}}]}"
            ]
          ]
        },
        "DashboardName": "MyMathExpressionDashboardName"
      }
    }
  }
}