标签: google-cloud-logging

Google Cloud Console记录中的正则表达式

您如何使用正则表达式在新的Cloud Console中搜索Google App Engine日志?

这篇博客文章建议您只需要键入regex:my.*query即可搜索,但是在日志记录控制台中似乎不起作用。当我这样做时,它会自动更正为以下查询text:regex:my.*query

google-app-engine google-cloud-console google-cloud-logging

6
推荐指数
3
解决办法
5935
查看次数

如何在请求日志中嵌套应用程序日志,并使用操作ID标记它?

当我使用Google App Engine时,我可以:

  • (A)嵌套应用程序日志(例如下面的信息日志)
  • (B)在顶部"折叠"行中查看请求日志的摘要
  • (C)获取具有操作ID的标签,我可以单击该标签以轻松过滤日志流

最佳gae日志示例

是否可以通过Stackdriver Logging API完成相同的事情?

我知道我可以通过这些说明达到(A).

我可以通过以下两种方式达到(B):

但是,如果我选择(i),则不再出现operation-id标签(C),如果我执行后者,则(A)app log嵌套停止工作.

google-app-engine google-cloud-logging stackdriver google-cloud-stackdriver

6
推荐指数
0
解决办法
171
查看次数

使用 Python 查询 GCP Stackdriver 日志

我正在使用 Python3 查询 Stackdriver 以获取 GCP 日志。不幸的是,具有重要数据的日志条目以“NoneType”而不是“dict”或“str”的形式返回给我。结果“entry.payload”是“None”类型,“entry.payload_pb”有我想要的数据,但是是乱码。

有没有办法让 Stackdriver 以干净的格式返回这些数据,或者有没有办法解析它?如果没有,有没有办法查询比我正在做的更好的数据并产生干净的数据?

我的代码看起来像这样:

#!/usr/bin/python3

from google.cloud.logging import Client, ASCENDING, DESCENDING
from google.oauth2.service_account import Credentials

projectName = 'my_project'
myFilter = 'logName="projects/' + projectName + '/logs/compute.googleapis.com%2Factivity_log"'

client = Client(project = projectName)
entries = client.list_entries(order_by=DESCENDING, page_size = 500, filter_ = myFilter)
for entry in entries:
    if isinstance(entry.payload, dict):
        print(entry.payload)
    if isinstance(entry.payload, str):
        print(entry.payload)
    if isinstance(entry.payload, None):
        print(entry.payload_pb)
Run Code Online (Sandbox Code Playgroud)

“entry.payload_pb”数据总是这样开头:

type_url: "type.googleapis.com/google.cloud.audit.AuditLog"
 value: "\032;\n9gcp-user@my-project.iam.gserviceaccount.com"I\n\r129.105.16.28\0228
Run Code Online (Sandbox Code Playgroud)

google-bigquery google-cloud-logging stackdriver google-cloud-python google-cloud-stackdriver

6
推荐指数
1
解决办法
2023
查看次数

使用云日志读取尾部日志?

是否无法使用gcloud logging read命令在终端命令行上查看特定日志的尾部?我正在寻找类似于tail -f标准 Linux 上众所周知的调用的东西。我找不到任何允许它的记录参数。Web 控制台提供了一个播放按钮功能,它正是这样做的,但是当我让它运行超过 10 分钟时,整个选项卡变得没有响应,感觉整个浏览器都会崩溃。

我有一个不错的日志过滤器,我想在我的终端上“观看”它,而不是在 Chrome 浏览器中。但是,该watch命令不会读取 gcloud 命令的输出,它只是在我尝试调用时保留在那里watch -n 30 gcloud logging read ...

欢迎提出想法和建议。

google-cloud-platform gcloud google-cloud-logging

6
推荐指数
1
解决办法
4651
查看次数

在 Google Cloud Scheduler 日志上查看响应正文

这篇文章说只需单击 Logs 列下的 view 即可查看 Google Cloud Scheduler 日志的输出。但是,虽然我可以看到 HTTP 调度函数的状态代码,但我看不到响应。例如,这个请求通常返回一个对象数组,但这是我从 Cloud Scheduler 返回的完整日志:

