Google Cloud Container Оптимизированные журналы хостов ОС для стекового драйвера - PullRequest
0 голосов
/ 25 июня 2018

TL; DR
Каков наилучший способ отправки оптимизированных для контейнера журналов os host (ssh и выполненные команды оболочки) в Stackdriver?

Справочная информация:
Я использую ОС Googles Container Optimized, которая прекрасно работает.Очень легко отправлять журналы контейнеров в Stackdriver, но как мне отправить host журналы в Stackdriver?

Это для целей аудита, мне нужно регистрировать все соединения SSH (принято или отклонено)и все команды выполняются через оболочку.Ранее я просто отправлял rsyslogd (auth, authpriv) в stackdriver через пакет logger хоста stackdriver.

Это для виртуальных машин с оптимизированным контейнером, работающих в группе управляемых экземпляров (mig), а не в Google Kubernetes Engine.

Это может быть супер очевидно, но я не могу найти какую-либо документацию по нему.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

На высоком уровне это то, что вам нужно сделать для любого экземпляра GCP COS, чтобы отправлять журналы аудита ОС в стековый драйвер Google:

Во-первых, вам нужно включить журналы аудита в COS, используя следующую команду: systemctl запускает облачный аудит-настройка Это позволит создавать и регистрировать журналы аудита в журнале экземпляров вычислений. Для просмотра результата можно использовать команду journalctl .

Во-вторых, вам нужно установить на экземпляре агент Google Stackdriver и настроить его доставку журналов аудита из журнала экземпляра в драйвер стека. Этого можно достичь, установив в док-контейнере изображение контейнера google fluentd-gcp.

Я делюсь ниже облачным init, чтобы сделать всю работу за вас. Все, что вам нужно сделать, - это иметь метаданные экземпляра с ключом «пользовательские данные», значение которого приведено ниже:

#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
0 голосов
/ 01 февраля 2019

Команда Google ответила:

Чтобы иметь журналы журнала в стекдрайвере, вам необходимо настроить Свободно делал это. См. эти строки файла конфигурации fluentd для некоторых Примеры. Обратите внимание, что фильтр "node-journal" в configmap не является по умолчанию включен в GKE.

Для проведения аудита на узлах COS, кроме того, вам необходимо включить COS обслуживание системы аудита. На узлах COS: Запустите "systemctl start" Cloud-Audit-Setup ". Тогда у вас будут журналы аудита, такие как вход по SSH в Журнал журнала.

...