每当我使用Stackdriver监控和监控代理设置Google Dataproc集群时,我注意到只要Dataproc找到工作,Stackdriver就会失去连接。在stackdriver UI上,它具有一个延迟值,他们说在大多数情况下不应该超过2分钟。这个值对我来说只是我提交作业后的时间(通常是几小时),并且没有可用的指标在计算引擎网页中看不到。
有没有办法让stackdriver监控与dataproc一起使用?如果可能的话,我希望能够监控我的工作的RAM使用情况。
Stackdriver监视由我的组织运行和设置,但它们似乎可以访问所有功能。我们不使用HTTP代理。使用Google's documentation中的命令设置监视代理程序。我有一个启动脚本(--initialization-actions标志),它对主服务器和工作服运行,如下所示:
#!/bin/bash
cd /tmp
curl -O "https://repo.stackdriver.com/stack-install.sh"
bash stack-install.sh --write-gcm
# ... other initialization stuffs
编辑:“其他初始化内容”只是一些gsutil复制命令,可以将一些资源文件放到本地计算机上,如果这样做有所不同。
我尝试将代理的安装移到其他命令之后,我只使用/ tmp,因为Google建议在复制文件时使用绝对路径(忘记了文档的用途,但之前它帮助了我。)< / p>
这是我在stackdriver中看到的请求的屏幕截图。请注意除CPU使用率之外的所有度量标准如何在垂直行停止。那是今天工作被提交到火花的时候:
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
答案 0 :(得分: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 documentation中列出的其他范围,例如更广泛的cloud-platform
范围。请注意,这可能会覆盖其他一些默认范围mixins,如果没有使用用户指定的范围,通常会添加这些混合:
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
在我的测试项目中工作,包括通过提交作业: