脚本错误和安全警报怎么解决_适用于应用程序错误的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/331383.shtml

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

相关文章

java平台脚本+java编译器API

【0】README 0.1)本文文字描述转自 core java volume 2, 旨在学习 java平台脚本java编译器API 的 基础知识; ------------------------------------------------------------------------------ 【1】java平台的脚本 1)脚本语…

Java 多线程总结

一、多线程实现方式 (1)继承Thread类,覆盖run方法 (2)实现Runnable接口,覆盖run方法,将对象传人Thread对象中实现Runnable接口比继承Thread类所具有的优势: 1)适合多个相…

古巴比伦乘法_古巴:为生产做准备

古巴比伦乘法“它可以在我的本地机器上运行!” 如今,它听起来像模因,但是“开发环境与生产环境”的问题仍然存在。 作为开发人员,您应始终牢记,您的应用程序有一天将在生产环境中开始运行。 在本文中,我们将…

java编译器API——使用编译工具

【0】README 0.1)以下内容转自: http://suntips.iteye.com/blog/69002 0.2)for basic java compiler API, please visit http://blog.csdn.net/pacosonswjtu/article/details/50718494 1)当你需要更好的处理这些结果时,你可以使…

Java 线程同步总结

一、synchronized(1)synchronized方法 (2)synchronized块 二、Lock 注意:及时释放Lock锁,否则会出现死锁,通常在finally代码释放锁 (1)ReentrantLock 实现…

aws es方案_AWS Elasticsearch后模式

aws es方案碰巧我们在SaaS版本的LogSentinel上遇到了生产问题–我们的Elasticsearch停止了对新数据编制索引。 由于Elasticsearch只是辅助存储,因此没有数据丢失,但这给我们的客户带来了一些问题(他们无法在其仪表板上看到实时数据&#xff0…

java注解总结

【0】README 0.1)本文主要对 java 注解做总结; 【1】处理注解的级别 level1) 在运行期级别处理注解: http://blog.csdn.net/pacosonswjtu/article/details/50719361level2)在源码级别处理注解: http://b…

Java 类加载总结

一、类加载过程 装载链接验证准备解析初始化二、类初始化情况 1)创建类的实例,也就是new一个对象 2)访问某个类或接口的静态变量,或者对该静态变量赋值 3)调用类的静态方法 4)反射(Class.…

maven依赖管理_依赖管理和Maven

maven依赖管理Maven伟大而成熟。 几乎所有事物都总有解决方案。 您可能在组织项目上遇到的主要情况是依赖管理。 而不是每个项目都具有自己的依赖关系,您需要一种集中的方式来继承那些依赖关系。 在这种情况下,您可以在父舞会上声明托管依赖项。 在我的…

JavaBean 持久化

【0】README 0.1)本文文字描述转自 core java volume 2,旨在学习 JavaBean 持久化 的基础知识; 0.2)本文所有源代码荔枝均为原创; 0.3) for complete souce code, please visit https://github.com/pa…

apache kafka_Apache Kafka消费者再平衡

apache kafka消费者重新平衡决定哪个消费者负责某个主题的所有可用分区的哪个子集。 例如,您可能有一个包含20个分区和10个使用者的主题。 在重新平衡结束时,您可能希望每个使用者都从2个分区中读取数据。 如果关闭了这些使用者中的10个,则可…

Java 注解总结

一、注解定义 注解早在J2SE1.5就被引入到Java中,主要提供一种机制,这种机制允许程序员在编写代码的同时可以直接编写元数据。 二、元注解 Target 说明了被修饰的注解的应用范围,也就是被修饰的注解可以用来注解哪些程序元…

编译原理三大经典书籍(龙书 虎书 鲸书)

以下内容转自: http://blog.csdn.net/skymingst/article/details/7436892 1、龙书(Dragon book) 英文名:Compilers: Principles,Techniques,and Tools 作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman 中文名&…

两个时间之间是多少小时_那是两个小时我不会回来

两个时间之间是多少小时正如我之前关于linting主题所说的 ,花时间修改代码的好处很有限,因为自动工具告诉您这样做。 更糟糕的是,这些工具并非万无一失。 例如,我们一直在针对完美无害的try-with-resources构造周围的SpotBugs警告…

java的类载入器

【0】README 0.1)本文文字转自: 深入剖析tomcat, 旨在 理解 jvm 的类载入器; 【1】 jvm的类载入器相关 1)jvm 使用了3种类载入器来载入所需要的类:分别是引导类载入器(bootstrap class load…

Java 代理总结

一、代理 为其他对象提供一种代理以便控制对这个对象的访问。 (1)静态代理 (2)动态代理 1)JDK自带的动态代理 2)javaassist字节码操作库实现 3)CGLIB 4) ASM(底层…

分解因数 递归_递归分解WAR文件

分解因数 递归抽象 是否曾经需要分解WAR文件以及分解WAR文件中的所有JAR文件? 是的,我也是! 我写了ferris-war-exploder来爆炸: 一个JAR文件 一个WAR文件,它找到的每个JAR文件也会爆炸。 包含每个JAR文件&#xff…

jvm(2)-java内存区域

【0】README 0.1)本文转自 深入理解jvm, 旨在学习 java内存区域 的基础知识; 【1】运行时数据区域 1)jvm 所管理的内存将会包括以下几个运行时数据区域 1.1)方法区;(线程共享) 1.2&…

Java Socket编程总结

一、网络API InetAddress     用于标识网络上的硬件资源,主要是IP地址 URL         统一资源定位符,通过URL可以直接读取或写入网络上的数据Sockets      使用TCP协议实现的网络通信Socket相关的类Datagram     使用UDP协议&am…

java插入排序_Java程序要插入排序

java插入排序Java程序插入示例的排序。 显示了示例仿真以及时间复杂度。 插入排序是一种简单的排序算法,可以一次构建一个最终的排序数组(或列表)。 它比冒泡排序有效得多,并且在大型列表上的效率比快速排序 ,堆排序或…