您如何使用正则表达式在新的Cloud Console中搜索Google App Engine日志?
这篇博客文章建议您只需要键入regex:my.*query即可搜索,但是在日志记录控制台中似乎不起作用。当我这样做时,它会自动更正为以下查询text:regex:my.*query。
当我使用Google App Engine时,我可以:
是否可以通过Stackdriver Logging API完成相同的事情?
我知道我可以通过这些说明达到(A).
我可以通过以下两种方式达到(B):
httpRequestjsonPayload和下面这个Google员工的建议,以逆向工程GAE做什么.但是,如果我选择(i),则不再出现operation-id标签(C),如果我执行后者,则(A)app log嵌套停止工作.
google-app-engine google-cloud-logging stackdriver google-cloud-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
是否无法使用gcloud logging read命令在终端命令行上查看特定日志的尾部?我正在寻找类似于tail -f标准 Linux 上众所周知的调用的东西。我找不到任何允许它的记录参数。Web 控制台提供了一个播放按钮功能,它正是这样做的,但是当我让它运行超过 10 分钟时,整个选项卡变得没有响应,感觉整个浏览器都会崩溃。
我有一个不错的日志过滤器,我想在我的终端上“观看”它,而不是在 Chrome 浏览器中。但是,该watch命令不会读取 gcloud 命令的输出,它只是在我尝试调用时保留在那里watch -n 30 gcloud logging read ...。
欢迎提出想法和建议。
这篇文章说只需单击 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
我正在使用 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
突然间,除了谷歌云功能的部署日志之外,我没有收到任何日志
到目前为止,它运行良好,但更新功能后我还没有看到任何日志。因此,我做了一些研究并删除了云函数日志文件和云函数,并再次创建了一个新函数。即使如此,我也无法看到与项目相关的任何日志(审核日志除外)(即每当功能更新时)
任何线索出了什么问题吗?我无法理解到底是什么问题。
任何帮助表示赞赏
google-cloud-platform google-cloud-logging google-cloud-functions
我正在第一次尝试 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) 我试图了解 Google Cloud Logging 中包含过滤器和排除过滤器之间的差异,但关于包含过滤器如何影响日志路由器/接收器的文档很少。为了说明这一点,这些片段描述了我可以在包含过滤器上找到的信息。
来自导出日志概述:
包含过滤器:选择要通过此接收器路由的日志条目。有关包含过滤器示例,请参阅示例查询。
排除过滤器:选择从路由中显式排除哪些日志条目,即使日志条目与接收器的包含过滤器匹配也是如此。
- 选择要包含在接收器中的日志: 构建包含过滤器:输入过滤器以选择要路由到接收器目标的日志。
- 选择要从接收器中排除的日志(可选): 构建排除过滤器:选择添加排除并输入过滤器以选择您不希望路由到接收器目标的日志。
因此,我的问题如下:
编辑:为了进一步说明我的观点,似乎有信息表明包含过滤器和排除过滤器之间曾经存在一些明显的差异,如Medium上的这篇文章所示:
Cloud Logging 收到的每个日志条目都会与排除过滤器和包含过滤器进行比较。这些比较是独立的。
为了确定日志条目是否导出到目的地,将日志条目与包含过滤器的日志接收器查询进行比较。当发生匹配时,日志条目将导出到接收器目标。一个日志条目可能与多个包含过滤器匹配。
为了确定日志条目是被丢弃还是保存在 Cloud Logging 存储中,需要将该日志条目与排除过滤器进行比较。如果它与任何排除过滤器匹配,则该日志条目将被丢弃。否则,日志条目将保存在 Cloud Logging 存储中。
不过,最新版本的官方文档上似乎并没有类似的信息,甚至没有过滤器之间的区别
我正在尝试配置 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