标签: stackdriver

GCE - 没有节点的stackdriver内存指标

我在GCE上设置了我的Kubernetes 1.3.4集群

export KUBE_ENABLE_CLUSTER_MONITORING=google

这很好用,我得到了应用程序日志(出于某种原因,在容器引擎部分,但很好)以及pod和节点指标.

唯一缺少的是节点内存指标,只显示CPU(见截图)

没有内存指标

在heapster日志中,我看到很多这样的线条

{
 metadata: {
  severity: "ERROR"    
  projectId: "<project-id>"    
  serviceName: "container.googleapis.com"    
  zone: "europe-west1-d"    
  labels: {
   container.googleapis.com/cluster_name: "production"     
   compute.googleapis.com/resource_type: "instance"     
   compute.googleapis.com/resource_name: "fluentd-cloud-logging-production-minion-group-p0w8"     
   container.googleapis.com/instance_id: "6772154497331326454"     
   container.googleapis.com/pod_name: "heapster-v1.1.0-2102007506-23b3e"     
   compute.googleapis.com/resource_id: "6772154497331326454"     
   container.googleapis.com/stream: "stderr"     
   container.googleapis.com/namespace_name: "kube-system"     
   container.googleapis.com/container_name: "heapster"     
  }
  timestamp: "2016-09-13T14:40:08.000Z"    
  projectNumber: "930564692351"    
 }
 textPayload: "E0913 14:40:08.665035       1 gcm.go:179] Error while sending request to GCM googleapi: Error 400: Timeseries 76, point: start is not older than end, for a cumulative metric, invalidParameter
"   
 insertId: "pt5bo7g132r266"   
 log: "heapster" …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine kubernetes stackdriver

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

如何将Google容器引擎中的自定义指标记录到Stackdriver?

我目前正在探索越来越多的Google Cloud Platform,并尝试评估如何更改默认堆栈.我喜欢使用所有内置工具而不必去各种Saas产品的想法.其中一个更开放的问题是如何使用Stackdriver Monitoring.据我所知,内置监控使用Heapster和Google Cloud Sink.但是,如何将自己的自定义指标公开给Stackdriver以供使用?我不是指基于日志的指标,而是真实的东西?

我知道我可以随时将代理安装到群集上,但在我看来,作为Google容器引擎的一部分,它已经在运行,那么我怎样才能将指标推送到它?

monitoring google-cloud-platform kubernetes google-kubernetes-engine stackdriver

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

StackDriver:从外部GCP和AWS收集指标

我的问题是关于Google Cloud中的StackDriver。我已经尝试了许多小时,以便从GCP和AWS外部配置服务器以收集指标,但我无法使其正常工作。

StackDriver能够从外部收集指标,还是我的时间太少了?

如果能够,有人知道一本好手册吗?

谢谢!!!和问候!!!

google-cloud-platform stackdriver

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

使用 gcloud 报告 Stackdriver 错误

我正在重新使用 gcloud cli 将事件发送到 StackDriver 错误报告。
(非常有限的)文档在这里:https : //cloud.google.com/sdk/gcloud/reference/beta/error-reporting/events/report

无论我作为消息发送什么,我似乎都会收到此错误:

错误:(gcloud.beta.error-reporting.events.report) INVALID_ARGUMENT:ReportedErrorEvent.context 必须包含一个位置,除非message包含异常或堆栈跟踪。

我尝试将消息格式化为错误报告的 JSON 表示:https : //cloud.google.com/error-reporting/docs/formatting-error-messages 但消息似乎相同。这是一个示例命令和 JSON:

gcloud beta error-reporting events report --service foo --message-file err.json

{
    "serviceContext": {
        "service": "foo"
    },
    "message": "Whoops!",
    "context": {
        "reportLocation": {
            "filePath": "/usr/local/bin/test",
            "lineNumber": 123,
            "functionName": "main"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform gcloud stackdriver google-cloud-stackdriver google-cloud-error-reporting

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

使用stdout / stderr从节点记录Stackdriver

在Google Cloud上,当在Node.js中使用GAE或云函数时,我们可以直接通过stdout登录到stackdriver,因为它们在此处的解释如下:

注意:写入stdout和stderr的日志会自动为您发送到Stackdriver Logging,而无需使用Node.js的Stackdriver Logging库。

是否可以向这些日志添加结构?喜欢jsonPayload吗?如果可能,我希望避免使用客户端库。

logging google-app-engine node.js google-cloud-platform stackdriver

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

如何使用API​​或Terraform模板在GCP中创建StackDriver工作区

我想通过使用脚本,Terraform模板或API以编程方式创建Stackdriver Workpace,因为我需要避免手动为每个项目创建Stackdriver工作区的手动步骤。它应该是terraform或API的一部分,以便为所需的Stackdriver监控项目自动创建它

谁能提供相同的解决方案或建议。

谢谢。

阿肖克

google-cloud-platform stackdriver google-cloud-stackdriver

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

在 GCP 上达到配额 API 限制时设置警报

有没有办法设置 Stackdriver 在我的任何 Google API 使用量达到限制时接收警报?

我曾经在https://console.cloud.google.com/iam-admin/quotas手动检查,但我不知道如何自动收到警报。

alert quota google-cloud-platform stackdriver

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

如何使用stdout Go 1.11记录与跟踪ID相关的Stackdriver日志消息

我在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)

google-app-engine go stackdriver google-cloud-stackdriver

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

如何对相关请求日志条目进行分组GAE python 3.7 standard env

我正在使用Google App Engine python 3.7标准,并且试图对相关的请求日志条目进行分组。根据“ 编写应用程序日志”文档,我应该:

在应用程序日志条目的LogEntry跟踪字段中设置跟踪标识符。预期的格式是项目/ [PROJECT_ID] /跟踪/ [TRACE_ID]

在哪里/如何使用LogEntry?

为Stackdriver日志文件没有显示它是如何可能的。我想念什么吗?

代码示例将不胜感激。

[更新]按照Duck Hunt Duo的建议,我尝试了以下操作,但没有成功:

    trace_id = request.headers.get('X-Cloud-Trace-Context', 'no_trace_id').split('/')[0]
    client = logging.Client()
    logger = client.logger('appengine.googleapis.com%2Fstdout')  # Not shown
    # logger = client.logger('projects/{}/logs/stdout'.format(GOOGLE_CLOUD_PROJECT)) # error
    # logger = client.logger('projects/{}/logs/appengine.googleapis.com%2Fstdout'.format(GOOGLE_CLOUD_PROJECT)) # error

    logger.log_text('log_message', trace=trace_id)
Run Code Online (Sandbox Code Playgroud)

该日志未出现在GAE服务日志Web控制台中

logging google-app-engine python-3.x google-cloud-platform stackdriver

5
推荐指数
2
解决办法
537
查看次数

如何关联 Cloud Run 中的请求日志?

我正在使用自结构的 JSON 有效负载从基于 Node.js/Express 的 Cloud Run 服务进行日志记录,但无法从同一请求中获取日志以使用该trace方法进行关联。

文件说:

除非您使用 Stackdriver Logging 客户端库,否则容器日志不会自动与请求日志相关联。如果您希望在不使用客户端库的情况下进行这种关联,请使用结构化 JSON 日志行,其中包含带有传入 X-Cloud-Trace-Context 标头内​​容的跟踪字段。然后您的日志将与请求日志正确关联。

我知道我的结构化 JSON 日志正在按预期工作,level/severity并且message正在按预期提取和显示。

我传递的trace正是X-Cloud-Trace-Context我使用req.getExpress: 提供的方法获得的标头所传递的值req.get('X-Cloud-Trace-Context')

这是正在记录的 JSON:

{
    "message": "Create Query",
    "level": "debug",
    "severity": "DEBUG",
    "trace": "40f...........................cc/131...............23;o=1"
}
Run Code Online (Sandbox Code Playgroud)

以下是该日志行在 Stackdriver Logging 中的显示方式示例。

我还尝试使用结构化负载文档logging.googleapis.com/trace中的特殊字段中提到的属性。我相当确定X-Cloud-Trace-Context标头的值对此属性无效,但我不确定如何设置标头值的格式以匹配此页面上记录的值。


综上所述,我的问题是:

  • 哪个是正确的属性名称trace
  • 如何根据X-Cloud-Trace-Context标题的值正确格式化此属性的值?

以下是 Stackdriver Logging 中显示的完整日志消息示例(已删除 ID):

{
    "message": "Create Query", …
Run Code Online (Sandbox Code Playgroud)

logging stackdriver google-cloud-run

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