{
 httpRequest: {
  status:  200   
 }
 insertId:  "------"  
 jsonPayload: {
  @type:  "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
  jobName:  "projects/----/locations/us-west2/jobs/name"   
  targetType:  "HTTP"   
  url:  "http://endpoint.com/test"   
 }
 logName:  "projects/----/logs/cloudscheduler.googleapis.com%2Fexecutions"  
 receiveTimestamp:  "2019-07-18T16:00:12.574419040Z"  
 resource: {
  labels: {
   job_id:  "Name"    
   location:  "us-west2"    
   project_id:  "----"    
  }
  type:  "cloud_scheduler_job"   
 }
 severity:  "INFO"  
 timestamp:  "2019-07-18T16:00:12.574419040Z"  
}
Run Code Online (Sandbox Code Playgroud)

我还如何查看来自 Cloud Scheduler 请求的响应对象/文本?

google-cloud-platform google-cloud-logging google-cloud-functions google-cloud-scheduler

6
推荐指数
1
解决办法
1120
查看次数

使用 SLF4J 的堆栈驱动程序日志记录未在 Scala 中正确记录

我正在使用 Logback 和 SLF4J 进行 Stackdriver 日志记录,并且我正在遵循Google Cloud 中的示例。我的应用程序是用 Scala 编写的,并在 GCP 上的 Dataproc 集群上运行。

logback.xml 有以下内容。

<configuration>
  <appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
    <!-- Optional : filter logs at or above a level -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>INFO</level>
    </filter>
    <log>application.log</log> <!-- Optional : default java.log -->
    <resourceType>gae_app</resourceType> <!-- Optional : default: auto-detected, fallback: global -->
    <enhancer>com.company.customer.utils.MyLoggingEnhancer</enhancer> <!-- Optional -->
    <flushLevel>WARN</flushLevel> <!-- Optional : default ERROR -->
  </appender>

  <root level="info">
    <appender-ref ref="CLOUD" />
  </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

和 MyLoggingEnhancer 是

package com.company.customer.utils

import com.google.cloud.logging.LogEntry.Builder …
Run Code Online (Sandbox Code Playgroud)

scala slf4j google-cloud-platform google-cloud-logging google-cloud-stackdriver

6
推荐指数
0
解决办法
900
查看次数

更新云功能后看不到任何日志

突然间,除了谷歌云功能的部署日志之外,我没有收到任何日志

到目前为止,它运行良好,但更新功能后我还没有看到任何日志。因此,我做了一些研究并删除了云函数日志文件和云函数,并再次创建了一个新函数。即使如此,我也无法看到与项目相关的任何日志(审核日志除外)(即每当功能更新时)

任何线索出了什么问题吗?我无法理解到底是什么问题。

任何帮助表示赞赏

google-cloud-platform google-cloud-logging google-cloud-functions

5
推荐指数
1
解决办法
942
查看次数

Python Google Cloud 函数缺少日志条目

我正在第一次尝试 GCP 的云函数和 python,并希望将 python 的日志记录充分集成,以便它们能够很好地适应 GCP 的日志记录基础设施(特别是为了识别严重性级别,并且最好还包括execution_ids 和跟踪 id)。

我一直在关注https://cloud.google.com/logging/docs/setup/python来进行此设置。

我的代码:

import base64
import logging
import google.cloud.logging

client = google.cloud.logging.Client()
client.get_default_handler()
client.setup_logging()
logging.getLogger().setLevel(logging.DEBUG)

def sample_pubsub(event, context):
    pubsub_message = base64.b64decode(event['data']).decode('utf-8')
    print('BEFORE LOG')
    logging.info(f'Event received: payload data == [{pubsub_message}]')
    logging.debug('This is debug')
    logging.warn('This should be a warning')
    logging.error('This should be an error')
    print('AFTER LOG')
Run Code Online (Sandbox Code Playgroud)

当我使用函数框架在本地运行它时,它完美地工作(据我所知),像这样输出到控制台:

