自最近以来,我已经启动了Google计算引擎实例并开始运行。
我已经探索了Google Cloud Stackdriver来监视CPU使用率等。
我已将Stackdriver代理安装到Compute Engine实例之一上进行测试。我探索了在仪表板上创建新图表的方法,并尝试了各种指标。
但是我找不到任何可以显示实例磁盘使用情况的指标。
是的,有Stackdriver Agent支持的插件列表,用于抽取自定义指标,但我找不到任何用于衡量实例磁盘使用情况的特定指标。
请给我一个指针。
谢谢
我准备用这些Stackdriver API金跟踪BigQuery的使用情况和存在设置此功能的一个很好的教程在这里.但是,此处的查询使用API 的弃用v1,并且可用文档仍然适用于v1.
在BigQuery控制台中,v2仅提供以下字段:
logName
timestamp
severity
insertId
resource
resource.type
resource.labels
resource.labels.project_id
httpRequest
httpRequest.requestMethod
httpRequest.requestUrl
httpRequest.requestSize
httpRequest.status
httpRequest.responseSize
httpRequest.userAgent
httpRequest.remoteIp
httpRequest.serverIp
httpRequest.referer
httpRequest.cacheHit
httpRequest.cacheValidatedWithOriginServer
httpRequest.latency
httpRequest.cacheLookup
httpRequest.cacheFillBytes
operation
operation.id
operation.producer
operation.first
operation.last
protopayload_google_cloud_audit_auditlog
protopayload_google_cloud_audit_auditlog.serviceName
protopayload_google_cloud_audit_auditlog.methodName
protopayload_google_cloud_audit_auditlog.resourceName
protopayload_google_cloud_audit_auditlog.numResponseItems
protopayload_google_cloud_audit_auditlog.status
protopayload_google_cloud_audit_auditlog.status.code
protopayload_google_cloud_audit_auditlog.status.message
trace
sourceLocation
sourceLocation.file
sourceLocation.line
sourceLocation.function
Run Code Online (Sandbox Code Playgroud)
现在没有totalBilledBytes字段,在示例v1查询中用于计算使用情况.如何使用API的v2查询使用成本?
我正在通过Kuberenetes部署Google Cloud上的容器,这些是django项目和uwsgi来运行它们.
我正在使用stackdrive日志工具来查看日志记录,问题是所有条目都被视为严重性,ERROR即使它们不是错误.似乎uwsgi写入的日志stderr或类似的东西.
在图片中你可以看到django使用了INFOlevel,但是这是ERROR通过stackdrive 接收的.
这就是我设置uwsgi的方式.
[uwsgi]
master = true
socket = :3031
chdir = .
wsgi-file = docker.wsgi
processes = 4
threads = 2
socket-timeout = 90
harakiri = 90
http = :8000
env = prometheus_multiproc_dir=multi
enable-threads = yes
lazy-apps = yes
pidfile=/tmp/project-master.pid
目前,创建警报策略时在文档字段中指定的消息显示在 Stackdriver 警报电子邮件的文档字段中。我想用我的自定义内容覆盖整个电子邮件正文。如何使用自定义消息覆盖 Stackdriver Alert 电子邮件的消息正文?有没有其他解决方法可以做到这一点?
当我使用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
TL,博士;在使用Google Cloud Logging 驱动程序的 Docker 容器中使用CloudLoggingHandler 进行 Stackdriver日志记录 API 调用时,将忽略日志级别。
细节; 从 Google Compute Engine 上运行的 Docker 容器获取日志的推荐方法是使用Stackdriver Logging Agent:
最佳做法是在所有 VM 实例上运行 Stackdriver Logging 代理。该代理可在 Linux 和 Windows 下运行。要安装 Stackdriver Logging 代理,请参阅安装日志代理。
以下步骤已成功完成:
Editor和Logs Writer角色。然后我从 Google 的Cloud Platform Python docs复制了示例CloudLoggingHandler 示例。
import logging
import google.cloud.logging …Run Code Online (Sandbox Code Playgroud) docker google-cloud-platform stackdriver google-cloud-stackdriver
由于它看起来很简单,因此我不确定如何将其弄乱。根据App Engine标准文档:
console.error('message');
Run Code Online (Sandbox Code Playgroud)
在Stackdriver Logs Viewer中应具有ERROR日志级别。但是,我看到日志级别设置为“任何日志级别”。似乎正确的是,从中stderr可以看到它正在登录logName。
logName: "projects/my-project-name/logs/stderr"
Run Code Online (Sandbox Code Playgroud)
报价:
要从Node.js应用发出日志项,可以使用
console.log()或console.error()函数,它们具有以下日志级别:
- 发出的项目
console.log()具有INFO日志级别。- 发出的项目
console.error()具有错误日志级别。- 内部系统消息具有DEBUG日志级别。
我本来是试图winston与Stackdriver一起使用(使用@ google-cloud / logging-winston)来获取更详细的日志记录级别的,但是现在我什至无法使用basic 和将其记录为INFO或ERROR。console.log()console.error()
希望我不必为了使用简单便写疯狂的定制运输console.error()。
我想创建一个日志接收器来侦听 Stack Driver 中的特定消息并将事件推送到 Cloud Pub/Sub,这将触发 Cloud Function。
这是我的 Terraform 模板的一部分。
resource "google_pubsub_topic" "dataflow_events" {
name = join("-", concat(["dataflow-events", var.environment, terraform.workspace]))
}
resource "google_logging_project_sink" "dataflow_job_completion_sink" {
name = join("-", concat(["dataflow-job-completion-sink", var.environment, terraform.workspace]))
destination = "pubsub.googleapis.com/projects/${var.project}/topics/${google_pubsub_topic.dataflow_events.name}"
filter = "resource.type=dataflow_step AND textPayload=\"Worker pool stopped.\""
}
Run Code Online (Sandbox Code Playgroud)
地形版本 = 0.13.3
这将在没有任何错误的情况下部署。但是,不会将任何事件推送到 Pub/Sub 主题。
但是,当我手动(从 Cloud Web 控制台)创建接收器时,它会将消息推送到(相同的)Pub/Sub 主题。
这是两个接收器的两个屏幕截图。
注意:更改它们两个上的unique_writer_identity参数(true或false)不会改变其行为。我们在创建手动接收器时使用unique_writer_identityas true,这就是它具有全局服务帐户的原因。但是true在 Terraform 中将此设置为不会将消息推送到 Pub/Sub。
非常感谢您的专业知识。
logging google-cloud-platform google-cloud-pubsub terraform stackdriver
stackdriver ×10
logging ×2
cloud ×1
django ×1
docker ×1
gcp ×1
javascript ×1
monitoring ×1
node.js ×1
python ×1
terraform ×1
uwsgi ×1