在 python 中使用 boto3 查询 cloudwatch 日志中的不同值

2024-01-14

我有一个 lambda 函数,可以将指标写入Cloudwatch。在写入指标的同时,它会在日志组中生成一些日志。

INFO:: username: [email protected] /cdn-cgi/l/email-protection ClinicID: 7667 nodename: MacBook-Pro-2.local

INFO:: username: [email protected] /cdn-cgi/l/email-protection ClinicID: 7669 nodename: MacBook-Pro-3.local

INFO:: username: [email protected] /cdn-cgi/l/email-protection ClinicID: 7668 nodename: MacBook-Pro-4.local

INFO:: username: [email protected] /cdn-cgi/l/email-protection ClinicID: 7667 nodename: MacBook-Pro-5.local

INFO:: username: si[email protected] /cdn-cgi/l/email-protection ClinicID: 7667 nodename: MacBook-Pro-2.local

我需要一种有效的方法来获得独特的价值观 of nodename对于给定的ClinicId。例如我传入7667 for ClinicId我期望

['MacBook-Pro-2.local', 'MacBook-Pro-5.local']

这是我尝试过的:

 query = "fields @timestamp, @message | parse @message \"username: * ClinicID: * nodename: *\" as username, ClinicID, nodename | filter ClinicID = "+ clinic_id

 start_query_response = client.start_query(
        logGroupName=log_group,
        startTime=int(time.mktime((Util.utcnow() - timedelta(hours=hours)).timetuple())),
        endTime=int(time.mktime(Util.utcnow().timetuple())),
        queryString=query,
    )

我考虑过迭代start_query_response在Python中,但我不喜欢这个想法。由于它的日志超过7 days我将要考虑的,我需要一种有效的方法,而不必迭代过去的每个日志7 days对于给定的ClinicID.


您可以将表达式通过管道传输到stat命令并计算每个节点名称的出现次数。

将其添加到查询的末尾:

| stats count(*) by nodename

结果将是:

{
  'results': [
    [
      {
        'field': 'nodename',
        'value': 'MacBook-Pro-2.local\n'
      },
      {
        'field': 'count(*)',
        'value': '2'
      }
    ],
    [
      {
        'field': 'nodename',
        'value': 'MacBook-Pro-5.local\n'
      },
      {
        'field': 'count(*)',
        'value': '1'
      }
    ]
  ]
}

有关各种命令的更多详细信息,请参见此处:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python 中使用 boto3 查询 cloudwatch 日志中的不同值 的相关文章

