适用于应用程序错误的AWS警报

监视对于任何实际应用都是关键的。 您必须知道正在发生的事情,并在发生问题时实时得到警报。 AWS拥​​有CloudWatch,可以自动为您提供大量指标。 但是,您必须定义一些自己的东西。 然后,您需要定义适当的警报。

在这里,我将重点介绍小时:

  • 大量应用错误
  • 大量的应用警告
  • 负载均衡器上出现大量5xx错误
  • 负载均衡器上出现大量4xx错误

首先,先决条件:

  • 您需要使用CloudFormation自动执行所有操作。 您可以手动创建所有这些内容,但是自动化是一大优势
  • 如果使用CloudFormation,则最好有一个用于配置警报的子堆栈
  • 您需要使用CloudWatch日志收集日志

如果您不使用CloudWatch日志,请使用以下简单的配置文件和脚本来启用它们:

 { "agent" : { "metrics_collection_interval" : 10, "region" : "eu-west-1" , "logfile" : "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log" }, "logs" : { "logs_collected" : { "files" : { "collect_list" : [ { "file_path" : "{{logPath}}" , "log_group_name" : "{{logGroupName}}" , "log_stream_name" : "{instance_id}" , "timestamp_format" : "%Y-%m-%d %H:%M:%S" } ] } } }  } 
 # install AWS CloudWatch monitor  mkdir cloud- watch -agent  cd cloud- watch -agent  wget https: //s3 .amazonaws.com /amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent .zip  unzip AmazonCloudWatchAgent.zip  . /install .sh  aws s3 cp s3: // $BUCKET_NAME /cloudwatch-agent-config .json /var/config/cloudwatch-agent-config .json  sed -i -- 's|{{logPath}}|/var/log/application.log|g' /var/config/cloudwatch-agent-config .json  sed -i -- 's|{{logGroupName}}|app_node|g' /var/config/cloudwatch-agent-config .json  sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file : /var/config/cloudwatch-agent-config .json -s 

现在,您必须定义两件事:记录指标和警报。 下面的cloudformation代码创建了两个:

 "HighAppErrorsNotification" : { "Type" : "AWS::CloudWatch::Alarm" , "Properties" : { "AlarmActions" : [ { "Ref" : "NotificationTopicId" } ], "InsufficientDataActions" : [ { "Ref" : "NotificationTopicId" } ], "AlarmDescription" : "Notify if there are too many application errors" , "ComparisonOperator" : "GreaterThanOrEqualToThreshold" , "EvaluationPeriods" : "1" , "MetricName" : "ApplicationErrors" , "Namespace" : "LogMetrics" , "Period" : "900" , "Statistic" : "Sum" , "Threshold" : "5" , "TreatMissingData" : "ignore" } }, "ErrorMetricFilter" : { "Type" : "AWS::Logs::MetricFilter" , "Properties" : { "LogGroupName" : "app_node" , "FilterPattern" : "ERROR" , "MetricTransformations" : [ { "DefaultValue" : 0, "MetricValue" : "1" , "MetricNamespace" : "LogMetrics" , "MetricName" : "ApplicationErrors" } ] } }, 

如果需要手动执行此操作,请转到CloudWatch日志主页 ,选择日志组(app_node),然后使用顶部的“创建指标筛选器”按钮。 它允许您指定要查找的模式(在这种情况下为“ ERROR”)。 准备就绪后,可以通过“警报”->“创建警报”在此基础上创建警报。 按名称查找指标并选择它以触发警报(在上面的示例中,如果在900秒内有5个以上的错误,则会触发警报)

然后,您可以为警告创建相同的警报(查找模式:“ WARN”)。 阈值可能会更高,例如10或20。但这取决于您的应用程序日志记录模式。