{"message": " * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)", "timestamp": {"seconds": 1609443581, "nanos": 119384527}, "thread": 140519851886400, "severity": "INFO"}
{"message": " * Restarting with …
Run Code Online (Sandbox Code Playgroud)

python logging google-cloud-logging google-cloud-functions

5
推荐指数
1
解决办法
2868
查看次数

Google Cloud Logging 中包含过滤器和排除过滤器之间的区别?

我试图了解 Google Cloud Logging 中包含过滤器和排除过滤器之间的差异,但关于包含过滤器如何影响日志路由器/接收器的文档很少。为了说明这一点,这些片段描述了我可以在包含过滤器上找到的信息。

来自导出日志概述

包含过滤器:选择要通过此接收器路由的日志条目。有关包含过滤器示例,请参阅示例查询。

排除过滤器:选择从路由中显式排除哪些日志条目,即使日志条目与接收器的包含过滤器匹配也是如此。

从 Cloud Console 导出日志的摘录

  1. 选择要包含在接收器中的日志: 构建包含过滤器:输入过滤器以选择要路由到接收器目标的日志。
  2. 选择要从接收器中排除的日志(可选): 构建排除过滤器:选择添加排除并输入过滤器以选择您不希望路由到接收器目标的日志。

因此,我的问题如下:

  1. 在我看来,这些过滤器在功能上是重叠的,那么到底有什么区别呢?(例如,由于包含过滤器而未摄取的日志是否与通过排除过滤器排除的日志相同?包含过滤器未包含的日志条目是否也以与排除过滤器排除的日志条目相同的方式被丢弃?)
  2. 为什么还能够确定排除过滤器的排除过滤率?它有什么目的?

编辑:为了进一步说明我的观点,似乎有信息表明包含过滤器和排除过滤器之间曾经存在一些明显的差异,如Medium上的这篇文章所示:

Cloud Logging 收到的每个日志条目都会与排除过滤器和包含过滤器进行比较。这些比较是独立的。

为了确定日志条目是否导出到目的地,将日志条目与包含过滤器的日志接收器查询进行比较。当发生匹配时,日志条目将导出到接收器目标。一个日志条目可能与多个包含过滤器匹配。

为了确定日志条目是被丢弃还是保存在 Cloud Logging 存储中,需要将该日志条目与排除过滤器进行比较。如果它与任何排除过滤器匹配,则该日志条目将被丢弃。否则,日志条目将保存在 Cloud Logging 存储中。

不过,最新版本的官方文档上似乎并没有类似的信息,甚至没有过滤器之间的区别

google-cloud-platform google-cloud-logging

5
推荐指数
0
解决办法
2402
查看次数

如何为 Google Cloud Ops Agent 编写自定义多行解析器

我正在尝试配置 google-cloud-ops-agent 以从应用程序收集日志记录。日志是一行或多行。

多行日志示例:

[2023-02-08 10:32:23] production.ERROR: App\Jobs\Message::handle (Symfony\\Component\\Mime\\Exception\\RfcComplianceException(code: 0): Email \"3712\" does not comply with addr-spec of RFC 2822. at /var/www/html/vendor/symfony/mime/Address.php:54)
[stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Mail/Message.php(244): Symfony\\Component\\Mime\\Address->__construct()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Mail/Message.php(108): Illuminate\\Mail\\Message->addAddresses()
[2023-02-08 20:53:30] production.ERROR: RuntimeException: User not found in /var/www/html/app/Services/UserService.php:82
Stack trace:
#0 /var/www/html/app/Services/UserService.php(63): App\Services\UserService->init()
#1 /var/www/html/app/Helpers/UserHelper.php(128): App\Services\UserHelper->__construct()
Run Code Online (Sandbox Code Playgroud)

我的配置如下:

logging:
  receivers:
    customFile:
      type: files
      include_paths:
      - /var/www/html/storage/logs/error.log
  processors:
    extract_structure:
      type: parse_regex
      field: message
      regex: "^\[(?<time>[\d-]*\s[\d:]*)\]\sproduction.(?<severity>[^ :]*):\s(?<message>[\s\S]*)$"
      time_key: time
      time_format: "%Y-%m-%d %H:%M:%S"
    move_severity:
      type: modify_fields
      fields:
        jsonPayload."logging.googleapis.com/severity":
          move_from: jsonPayload.severity
  service:
    pipelines:
      default_pipeline:
        receivers: …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform google-cloud-logging google-cloud-ops-agent

5
推荐指数
0
解决办法
395
查看次数