编辑:我想我想出了这个问题。只有开始时间需要保持不变,直到需要重置累计数字,所以在我的情况下,一天的开始将在午夜之后重置,但结束时间将始终是当前时间。我仍在测试这个,所以我会在得到更多结果后立即关闭这个问题。
EDIT2:因此,将时间间隔设置为每天开始时开始并在发送时结束,图表仍然显示每次调用 client.create_time_series 时的峰值。这是我正在寻找的示例(忽略右轴,数字应该更高,但我的 photoshop 技能不是很好):
这就是我目前得到的:

在解释错误之前,以下是我尝试使用此自定义监控指标实现的目标。我的程序每隔一段时间记录一些处理过的数据,我想查看每天处理的总数。所以我认为累积指标是正确的选择,每天重置间隔。问题是我不确定如何实现这一目标。
这就是我正在做的事情。每次处理一些新数据时,我都会使用client.create_time_series(project_name, [series])where将其添加到指标中,其中[series]包含point.value.int64_value当时处理的数据数量中的一个。现在我的问题是间隔。我认为间隔应该是每天的开始和结束时间,我认为在一天结束时,指标会从 0 开始。所以我这样做了:
point = series.points.add()
point.value.int64_value = num
startDay = time.mktime(datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0).timetuple())
endDay = time.mktime(datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=0).timetuple())
point.interval.start_time.seconds = int(startDay)
point.interval.start_time.nanos = int((startDay - point.interval.start_time.seconds) * 10**9)
point.interval.end_time.seconds = int(endDay)
point.interval.end_time.nanos = int((endDay - point.interval.end_time.seconds) * 10**9)
client.create_time_series(project_name, [series])
Run Code Online (Sandbox Code Playgroud)
我得到这个错误:
400 Field timeSeries[0].points[0].interval.end had an invalid value of \"2018-10-04T16:59:59-07:00\": The end time is too far in the future. A point cannot …Run Code Online (Sandbox Code Playgroud) 我在 GCP 中部署了一个 java 应用程序。使用 fluentd 将该日志文件指向 Stackdriver 日志记录。
Java exception log在单独的行中格式化。因此 Stackdriver 日志记录无法将其捕获为 error/warning 。
我需要在一行中格式化我的 java 应用程序异常跟踪。 需要区分信息、错误、警告。
我流畅的配置:
<source>
type tail
format none
path /home/app/*-local-app-output.log
pos_file /var/lib/google-fluentd/pos/local-app.pos
read_from_head true
tag local-app
</source>
Run Code Online (Sandbox Code Playgroud)
也试过
format multiline
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
format1 /^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<message>.*)/
time_format %b %d %H:%M:%S
Run Code Online (Sandbox Code Playgroud)
而在 Kubernetes 引擎中部署相同的应用程序,它有单独的日志类别字段: info , warn , error , critical 。
谁可以帮我这个事 ?
我想通过使用脚本,Terraform模板或API以编程方式创建Stackdriver Workpace,因为我需要避免手动为每个项目创建Stackdriver工作区的手动步骤。它应该是terraform或API的一部分,以便为所需的Stackdriver监控项目自动创建它
谁能提供相同的解决方案或建议。
谢谢。
阿肖克
我们有一些stackdriver日志条目,如下所示:
{
insertId: "xyz"
jsonPayload: {
countOfApples: 100
// other stuff
}
// other stuff
}
Run Code Online (Sandbox Code Playgroud)
我们希望能够建立一个基于对数的指标,该指标可以告诉我们过去10分钟(或任何调整期)内看到的苹果总数,但是到目前为止,我一直找不到找到这种方法的方法。尽管阅读了文档。
尝试1:
过滤指定的那些日志条目,countOfApples并创建一个带有标签的“ 计数器”指标countOfApples。
完成此操作后,我可以根据高于或低于特定值进行过滤countOfApples。我看不到基于此值进行汇总的方法。所有聚合选项似乎都适用于在对齐期间与过滤器匹配的日志条目数
尝试2:
筛选指定位置的那些日志条目,countOfApples并创建一个“字段名称”设置为的分配指标jsonPayload.CountOfApples
这似乎越来越近了,因为我现在可以在指标浏览器中看到苹果计数,但是我找不到正确的Aligner / Reducers组合来只给我这段时间内的苹果总数?选择Aligner:delta和Reducer:sum会导致错误消息:
此聚合不会为折线图类型产生有效的数据类型。单击此处将aligner转换为sum,reducer转换为99%
是否可以仅监视每个对齐周期中所有这些值的总和?
我在本文中已经读到Firestore已启动Stackdriver(处于beta版),因此我们可以近乎实时地监视Cloud Firestore的读取,写入和删除操作,但是我在Firebase控制台中的哪里可以找到它?
我在Go 1.11运行时中使用Google App Engine标准环境。Go 1.11的文档说:“使用stdout编写输出的应用程序日志,使用stderr编写错误的应用程序日志”。从Go 1.9指南进行的迁移还建议不要直接调用Google Cloud Logging库,而应通过stdout进行日志记录。 https://cloud.google.com/appengine/docs/standard/go111/writing-application-logs
考虑到这一点,我编写了一个小的HTTP服务(下面的代码),以尝试使用JSON输出到stdout的日志记录到Stackdriver。
当我打印纯文本消息时,它们将按预期显示在日志查看器面板中的textPayload。当我传递JSON字符串时,它们会显示在下方jsonPayload。到目前为止,一切都很好。
因此,我severity在输出字符串中添加了一个字段,然后Stackdriver Log Viewer根据已分级的日志记录NOTICE,WARNING等成功地对消息进行了分类
。https://cloud.google.com/logging/docs/reference/v2/rest/v2/登录项
文档说要设置trace标识符,以将日志条目与原始请求日志相关联。跟踪ID是从X-Cloud-Trace-Context容器设置的标头中提取的。
使用本地模拟 curl -v -H 'X-Cloud-Trace-Context: 1ad1e4f50427b51eadc9b36064d40cc2/8196282844182683029;o=1' http://localhost:8080/
但是,这不会导致消息按请求进行线程传递,而是将该trace属性显示在jsonPayload日志的对象中。(见下文)。
请注意,这severity已按预期解释,并且未出现在中jsonPayload。我曾预期会发生同样的事情trace,但似乎未处理。
如何在原始请求日志消息中实现嵌套消息?(这必须在Go 1.11上使用stdout完成,因为我不希望直接使用Google Cloud日志记录程序包进行记录)。
GAE从正在运行的进程中解析stdout流的确切方式是什么?(在GCE上的VM设置指南中,有一些关于安装代理程序以充当Stackdriver Logging的渠道的信息-GAE是否已安装?)
app.yaml文件如下所示:
runtime: go111
handlers:
- url: /.*
script: auto
package main
import (
"fmt"
"log"
"net/http"
"os"
"strings"
)
var projectID = "glowing-market-234808"
func parseXCloudTraceContext(t string) (traceID, spanID, traceTrue string) …Run Code Online (Sandbox Code Playgroud) 我正在研究一个在Python运行时中运行的简单Google Cloud Function,并且我希望从Python程序到Stackdriver Logging进行一些简单的日志记录。
根据Google的启动指南,此操作应该很简单 https://cloud.google.com/logging/docs/setup/python
我设置了一个简单的测试功能来隔离我看到的日志记录问题
import google.cloud.logging
def logging_test_background(data, context):
logging_client = google.cloud.logging.Client()
logging_client.setup_logging()
logging.info("This should be info")
logging.debug("This should be debug")
logging.warning("This should be warning")
logging.error("This should be error")
Run Code Online (Sandbox Code Playgroud)
在Stackdriver Logging中,一切变得混乱。
1.信息被复制为错误2.调试未通过3.警告被复制,但是两者均为错误记录级别4.错误被复制
我的配置中缺少什么吗?
python google-cloud-platform google-cloud-functions google-cloud-stackdriver
我正在使用 Stackdriver 监控 GCP 中 Kubernetes 中部署的集群。在 Stackdriver 监控概述选项卡中,我可以看到不同的图表,显示资源利用率与时间的关系。我想将此图表转换为 csv 文件,其中包含每秒的资源利用率。有人以前做过这个或者知道如何做吗?
我刚刚开始在 Google Cloud Dataflow 上使用 Apache Beam。我有一个使用计费帐户设置的项目。我计划使用该项目的唯一目的是: 1. 数据流 - 用于所有数据处理 2. pubsub - 用于导出 Stackdriver 日志以供 Datadog 使用
现在,当我写这篇文章时,我当前没有运行任何数据流作业。
回顾过去一个月,我发现数据流成本约为 15 美元,Stackdriver Monitor API 成本约为 18 美元。看起来 Stackdriver Monitor API 的固定价格接近 1.46 美元/天。
我很好奇如何减轻这种情况。我不认为我想要或不需要 Stackdriver Monitoring。是强制性的吗?此外,虽然我觉得我没有运行任何东西,但在过去的一个小时里我看到了这一点:
所以我想问题是这些: 1. 这些调用是什么?2. 是否可以禁用数据流的 Stackdriver 监控或以其他方式降低成本?
google-cloud-platform google-cloud-dataflow stackdriver google-cloud-stackdriver
GCP 的 Stackdriver 中有一些指标,如 fe serviceruntime.googleapis.com/quota/exceeded,出现问题时会出现,如果没有更多问题,则不存在(不是 0)。
问题是我无法设置警报以自动解决,因为当问题解决时,此指标的数据不存在。
如何设置警报以使用这些类型的指标自动解决?
monitoring google-cloud-platform stackdriver google-cloud-monitoring google-cloud-stackdriver
stackdriver ×5
monitoring ×3
metrics ×2
firebase ×1
fluentd ×1
go ×1
kubernetes ×1
python ×1
python-3.x ×1