代码之家  ›  专栏  ›  技术社区  ›  Niklas B

谷歌云容器优化操作系统主机日志到stackdriver

  •  6
  • Niklas B  · 技术社区  · 6 年前

    TL;医生
    发送容器优化操作系统的最佳实践是什么 主办 将(ssh和已执行的shell命令)记录到stackdriver?

    背景:
    我使用的是谷歌容器优化操作系统,效果很好。将容器日志发送到stackdriver是非常容易的,但是如何发送 主办 记录到StackDriver?

    出于审计目的,我需要记录所有ssh连接(接受或拒绝)和通过shell执行的所有命令。以前,我只需通过stackdriver主机记录器包将rsyslogd(auth,authpriv)发送给stackdriver。

    这是针对在托管实例组(mig)中运行的容器优化操作系统vm:s,而不是在Google Kubernetes引擎中。

    这可能是非常明显的,但我似乎找不到任何关于它的文档。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Mohamed Esmat    6 年前

    在高级级别上,这是将操作系统审计日志发送到Google StackDriver所需的任何GCP COS实例的操作:

    SystemCtl启动云审核设置

    其次,您需要在实例上安装google stack driver代理,并将其配置为将审计日志从实例日志发送到堆栈驱动程序。这可以通过让一个docker容器运行fluentd gcp google容器映像来实现。

    #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
    
        2
  •  0
  •   Niklas B    6 年前

    谷歌团队回答:

    很乐意这么做。参见 these lines

    审核日志记录系统服务。在cos节点上:运行“systemctl start” 日志日志。