监控 CloudWatch Logs 中的特定字符串!

*面店西村(大阪府鹤见区)

大家好!
我是来自Beyond Inc.大阪办公室的拉面大王Hide。
这是我的第六篇帖子。

上次我写了一篇关于如何使用聊天机器人将 CloudWatch 警报通知到 Slack 的文章。
我还写了一篇关于使用名为聊天机器人的便捷工具进行通知的有趣文章,如果您感兴趣,请看看!

使用 AWS Chatbot 将 CloudWatch 警报通知到 Slack!

CloudWatch Logs 中的字符串监控器是什么?

CloudWatch Logs 是 CloudWatch 的一项功能,用于监控 AWS 资源,并允许您轻松地从 Amazon EC2 收集应用程序和访问日志,并将其存储在云端。

由于日志可以保存在云端,因此在需要查看特定日志时可以轻松搜索。
另一个吸引人的特点是,收集的日志可以在一个服务中集中管理,从而减少管理所需的工作量。

其次,字符串监控是一种实时监控应用程序和访问日志等数据的方法,旨在提高业务效率。当它检测到特定格式或特定字符串的输出时,会通知通信工具。这样,即使出现问题(这种情况发生的概率很低),也能及早发现并快速解决问题。

使用 CloudWatch Logs 实现日志监控非常简单,让我们一起来看看具体步骤吧!

配置图

在 EC2 上安装 CloudWatch Logs 代理,该代理会将 EC2 中的日志发送到控制台。

接下来,系统会根据控制台中设置的特定字符串等条件发送警报。查看配置后,似乎并不难,所以我们尽力进行设置。

施工程序

① 创建 IAM 角色

①-①:转到 IAM > 角色,然后单击 [创建角色]。

 

①-②:选择以下选项,然后单击【下一步】

● 可信实体类型:AWS 服务
● 用例:EC2

①-③:选择[CloudWatchFullAccess],然后单击[下一步]

①-④:输入角色名称和描述,然后点击【创建角色】。

 

①-⑤:EC2 > 选择您创建的实例 > 操作 > 安全 > 更改 IAM 角色

①-⑥:选择您刚刚创建的 IAM 角色,然后单击[更新 IAM 角色]。

*如果创建的实例的安全选项卡显示以下内容,则应用程序已完成。

② CloudWatch Logs 代理设置

②-①:登录服务器

②-②:安装 CloudWatch Logs 代理

*如果您使用的是Amazon Linux,可以使用以下命令进行安装:

yum install amazon-cloudwatch-agent

*除Amazon Linux以外的操作系统,其安装方法有所不同。
对于CentOS,安装方法以官方网站

1. 下载 CloudWatch 代理

*下载链接因操作系统而异,请参考此处。

wget https://s3.amazonaws.com/amazoncloudwatch-agent/centos/amd64/latest/amazon-cloudwatch-agent.rpm

2. 安装 CloudWatch 代理

rpm -U ./amazon-cloudwatch-agent.rpm

*此外,以下代理程序已弃用,请按照上述说明进行安装。

yum install awslogs

②-③:启动安装向导

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

②-④:代理设置

