1

每当我使用 Stackdriver 监控和监控代理设置 Google Dataproc 集群时,我注意到只要 Dataproc 获得工作,Stackdriver 就会失去连接。在堆栈驱动程序 UI 上,它有一个延迟值,他们说在大多数情况下不应高于 2 分钟。对我来说,这个值只是我提交作业后的时间(通常是几个小时),并且没有在 Compute Engine 网页中看不到的可用指标。

有没有办法让 stackdriver 监控与 dataproc 一起工作?如果可能的话,我希望能够监控我的作业的 RAM 使用情况。

Stackdriver 监控由我的组织运行和设置,但他们似乎可以访问所有功能。我们不使用 HTTP 代理。监控代理是使用Google 文档中的命令设置的。我有一个启动脚本(--initialization-actions 标志),它为 master 和 worker 运行,如下所示:

#!/bin/bash
cd /tmp
curl -O "https://repo.stackdriver.com/stack-install.sh"
bash stack-install.sh --write-gcm
# ... other initialization stuffs

编辑:“其他初始化内容”只是几个 gsutil 复制命令,用于将一些资源文件放到本地机器上,如果这有影响的话。

我尝试将代理的安装移到其他命令之后,并且我只使用 /tmp 因为谷歌建议在复制文件时使用绝对路径(忘记了文档在哪里,但它以前对我有帮助)。

这是我在stackdriver中看到的要求的屏幕截图。请注意除 CPU 使用率之外的所有指标是如何停在垂直线上的。也就是今天提交给 spark 的作业:

Stackdriver 屏幕截图

结果grep stackdriver-agent /var/logs/syslog

Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: Starting Stackdriver metrics collection agent: stackdriver-agentoption = Hostname; value = 3431688934917455875;
Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: option = Interval; value = 60.000000;
Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: Created new plugin context.
Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: option = PIDFile; value = /var/run/stackdriver-agent.pid;
Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: option = Hostname; value = 3431688934917455875;
Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: option = Interval; value = 60.000000;
Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: Created new plugin context.
Sep  2 13:31:53 <cluster-name>-m stackdriver-agent[3609]: .
Sep  2 13:31:56 <cluster-name>-m stackdriver-agent[3823]: Stopping Stackdriver metrics collection agent: stackdriver-agent.
Sep  2 13:31:56 <cluster-name>-m stackdriver-agent[3842]: Starting Stackdriver metrics collection agent: stackdriver-agentoption = Interval; value = 60.000000;
Sep  2 13:31:56 <cluster-name>-m stackdriver-agent[3842]: Created new plugin context.
Sep  2 13:31:56 <cluster-name>-m stackdriver-agent[3842]: option = PIDFile; value = /var/run/stackdriver-agent.pid;
Sep  2 13:31:56 <cluster-name>-m stackdriver-agent[3842]: option = Interval; value = 60.000000;
Sep  2 13:31:56 <cluster-name>-m stackdriver-agent[3842]: Created new plugin context.
Sep  2 13:31:56 <cluster-name>-m stackdriver-agent[3842]: .

编辑:完整的集群创建命令是:

gcloud dataproc clusters create <cluster-name> --master-machine-type n1-highmem-2 --worker-machine-type n1-highmem-2 --initialization-actions <path-to-script> --master-boot-disk-size 50GB --worker-boot-disk-size 50GB --num-workers 16 --network internal --zone us-east1-c --scopes https://www.googleapis.com/auth/cloud-platform --project <project-name> --tags dataproc

dataproc标签在我的组织中的所有端口上打开防火墙。 internal发现网络比default

结果sudo systemctl | grep stackdriver-agent

stackdriver-agent.service      active running   
LSB: start and stop Stackdriver Agent

结果sudo ps wwaux | grep stackdriver-agent

root      3851  0.0  0.0 1004704 9096 ?        Ssl  12:50   0:00 /opt/stackdriver/collectd/sbin/stackdriver-collectd -C 
/opt/stackdriver/collectd/etc/collectd.conf -P /var/run/stackdriver-agent.pid
7053  0.0  0.0  12732  2068 pts/0    S+   13:14   0:00 grep stackdriver-agent
4

1 回答 1

0

我复制了你的一些步骤,虽然我不能说为什么在你提交工作之前它看起来像监控“工作”,因为这是我在尝试只应用指令而不调试时遇到的第一件事在 Dataproc 的内部,您应该验证您是否为 Dataproc 集群提供了正确的范围,以使 stackdriver-agent 能够将其指标写入 API。即,以下似乎对我有用,保持 init 动作相同:

gcloud dataproc clusters create dhuo-stackdriver \
    --initialization-actions gs://<my-bucket>/install_stackdriver.sh \
    --scopes https://www.googleapis.com/auth/monitoring.write

或者,您可以使用Stackdriver 文档中列出的其他范围,例如更广泛的cloud-platform范围。请注意,这可能会覆盖一些其他默认范围混合,如果没有使用用户指定的范围,通常会添加这些混合:

https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/devstorage.full_control

我的本地测试仅使用您的代码段作为初始化操作:

#!/bin/bash
cd /tmp
curl -O "https://repo.stackdriver.com/stack-install.sh"
bash stack-install.sh --write-gcm

加上https://www.googleapis.com/auth/monitoring.write我的测试项目中的工作,包括通过工作提交:

Dataproc 集群的 Stackdriver 页面

于 2016-09-01T21:40:14.900 回答