Google cloud platform Google云容器优化操作系统主机日志到stackdriver
TL;DRGoogle cloud platform Google云容器优化操作系统主机日志到stackdriver,google-cloud-platform,stackdriver,Google Cloud Platform,Stackdriver,TL;DR 向Stackdriver发送容器优化的oshost日志(ssh和执行的shell命令)的最佳实践是什么 背景: 我使用的是谷歌的容器优化操作系统,效果非常好。将容器日志发送到Stackdriver非常简单,但是如何将主机日志发送到Stackdriver 出于审计目的,我需要记录所有SSH连接(接受或拒绝)以及通过shell执行的所有命令。之前,我只是通过stackdriver主机记录器包将rsyslogd(auth,authpriv)发送给stackdriver 这适用于在托管实例组
向Stackdriver发送容器优化的oshost日志(ssh和执行的shell命令)的最佳实践是什么 背景:
我使用的是谷歌的容器优化操作系统,效果非常好。将容器日志发送到Stackdriver非常简单,但是如何将主机日志发送到Stackdriver 出于审计目的,我需要记录所有SSH连接(接受或拒绝)以及通过shell执行的所有命令。之前,我只是通过stackdriver主机记录器包将rsyslogd(auth,authpriv)发送给stackdriver 这适用于在托管实例组(mig)中运行的容器优化OS VM:s,而不是在Google Kubernetes引擎中
这可能非常明显,但我似乎找不到任何关于它的文档 谷歌团队回答: 要在stackdriver中拥有日志日志,您需要配置 我很乐意这样做。请参阅fluentd配置图的部分内容 例子。请注意,configmap中的“节点日志”筛选器不可用 在GKE上默认启用 此外,要在COS节点上进行审核,您需要启用COS 审计日志记录系统服务。在COS节点上:运行“systemctl start” 云审计设置”。然后,您将拥有类似SSH登录的审核日志 日志
在高层,这是任何GCP COS实例将OS审核日志发送到Google stackdriver所需的操作: 首先,您需要使用以下命令在COS上启用审核日志: systemctl启动云审计设置 这将允许在计算实例日志中生成和捕获审计日志,您可以使用journalctl命令查看结果 其次,您需要在实例上安装GoogleStackDriver代理,并将其配置为将审核日志从实例日志发送到堆栈驱动程序。这可以通过让docker容器运行fluentd gcp google容器映像来实现 我正在分享下面的云初始化为您做整个工作。您需要做的只是拥有一个带有键“user data”的实例元数据,其值如下脚本所示:
#cloud-config
users:
- name: logger
uid: 2001
groups: docker
write_files:
- path: /etc/google-fluentd/fluentd.conf
permissions: 0644
owner: root
content: |
# This config comes from a heavily trimmed version of the
# container-engine-customize-fluentd project. The upstream config is here:
# https://github.com/GoogleCloudPlatform/container-engine-customize-fluentd/blob/6a46d72b29f3d8e8e495713bc3382ce28caf744e/kubernetes/fluentd-
configmap.yaml
<source>
type systemd
path /var/log/journal
pos_file /var/log/gcp-journald.pos
filters [{ "SYSLOG_IDENTIFIER": "audit" }]
tag node-journal
read_from_head true
</source>
<match **>
@type copy
<store>
@type google_cloud
# Set the buffer type to file to improve the reliability
# and reduce the memory consumption
buffer_type file
buffer_path /var/log/google-fluentd/cos-system.buffer
# Set queue_full action to block because we want to pause gracefully
# in case of the off-the-limits load instead of throwing an exception
buffer_queue_full_action block
# Set the chunk limit conservatively to avoid exceeding the GCL limit
# of 10MiB per write request.
buffer_chunk_limit 2M
# Cap the combined memory usage of this buffer and the one below to
# 2MiB/chunk * (6 + 2) chunks = 16 MiB
buffer_queue_limit 6
# Never wait more than 5 seconds before flushing logs in the non-error
# case.
flush_interval 5s
# Never wait longer than 30 seconds between retries.
max_retry_wait 30
# Disable the limit on the number of retries (retry forever).
disable_retry_limit
# Use multiple threads for processing.
num_threads 2
</store>
</match>
- path: /etc/systemd/system/logger.service
permissions: 0644
owner: root
content: |
[Unit]
Description=logging docker container
Requires=network-online.target
After=network-online.target
[Service]
Environment="HOME=/home/logger"
ExecStartPre=/usr/share/google/dockercfg_update.sh
ExecStartPre=/bin/mkdir -p /var/log/google-fluentd/
ExecStartPre=-/usr/bin/docker rm -fv logger
ExecStart=/usr/bin/docker run --rm -u 0 \
--name=logger \
-v /var/log/:/var/log/ \
-v /var/lib/docker/containers:/var/lib/docker/containers \
-v /etc/google-fluentd/:/etc/fluent/config.d/ \
--env='FLUENTD_ARGS=-q' \
gcr.io/google-containers/fluentd-gcp:2.0.17
Restart=always
RestartSec=1
runcmd:
- systemctl daemon-reload
- systemctl start logger.service
- systemctl start cloud-audit-setup
#云配置
用户:
-名称:记录器
uid:2001
分组:docker
写入\u文件:
-路径:/etc/google fluentd/fluentd.conf
权限:0644
所有者:root
内容:|
#此配置来自一个经过大量裁剪的版本
#容器引擎定制fluentd项目。上游配置如下所示:
# https://github.com/GoogleCloudPlatform/container-engine-customize-fluentd/blob/6a46d72b29f3d8e8e495713bc3382ce28caf744e/kubernetes/fluentd-
configmap.yaml
类型系统
路径/var/log/journal
pos_文件/var/log/gcp-journald.pos
筛选器[{“SYSLOG_标识符”:“audit”}]
标记节点日志
从你的头上读出来是真的
@打印副本
@键入谷歌云
#将缓冲区类型设置为file以提高可靠性
#并减少内存消耗
缓冲区类型文件
buffer\u path/var/log/google fluentd/cos-system.buffer
#将队列_full action设置为block,因为我们希望优雅地暂停
#在超出限制的情况下,加载,而不是引发异常
缓冲区队列已满动作块
#保守地设置区块限制,以避免超过GCL限制
#每个写入请求的容量为10MB。
缓冲区\u块\u限制2M
#将此缓冲区和以下缓冲区的组合内存使用限制为
#2MiB/数据块*(6+2)数据块=16 MiB
缓冲区队列限制6
#在非错误模式中刷新日志之前,请不要等待超过5秒
#案例。
冲洗间隔5s
#重试之间的等待时间不得超过30秒。
最大重试次数\u等待30次
#禁用重试次数限制(永远重试)。
禁用\u重试\u限制
#使用多个线程进行处理。
线程数2
-路径:/etc/systemd/system/logger.service
权限:0644
所有者:root
内容:|
[单位]
Description=记录docker容器
Requires=network-online.target
After=network-online.target
[服务]
Environment=“HOME=/HOME/logger”
ExecStartPre=/usr/share/google/dockercfg_update.sh
ExecStartPre=/bin/mkdir-p/var/log/google fluentd/
ExecStartPre=-/usr/bin/docker rm-fv记录器
ExecStart=/usr/bin/docker运行--rm-u 0\
--名称=记录器\
-v/var/log/:/var/log/\
-v/var/lib/docker/containers:/var/lib/docker/containers\
-v/etc/google fluentd/:/etc/fluent/config.d/\
--env='FLUENTD_ARGS=-q'\
gcr.io/googlecontainers/fluentd gcp:2.0.17
重新启动=始终
RestartSec=1
runcmd:
-systemctl后台程序重新加载
-systemctl start logger.service
-systemctl启动云审计设置
如何将主机日志发送到Stackdriver
是COS打包Stackdriver日志代理的一些代码。您可以通过
sudo systemctl start stackdriver logging
启动它。您有没有找到解决方案?我有同样的问题,我将上面的云配置添加到运行容器优化OS v77的实例的元数据中,然后重新启动。它似乎不起作用,没有运行fluentd
,通过docker ps-a
也看不到ps faux | grep fluent
。gcr.io/stackdriver agent/stackdriver logging agent的Dockerfile:0.2-1.5.33-1-1是否已关闭源代码?