随机推荐

  • PHP SoapClient 类型映射的行为不同

    我有一个 Web 服务函数 它将一组项目返回给 PHP 客户端 根据项目的数量 PHP 返回类型有所不同 如果函数返回一项 则 PHP 类型为stdClass如果函数返回多个项目 则 PHP 类型为array 无论哪种情况都应该是array
  • 更改 ng-repeat 内的角度 ui-view

    我在单个控制器中使用多个命名的 ui 视图 当使用以下代码在 html 文件中命名 ui view 时 一切都按预期工作 div class box div div div div div div div div div div div 但
  • 将 CUDA 与 Visual Studio 2017 结合使用

    我正在尝试安装 CUDA 但收到一条消息 未找到支持的 Visual Studio 版本 我认为这是因为我使用的是 Visual Studio 2017 社区 而 CUDA 目前仅支持 Visual Studio 2015 不幸的是 微软不
  • 使用 Velocity 模板语言的类型化 React 函数组件模板

    我正在使用 Webstorm 作为我的 IDE 它允许我突出显示一些 JSX 并将组件提取为功能组件 支持此功能的代码位于我不熟悉的 VTL 中 当我提取这样的组件时
  • flutter中的new_version包返回RangeError(index):无效值:有效值范围为空:1

    我在 flutter 中使用 new vesrion 0 3 1 包来显示警报对话框 如果 flutter 应用程序商店中有新版本可用 则显示更新应用程序 但我收到以下书面异常 ERROR flutter lib ui ui dart st
  • 无法让 Tensorflow 在 macOS M1 Pro 芯片上运行

    我一直在尝试进入 ML 领域 并且想学习相关课程 但它需要 Tensorflow 而且我一直在尝试让它在我的系统上运行 我有 2021 款 14 16GB Macbook Pro 配备 M1 Pro 芯片 并且运行的是 Ventura 13
  • 检测到的 JDK 版本:1.6.0-24 不在允许范围 1.7 内

    当我运行命令时 mvn clean package 我收到错误 Detected JDK Version 1 6 0 24 is not in the allowed range 1 7 如何修复上述错误 我尝试检查安装的jdk版本并得到了
  • django模型管理添加表单卡住了

    考虑一下这个 admin register Personal site admin site class PersonalAdmin admin ModelAdmin form ChangePersonalForm add form Add
  • 正则表达式匹配额外的空组

    我是正则表达式领域的新手 我下面发布的所有内容都是我的代码中的简化示例 我有一根绳子 比方说test 1 some 2 foo bar 4 我想替换为title test 1 title some 2 title foo title bar
  • 如何在 MVC 4 中不指定表单区域

    我有一个 MVC 应用程序 其中配置了区域 注销链接出现在布局页面中 因此它会显示在每个页面上 当我单击注销时 它总是将其附加到它所在的区域中 我只想让它转到帐户 注销 无区域 我尝试了以下方法 但没有成功 有什么建议吗 using Htm
  • WPF richTextBox问题

    如果一行文本换行到另一行 如何以编程方式确定字符串中的断点 示例 输入字符串 这是对文本换行行的测试 Based on the width of the richTextBox it could display This is a test
  • 如何在 Blazor 中将 AuthorizeView 标记与自定义身份验证逻辑结合使用

    我在 Blazor 服务器应用程序中有一个自定义身份验证系统 具有自定义数据库和一些逻辑 我希望受益于 razor 中内置的 AuthorizeView 标签 但我不知道如何在没有 AspNetCore Identity 的情况下使用它 现
  • Openssl:在 SSL_CTX_load_verify_locations API 中使用 CApath 参数时证书验证失败

    我正在尝试与服务器计算机建立 TLS 连接 我已使用 openssl CLI 命令创建了根 CA 证书和服务器证书 我创建了服务器证书 其通用名称与其 IP 地址相同 根 CA 证书的通用名称是服务器的 FQDN 我正在使用 openssl
  • JAX-RS 2.0 WebSphere 8.5 没有独立的共享库

    我正在使用 Jersey 2 在 IBM WebSphere 8 5 环境中实现 JAR RS 2 0 读完这篇文章后Websphere 8 中的 JAX RS Jersey 2 10 支持 https stackoverflow com
  • ASP.NET MVC - MapRoute 与 paths.Add(和 404)

    我刚刚开始使用 ASP NET MVC MapRoute 和 paths Add 之间有什么区别 我应该只使用 MapRoute 吗 我可以绘制多条路线吗 哪些 地图 优先 您首先调用的还是最后调用的 我希望能够为用户做一些类似于 Stac
  • 在共享主机上使用 Laravel 发送邮件

    我正在尝试从我的网站发送邮件 我正在使用 laravel 5 5 和 hostnet nl 的共享托管 我非常确定我的所有配置都是正确的 我的 env MAIL DRIVER mail MAIL HOST smtp02 hostnet nl
  • 如何让我的安装程序应用程序在 Windows 上正常运行?

    我在 Delphi 中制作了一个简单的安装程序应用程序 没什么花哨的 基本上我将文件包含到 Exe 中 然后将它们解压到用户指定的路径 然而 我偶然发现了一个问题 我注意到这适用于任何 Windows 可执行文件 无论它是否是安装程序 如果
  • 对 Android 中的特定布局进行“屏幕截图”

    我有两个密切相关的主要问题 我是从程序化的角度来看待这些问题的 1 我希望截取特定布局的内容的屏幕截图 即ScrollView嵌套在一个LinearLayout 罢工 gt 2 作为ScrollView有溢出屏幕的内容 因此可以滚动 如何确
  • PHP 克隆关键字 [重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中的对象克隆是什么 https stackoverflow com questions 2144506 what is object cloning in php 我正在研究一个经常使用 cl
  • 在 python 中使用 boto3 查询 cloudwatch 日志中的不同值

    我有一个 lambda 函数 可以将指标写入Cloudwatch 在写入指标的同时 它会在日志组中生成一些日志 INFO username email protected cdn cgi l email protection ClinicI