簡體   English   中英

基於來自 AWS Cloudwatch 日志組的應用程序錯誤日志的警報

[英]Alerts based on Application error logs from AWS Cloudwatch log groups

我有一個 Ruby on Rails 應用程序在 AWS EC2 內運行,它將所有應用程序日志推送到 cloudwatchlog 組。 現在的任務是每天從 cloudwatch 日志中獲取警報,報告一天產生了多少錯誤代碼。

例子:

如果我的應用程序給出 10 個“500 內部服務器錯誤”、5 個“403 禁止錯誤”。 我應該從 AWS 服務獲得一個 email,“您的應用程序生成了 10 - 500 個錯誤代碼 5 - 403 個錯誤代碼。”

I think we can achieve this with a lambda function and AWS SNS service, but dont know how to code my lambda function to work in this manner.

I need a lambda function code to store the error code counts , After capturing the data i can run lambda function daily at a specific time to send an email.

請幫助。

提前致謝:)

EC2前面有什么樣的負載均衡器; 如果有的話?

Cloudwatch 已經包含負載均衡器的以下指標:

HTTPCode_Target_2XX_Count、HTTPCode_Target_3XX_Count、HTTPCode_Target_4XX_Count、HTTPCode_Target_5XX_Count 請參閱 - https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.ZFC35FDC70D5C796

請求這些指標可能比解析應用程序日志文件和計算結果更容易。

要使用 ruby 的 aws-sdk 請求這些統計信息,下面的代碼應該可以幫助您。 您需要根據您的需要和設置對其進行調整,因此請參閱我在答案底部鏈接的文檔:

metric = Aws::CloudWatch::Metric.new 'AWS/ApplicationELB', 'HTTPCode_ELB_4XX_Count'

stats = metric.get_statistics({
  dimensions: [
    {
      name: "LoadBalancerName",
      value: "'YOUR_ALB_NAME'",
    },
  ],
  start_time: Time.now - 3600 * 24 * 30,
  end_time: Time.now,
  period: 3600 * 24 * 30,
  unit: "Seconds", # accepts Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None
  statistics: ["Average"], # accepts SampleCount, Average, Sum, Minimum, Maximum
})

有關您可以請求的統計信息的詳細信息,請參閱https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html

and https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/CloudWatch/Metric.html for use of the ruby SDK

如果您將 go 連接到 AWS 控制面板,您還可以控制這些指標,您可能應該從這個開始,以了解您在 SDK 調用中使用的一些參數。

  1. Go 到 AWS 控制面板中的 Cloudwatch 服務
  2. Select 左側的指標
  3. 來自 AWS 命名空間部分的 Select ELB
  4. Select 通過命名空間同時獲取所有負載均衡器信息,或 select 通過負載均衡器來縮小您的指標顯示。
  5. Select 您想要可視化的狀態代碼。

這是獲取狀態碼計數的方法,並且可以構成每 30 天運行一次的 ruby lambda function 的基礎。 然后如何 email 這對你自己來說可能是一個完整的問題,但是網上有很多關於如何發送 email 和 Ruby 的教程 - 從那里開始。

暫無
暫無

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

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