Я бы хотел отключить 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).