Google cloud platform Google云容器优化操作系统主机日志到stackdriver

Google 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 这适用于在托管实例组

TL;DR
向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是否已关闭源代码?