我在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 Cloud Platform,并尝试评估如何更改默认堆栈.我喜欢使用所有内置工具而不必去各种Saas产品的想法.其中一个更开放的问题是如何使用Stackdriver Monitoring.据我所知,内置监控使用Heapster和Google Cloud Sink.但是,如何将自己的自定义指标公开给Stackdriver以供使用?我不是指基于日志的指标,而是真实的东西?
我知道我可以随时将代理安装到群集上,但在我看来,作为Google容器引擎的一部分,它已经在运行,那么我怎样才能将指标推送到它?
monitoring google-cloud-platform kubernetes google-kubernetes-engine stackdriver
我的问题是关于Google Cloud中的StackDriver。我已经尝试了许多小时,以便从GCP和AWS外部配置服务器以收集指标,但我无法使其正常工作。
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
在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
我想通过使用脚本,Terraform模板或API以编程方式创建Stackdriver Workpace,因为我需要避免手动为每个项目创建Stackdriver工作区的手动步骤。它应该是terraform或API的一部分,以便为所需的Stackdriver监控项目自动创建它
谁能提供相同的解决方案或建议。
谢谢。
阿肖克
有没有办法设置 Stackdriver 在我的任何 Google API 使用量达到限制时接收警报?
我曾经在https://console.cloud.google.com/iam-admin/quotas手动检查,但我不知道如何自动收到警报。
我在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 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
我正在使用自结构的 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) stackdriver ×10
logging ×3
kubernetes ×2
alert ×1
gcloud ×1
go ×1
google-cloud-error-reporting ×1
monitoring ×1
node.js ×1
python-3.x ×1
quota ×1