Назад | Перейти на главную страницу

Отключить fluentd on в ОС, оптимизированной для контейнеров (GCE)

Я бы хотел отключить fluentd на экземпляре виртуальной машины под управлением ОС, оптимизированной для контейнеров, на вычислительном движке Google.

Причина в том, что он потребляет много оперативной памяти для функций, которые мне не нужны.

$ ps aux --sort -rss
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        1040  0.7 49.1 5149544 294484 ?      Sl   15:07   0:03 /opt/google-fluentd/embedded/bin/ruby -Eascii-8bit:ascii-8bit /usr/sbin/google-fluentd --under-supervisor
root         286  0.2 12.3 780428 73844 ?        Ssl  15:07   0:00 /usr/bin/dockerd --registry-mirror=https://mirror.gcr.io --host=fd:// --containerd=/var/run/containerd/containerd.sock
root         791  0.4  9.0 304208 54068 ?        Ssl  15:07   0:01 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd
root         334  0.0  7.3 609056 44100 ?        Ssl  15:07   0:00 /usr/bin/docker run --rm --name=stackdriver-logging-agent -v /etc/stackdriver/logging.config.d/:/etc/google-fluentd/config.d/ -v /var/log:/var/log 
root         333  0.0  7.3 535324 43820 ?        Ssl  15:07   0:00 /usr/bin/docker events

Процесс связан с этим systemd служба.

$ systemctl status stackdriver-logging.service
● stackdriver-logging.service - Fluentd container for Stackdriver Logging
   Loaded: loaded (/usr/lib/systemd/system/stackdriver-logging.service; static; vendor preset: disabled)
   Active: active (running) since Mon 2019-08-26 12:27:03 UTC; 1min 6s ago
  Process: 335 ExecStartPre=/bin/mkdir -p /var/log/google-fluentd/ (code=exited, status=0/SUCCESS)
 Main PID: 337 (docker)
    Tasks: 7 (limit: 664)
   Memory: 35.6M
      CPU: 81ms
   CGroup: /system.slice/stackdriver-logging.service
           └─337 /usr/bin/docker run --rm --name=stackdriver-logging-agent -v /etc/stackdriver/logging.config.d/:/etc/google-fluentd/config.d/ -v /var/log:/var/log -v /var/lib/docker/containers/:/var/lib/docker/containers/ gcr.io/stackdriver-agents/stackdriver-logging-agent:0.2-1.5.33-1-1

Однако, если я попытаюсь отключить его, используя:

$ sudo systemctl disable --now stackdriver-logging.service

Отключение не сохраняется после перезапуска виртуальной машины.

Просто удалите метаданные, отвечающие за запуск службы ведения журнала, из экземпляра с помощью интерфейса консоли.

или убери это с помощью gcloud compute instances remove-metadata cont3 --zone=europe-west3-c --keys=google-logging-enabled

Я тестировал это на свежей виртуальной машине witn ContainterOS 77 и не выбирал "ведение журнала" при его создании. Когда я проверил статус службы с systemctl status stackdriver-logging.service он не работал.

Затем я создал еще один с включенным ведением журнала и проверил статус службы - он работал, как ожидалось. Затем я остановил экземпляр, удалил ключ, запустил экземпляр и проверил статус службы. Он не работал (как и ожидалось).

Если по какой-то причине вы не можете удалить ключ из метаданных, вы всегда можете попробовать добавление сценария запуска sudo systemctl disable --now stackdriver-logging.service.

Google Cloud CLI (Google Cloud SDK 283.0.0) работал у меня:

gcloud compute instances add-metadata <instance_name> --metadata="google-logging-enabled=false"

Попробуйте отредактировать значения пользовательских метаданных. У вас должно быть установлено два из них как истинные (с включенным ведением журнала и включенным мониторингом Google). Установите для них значение false и посмотрите в экземпляр, чтобы проверить, не запущены ли другие контейнеры (связанные с Stackdriver).