== ... EC2 或本地主机? 1. EC2 2. 本地 默认选项:[1]: *选择 1 表示 EC2 1 您计划使用哪个用户运行代理? 1. root 2. cwagent 3. 其他 默认选项:[1]: *如果 root 用户可以接受,请选择 1 1 您是否要启用 StatsD 守护进程? 1. 是 2. 否 默认选项:[1]: *选择 1,因为这是收集自定义指标所必需的 1 您希望 StatsD 守护进程监听哪个端口? 默认选项:[8125] *如果确定,请按 Enter 键 StatsD 守护进程的收集间隔是多少? 1. 10 秒 2. 30 秒 3. 60 秒 默认选项:[1]: *如果您对此满意,请选择 1 1 StatsD 守护进程收集的指标的聚合间隔是多少? 1. 不聚合 2. 10 秒 3. 30 秒 4. 60 秒 默认选项:[4]:*如果您接受此选项,请选择 4。 您是否要监控来自 CollectD 的指标? 警告:必须安装 CollectD,否则代理将无法启动。 1. 是 2. 否 默认选项:[1]:*请选择 2,因为我只使用 CloudWatch Logs。 您是否要监控任何主机指标?例如 CPU、内存等。 1. 是 2. 否 默认选项:[1]:*请选择 2,因为我只使用 CloudWatch Logs。 您是否有任何现有的 CloudWatch Logs Agent(http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html)配置文件要导入以进行迁移? 1. 是 2. 否 默认选项:[2]:*请选择 2,因为没有 CloudWatch Logs 配置文件。 您是否要监控任何日志文件? 1. 是 2. 否 默认选项:[1]:*请选择 1,因为需要 CloudWatchLogs 配置文件 1 日志文件路径:*请输入所需的日志路径 /var/log/messages 日志组名称:*请输入所需的日志组名称 默认选项:[messages] cloudwatchlogs-test 日志流名称:*请输入所需的日志流名称 默认选项:[{instance_id}] /var/log/messages 日志组保留天数(日志组保留期限) 1. -1 2. 1 3. 3 4. 5 5. 7 6. 14 7. 30 8. 60 9. 90 10. 120 11. 150 12. 180 13. 365 14. 400 15. 545 16. 731 17. 1827 18. 2192 19. 2557 20. 2922 21. 3288 22. 3653 默认选项:[1]:*请输入所需的日志保留期限(-1 表示无限制) 1 是否要指定要监控的任何其他日志文件? 1. 是 2. 否 默认选项:[1]:*如果您不想添加配置文件,请选择 2。 2 已成功将配置文件保存到 /opt/aws/amazon-cloudwatch-agent/bin/config.json。当前配置如下:{ "agent": { "run_as_user": "root" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/messages", "log_group_name": "cloudwatchlogs-test", "log_stream_name": "/var/log/messages", "retention_in_days": -1 } ] } } }, "metrics": { "metrics_collected": { "statsd": { "metrics_aggregation_interval": 60, "metrics_collection_interval": 10, "service_address": ":8125" } } } } 请检查以上配置内容。配置文件位于 /opt/aws/amazon-cloudwatch-agent/bin/config.json。如有需要,请手动编辑。是否要将配置存储在 SSM 参数存储中? 1. 是 2. 否 默认选项:[1]:*如果您不需要向 SSM 2 注册,请选择 2 程序现在退出。.

*补充材料

● 参考资料:什么是
StatsD ● 参考资料:CollectD

②-⑤:启动代理

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

②-⑥:检查代理人的状态

systemctl status amazon-cloudwatch-agent

 

● amazon-cloudwatch-agent.service - Amazon CloudWatch Agent 已加载:已加载 (/etc/systemd/system/amazon-cloudwatch-agent.service;已启用;供应商预设:已禁用) 活动:自 2022 年 8 月 5 日星期五 06:33:34 UTC 起处于活动(运行中)状态; 3分46秒前 主进程ID:1352 (amazon-cloudwat) CGroup:/system.slice/amazon-cloudwatch-agent.service mq1352 /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml -envconfig /opt/aws/amazon-cloudwatch-agent/etc/env-config.json -pidfile /opt/aws... 8月5日 06:33:34 ip-172-31-39-31.ap-northeast-1.compute.internal systemd[1]: 已启动 Amazon CloudWatch Agent。 8月5日 06:33:34 ip-172-31-39-31.ap-northeast-1.compute.internal start-amazon-cloudwatch-agent[1352]: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json 不存在或无法读取。跳过。8月5日 06:33:34 ip-172-31-39-31.ap-northeast-1.compute.internal start-amazon-cloudwatch-agent[1352]: I! 检测到 run_as_user...

③ 检查控制台是否已收集数据

③-①:在 CloudWatch > 日志组中检查您指定的日志组,然后单击它。

③-②:确认日志已保存到指定的日志流名称下,然后单击

③-③:检查日志,确认是否已正确收集。

④ 创建指标筛选器

④-① 点击【创建指标筛选器】

④-②:定义滤波器模式

*定义模式的方法有很多种,请参考这里

④-③:测试滤波器图案,如果没有问题,点击【下一步】

*测试方法
1. 选择要测试的日志数据,然后选择 [自定义日志] 或 [日志流名称]。

2. 在 [日志事件消息] 中创建与筛选模式匹配的日志,然后单击 [测试模式]。

3. 一旦测试结果反映出来,整个过程就完成了。

④-④:请填写以下信息

● 筛选器名称:筛选器本身的名称
● 指标命名空间:CloudWatch 将向其发送指标的命名空间名称
● 指标名称:在指定命名空间下创建的指标的名称
● 指标值:发布为指标时的数值
● 默认值:当模式不匹配时发布的指标值。如果留空,则不会发布任何值。

④-⑤:如果没有问题,点击[创建指标筛选器]。

④-⑥:创建完成后即可完成,如下所示

⑤ 设置社交网络服务

⑤-①:点击 SNS > 主题中的【创建主题】

⑤-②:设置以下信息并点击【创建主题】

● 类型:标准型
● 名称/描述:请随意填写

⑤-③:点击【创建订阅】

⑤-④:填写以下信息,然后点击【创建订阅】

● 协议:电子邮件
● 端点:您的电子邮件地址

⑤-⑤:您将收到一封确认邮件,请点击【确认订阅】。

⑤-⑥:当出现以下信息时,即表示已完成。

⑥ 创建 CloudWatch 警报

⑥-①:作为测试,将包含特定字符串的日志输出到服务器上指定的日志文件。

*由于指定了消息,因此使用了日志记录器命令,但任何可以输出日志的命令都可以。
*如果指标过滤器一次都检测不到该指标,则在创建告警时将无法选择该指标,因此这只是一个测试。

日志记录器“错误”

⑥-②:CloudWatch > 警报 > 点击 [创建警报]

⑥-③:选择您创建的命名空间 > 无维度指标 > 您创建的指标名称,然后单击[选择指标]。

⑥-④:设置条件并点击【下一步】

*在以下示例中,如果检测到特定字符串至少一次,则会发出警报。

⑥-⑤:选择您创建的主题,然后单击【下一步】

*由于这是字符串监控,因此不需要恢复通知设置。

⑥-⑥:输入您创建的警报名称,然后单击【下一步】

⑥-⑦:如果设置没有问题,请点击[创建闹钟]。

⑦ 运行检查

⑦-①:作为测试,将包含特定字符串的日志输出到服务器上指定的日志文件。

*由于指定了 messages,我们使用 logger 命令,但任何可以输出日志的命令都可以。

日志记录器“错误”

⑦-②:检查报警器是否处于[报警状态]

⑦-③:检查您是否收到有关警报的电子邮件。

*如果警报邮件已发送到您的电子邮件地址,则该过程已完成。

概括

希望您觉得在 CloudWatch Logs 收集的日志的指标过滤器中设置特定字符串并将其作为警报通知您很容易。

在 AWS 中监控字符串时,您可以使用 CloudWatch 轻松完成,因此请务必尝试使用它进行运维监控!

除了电子邮件,你还可以向 Slack、Teems 和 Chatwork 发送通知。我之前的博客文章中写过如何设置,如果你感兴趣,可以去看看!

非常感谢!

◇ 我尝试将 CloudWatch 警报通知给 Teams 和 Chatwork!

◇ 使用 AWS Chatbot 将 CloudWatch 警报通知到 Slack!

如果您觉得这篇文章有用,请点击【点赞】!
11
加载中...
11票,平均分:1.00/111
24,337
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

隐藏@基础设施工程师

一切都始于一次非常有趣的面试。
我职业生涯中期加入了大阪的系统解决方案部门,
目前负责服务器和云的构建与运维!
我持有LPIC1、AWS SAA和OCI架构师助理认证。

事实上,我超爱拉面,
在大阪已经探访过100多家拉面店了(。-∀-)我正在努力成为Nibi Beyond

我也有推特账号,请关注我哦 (´∇`)
点击右上角的推特图标!!