![在容器优化操作系统 (GCE) 上禁用 fluentd](https://linux22.com/image/741879/%E5%9C%A8%E5%AE%B9%E5%99%A8%E4%BC%98%E5%8C%96%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20(GCE)%20%E4%B8%8A%E7%A6%81%E7%94%A8%20fluentd.png)
我想fluentd
在 Google 计算引擎上运行 Container-Optimized OS 的 VM 实例上禁用。
原因是它占用了大量的 RAM 来实现我不需要的功能。
$ 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
虚拟机重新启动后,禁用状态不再生效。
答案1
尝试编辑自定义元数据值。您应该将其中两个设置为 true(google-logging-enabled 和 google-monitoring-enabled)。将它们设置为 false 并查看实例以检查其他容器(Stackdriver 相关)是否未运行。
答案2
Google Cloud CLI(Google Cloud SDK 283.0.0)对我有用:
gcloud compute instances add-metadata <instance_name> --metadata="google-logging-enabled=false"
答案3
只需使用控制台界面从实例中删除负责启动日志服务的元数据即可
或者去掉它使用gcloud compute instances remove-metadata cont3 --zone=europe-west3-c --keys=google-logging-enabled
我在一台新的虚拟机上测试了这一点ContainterOS 77
,创建时没有选择“日志记录”。当我检查服务状态时,systemctl status stackdriver-logging.service
它没有运行。
然后我创建了另一个启用了日志记录的实例并检查服务状态 - 它按预期运行。然后我停止了实例,删除了密钥,启动了实例并检查了服务状态。它没有运行(也如预期的那样)。
如果由于某种原因你无法从元数据中删除密钥,你可以尝试添加启动脚本 sudo systemctl disable --now stackdriver-logging.service
。