Я пытаюсь заставить стековый драйвер работать с 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, я не знаю. Я думал, что это сработает, так как я действительно не хочу возиться с большим количеством состояний на моем диске виртуальной машины, чем мне нужно. Но на данный момент я возьму рабочее решение.
И последний совет ... если вы здесь, возможно, вам также понадобится найти свой ключ API. Вы можете найти это здесь:
https://app.google.stackdriver.com/settings/accounts/agent/
Если его нет, вы можете его создать.
Удачи!
К вашему сведению, использование ключей API является устаревшим / устаревшим. Вам следует включить Google Monitoring API и просто установить агент.