Stackdriver Extractor 失败

woo*_*oot 6 google-compute-engine

我正在尝试让 Stackdriver 与 GCE 一起工作。我按照标准说明安装(执行stack-install.sh --write-gcm),但它似乎根本不起作用。当我添加监视警报以监视进程时,我得到:

Process monitoring not available for this instance
Run Code Online (Sandbox Code Playgroud)

/var/log/messages我看到:

Mar 28 19:47:59 myhost stackdriver-agent: which: no java in (/root/.gvm/bin:/usr/local/sbin:/sbin
:/usr/sbin:/bin:/usr/bin:/go/bin:/bin)
Mar 28 19:47:59 myhost stackdriver-agent: Starting stackdriver-collectd: option = PIDFile; value 
= /var/run/stackdriver-agent.pid;
Mar 28 19:47:59 myhost stackdriver-agent: option = Interval; value = 60.000000;
Mar 28 19:47:59 myhost stackdriver-agent: Created new plugin context.
Mar 28 19:47:59 myhost stackdriver-agent: [  OK  ]
Mar 28 19:47:59 myhost collectd[1934]: Initialization complete, entering read-loop.
Mar 28 19:47:59 myhost systemd: Started LSB: start and stop Stackdriver Agent.
Mar 28 19:47:59 myhost collectd[1934]: match_throttle_metadata_keys: 1 history entries, 1 distinc
t keys, 71 bytes server memory.
Mar 28 19:47:59 myhost collectd[1934]: tcpconns plugin: Reading from netlink succeeded. Will use 
the netlink method from now on.
Mar 28 19:47:59 myhost collectd[1934]: write_gcm: Asking metadata server for auth token
Run Code Online (Sandbox Code Playgroud)

我已验证该服务已启用。当我检查权限时,它说我不需要特殊凭据,因为我正在使用 GCE。但是,当我重新启动 stackdriver-extractor 服务时,我得到:

Please set STACKDRIVER_API_KEY in /etc/sysconfig/stackdriver
Run Code Online (Sandbox Code Playgroud)

所以如果我设置...我得到:

stackdriver-extractor[3020]: Starting stackdriver-extractor: Unable to determine extractor endpoint! 
stackdriver-extractor[3020]: Unable to generate config file
Run Code Online (Sandbox Code Playgroud)

我觉得项目级别出现问题,该服务没有像预期的那样自动获取关键信息。

我深入研究了脚本并找到了它的位置...

curl -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/project/attributes/stackdriver-agent-key
Run Code Online (Sandbox Code Playgroud)

但这得到了 404。

另外,当我检查范围时:

# curl --silent -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_only
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/monitoring.write
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我的最终问题是我无法在进程计数上创建警报,但我认为这是 Stackdriver 获取它的地方。

woo*_*oot 4

为了解决这个问题,我修复了 API 密钥。我在编辑文件时不小心遗漏了双引号。

这让我想到了下一点。我为什么要编辑该文件?它们提供了一个非常简单的实用程序来添加 API 密钥。我们应该使用它。

/opt/stackdriver/stack-config --api-key DEADBEEFDEADBEEFDEADBEEFDEADBEEF...
Run Code Online (Sandbox Code Playgroud)

它甚至会为您重新启动服务。

至于我是如何到达这个地方的……我不小心复制/粘贴了部分 API 密钥。这并不明显,因为我最后错过了一点。一点点都很重要。

至于为什么我无法通过将范围更改为所有 API 访问来使其正常工作,我不知道。我认为这会起作用,因为我真的不想在我的虚拟机磁盘中浪费更多的状态。但此时我将采取一个可行的解决方案。

最后一点建议...如果您在这里,您可能还需要找到您的 API 密钥。你可以在这里找到它:

https://app.google.stackdriver.com/settings/accounts/agent/

如果不存在,您可以创建它。

祝你好运!