然后是错误5xx负载均衡器警报。 在CloudFormation中,它看起来像这样:

 "TooMany5xxErrorsWebAppAlarmNotification" : { "Type" : "AWS::CloudWatch::Alarm" , "Properties" : { "AlarmActions" : [ { "Ref" : "NotificationTopicId" } ], "InsufficientDataActions" : [ { "Ref" : "NotificationTopicId" } ], "AlarmDescription" : "Notify if there are too many 5xx errors" , "ComparisonOperator" : "GreaterThanOrEqualToThreshold" , "Dimensions" : [ { "Name" : "LoadBalancer" , "Value" : { "Ref" : "WebAppALBId" } } ], "TreatMissingData" : "notBreaching" , "EvaluationPeriods" : "1" , "MetricName" : "HTTPCode_Target_5XX_Count" , "Namespace" : "AWS/ApplicationELB" , "Period" : "60" , "Statistic" : "Sum" , "Threshold" : "2" } } 

您可以再次手动创建- 在警报的指标选择屏幕中查找HTTPCode_Target_5XX_Count指标。 您在那里有几个选项,最直接的是选择每个AppELB指标。 同样,相同的方法可以用于4xx错误(HTTPCode_Target_5XX_Count)。

使用CloudFormation(甚至手动)运行它并不像看起来那样简单。 度量标准名称,名称空间和值的正确组合并不明显,并且相关文档并不是弹出的第一件事。 因此,我决定分享一些可行的方法,因为在达到该状态之前可能需要花费一些时间进行试验。

但是,即使在CloudFormation或AWS上下文之外,也必须在大量应用程序错误,警告和HTTP错误的情况下进行监视和警报。 推荐自动创建这些警报。

翻译自: https://www.javacodegeeks.com/2020/04/aws-alarms-for-application-errors.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

addcslashes php,php addcslashes函数怎么用

php addcslashes函数返回在指定字符前添加反斜杠的字符串。其语法是addcslashes(string,characters),参数string是必须的,规定要转义的字符串,characters是必须,规定要转义的字符或字符范围。addcslashes函数怎么用?作…

struct类型重定义 不同的基类型_C++构造数据类型

结构体(struct)定义:结构体是一个数据类型,是由多个不同类型的数据组成的数据集合。关键字为:struct 。优点:大大减少程序代码的离散性,使程序代码阅读更加符合逻辑。语法:struct 结构体类型名{ 成员类型 成…

卡夫卡队列_卡夫卡编年史队列基准

卡夫卡队列总览 最近,我被要求比较《卡夫卡》和《编年史》的性能。 没有两个产品是完全一样的,要进行公平的比较并不容易。 我们可以尝试运行类似的测试,看看我们得到了什么结果。 该测试基于Apache Kafka性能结果 。 测试使用了什么&#…

php zip怎么安装,php如何安装zip模块?(方法介绍)

php 安装zip模块为php安装zip扩展wget http://pecl.php.net/get/zip-1.13.5.tgz tar -zvxf zip-1.13.5.tgz cd zip-1.13.5 /home/xxx/php/bin/phpize出现错误:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment va…

vs如何写多线程_java中的多线程的示例

在讨论多线程之前,让我们先讨论线程。线程是进程中轻量级的最小部分,可以与同一进程的其他部分(其他线程)并发运行。线程是独立的,因为它们都有独立的执行路径,这就是为什么如果一个线程中发生异常,它不会影响其他线程…

OCA第4部分中的Java难题

在Java Puzzlers的第四部分中,我们有一些与char类型有关的东西。 public class Puzzler { public static void main(String[] args){ char myChar a ; myChar; System.out.println(myChar); } } 您可能已经猜到了。 它将打印“ b”,其原因是char类型是…

matlab mex路径,使用matlab进行mex编译时的路径问题mexopts

matlab和vs 进行混合编程时总需要使用matlab编译mexFunction.cpp文件。这些文件免不了使用include下的*.h和lib下的*.lib文件。举matlab和vs 进行混合编程时总需要使用matlab编译mexFunction.cpp文件。这些文件免不了使用include下的*.h和lib下的*.lib文件。举例说明&#xff0…

python怎么运行ln函数_Python基础篇(五)

bool用于判断布尔值的结果是True还是False>>> bool("a")True>>> bool(3)True>>> bool("")False>>> bool(0)FalsePython中的elif类似于Java中的elseif>>> number (int)(input("input a number: ")…

hystrix应用 博客_用Hystrix保护您的应用程序

hystrix应用 博客在先前的帖子http://www.javacodegeeks.com/2014/07/rxjava-java8-java-ee-7-arquillian-bliss.html中,我们讨论了微服务以及如何使用(RxJava)的Reactive Extensions编排微服务。 但是,如果一项或多项服务因已停止…

python除法函数一般如何命名_关于python:当用于除法时,’/’和’//’之间有什么区别?...

使用一个对另一个有好处吗?在Python2中,它们似乎都返回相同的结果:>>> 6/32>>> 6//32请参考整数除法的问题,因为引入了//运算符进行整数除法。在python 3.0中,5 / 2将返回2.5,5 // 2将返…

艾默生变频器报警PHP,艾默生ct变频器报警ou 这个CT的变频器报警UU怎么解决?

1, 这个CT的变频器报警UU怎么解决?(1) 控制板Q1(15050026)坏。(2) 7840坏:在变频器通电时,用直流档,黑接5脚,红分别接6,7,8脚,值为2.5,2.5,5为正常,否则7840坏。(3) 小板坏:在变频器…

Project Reactor展开方法

最近,我的一位同事向我介绍了Project Reactor类型的expand运算符,在这篇文章中,我想介绍几种使用它的方式。 展开分页结果 考虑在名为City的模型上基于Spring Data的存储库: import org.springframework.data.jpa.repository.Jpa…

同时买票是怎么实现的_去巴黎玩怎么买地铁票最划算?| 巴黎最全交通攻略

次票、天票、机场票……傻傻分不清楚。不会法语怎么办?什么时候买有优惠?看这一篇全知道​​巴黎作为国际大都市,交通还是非常方便的。基本上80%的巴黎景点都能坐地铁到达,就在我们平常所说的小巴黎里。整个巴黎岛(Ile…

php输入地址查询,PHP查询用户IP所在地址

原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/3042.html关键词:IP所在地址 IP地址 PHP获取ip地址相关内容:获取IP所处位置的Shell代码:https://www.myzhenai.com.cn/post/2917.htmlWordPress获取当前浏览…

javafx css_JavaFX技巧13:研究Modena CSS文件

javafx css到目前为止,这是最简单,最短的提示。 如果要执行以下任何操作: 了解如何使用CSS 使您的自定义控件看起来像标准控件 重用标准控件使用的SVG路径图形(例如,滚动条箭头) 弄清楚如何浏览标准控件…

python彩票数据分析案例_天津Python人工智能课程

Python人工智能课程介绍人工智能主要致力于计算机视觉,自然语言处理与语音识别三大领域!其基础与核心都是机器学习,当下AI时代各大行业巨头公司都在争相追逐这些热门领域,创业公司更是层出不穷,人工智能工程师的需求量…

swig模板 PHP,如何使用nodejs前端模板引擎swig

这次给大家带来如何使用nodejs前端模板引擎swig,使用nodejs前端模板引擎swig的注意事项有哪些,下面就是实战案例,一起来看一下。相对于jade,我还是更喜欢swig前端模板引擎,jade虽然语法简练高效了不少,但是…

jaxb_JAXB –新手的观点,第2部分

jaxb在本系列的第1部分中,我讨论了使用JAXB和JPA将数据从XML文件加载到数据库中的基础知识。 (如果需要使用JSON而不是XML,则相同的想法应转化为类似Jackson的工具。)该方法是使用共享域对象,即,一组带有描…

redis是什么_什么是Redis?为什么我们要用Redis?

前言当结束Java和数据库的学习以后,你就会接触到Redis这个词,我第一次听到的时候脑海里就会浮现这两个问题:什么是Redis?为什么我们要用Redis?我了解完以后,写出来帮助大家能够更快的认识它。我们先来看它的…

php strpos无效,簡單的PHP strpos功能不起作用,為什么?

Why isnt this standalone code working:為什么這個獨立代碼不起作用:$link https://google.com;$unacceptables array(https:,.doc,.pdf, .jpg, .jpeg, .gif, .bmp, .png);foreach ($unacceptables as $unacceptable){if (strpos($link, $unacceptable) true) {…