Google-Compute-Engine

Stackdriver 提取器失敗

  • April 26, 2016

我正在嘗試讓 stackdriver 與 GCE 一起使用。我完成了安裝(執行stack-install.sh --write-gcm)的標准說明,但它似乎根本不起作用。當我添加監視警報以監視程序時,我得到:

Process monitoring not available for this instance

/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

我已驗證該服務已啟用。當我檢查權限時,它說我不需要特殊憑據,因為我使用的是 GCE。但是,當我重新啟動 stackdriver-extractor 服務時,我得到:

Please set STACKDRIVER_API_KEY in /etc/sysconfig/stackdriver

所以如果我設置它……我得到:

stackdriver-extractor[3020]: Starting stackdriver-extractor: Unable to determine extractor endpoint! 
stackdriver-extractor[3020]: Unable to generate config file

我覺得在項目級別出現了問題,該服務沒有像預期的那樣自動獲取關鍵資訊。

我深入研究了腳本並找到了它的來源……

curl -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/project/attributes/stackdriver-agent-key

但這得到了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

有任何想法嗎?我的最終問題是我無法在程序計數上創建警報,但我認為這就是 Stackdriver 的來源。

為了解決這個問題,我修復了 API 密鑰。我在編輯文件時不小心遺漏了雙引號。

這讓我想到了下一點。為什麼我要編輯文件?它們提供了一個很好的簡單實用程序來添加 API 密鑰。我們應該使用它。

/opt/stackdriver/stack-config --api-key DEADBEEFDEADBEEFDEADBEEFDEADBEEF...

它甚至會為您重新啟動服務。

至於我是如何到達這個地方的……我不小心複製/粘貼了部分 API 密鑰。這並不明顯,因為我最後錯過了一點。小事很重要。

至於為什麼我無法通過將範圍更改為所有 API 訪問來使其正常工作,我不知道。我認為這會起作用,因為我真的不想在我的 VM 磁碟中弄亂任何比我必須做的更多的狀態。但我會在這一點上採取一個可行的解決方案。

最後一點建議……如果你在這裡,你可能還需要找到你的 API 密鑰。你可以在這裡找到它:

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

如果沒有,您可以創建它。

祝你好運!

引用自:https://serverfault.com/questions/766577