Configurar a geração de registros no Cloud Logging

Neste documento, explicamos como personalizar a geração de registros usando um ConfigMap no cluster da carga de trabalho de destino.

Por padrão, o Migrate to Containers grava as entradas das seguintes fontes:

  • Entradas gravadas em stdout de init, o principal de todos os processos do Linux.
  • Conteúdo de var/log/syslog.

No Cloud Logging, as entradas dos arquivos de registro compatíveis aparecerão em uma linha no registro no formulário a seguir. Os rótulos são definidos em um ConfigMap que lista os arquivos de registro.

date time label log-output

O exemplo a seguir ilustra o formulário com uma entrada do MySQL:

2019-09-22 12:43:08.681193976 +0000 UTC mysql log-output

É possível estender o recurso de encaminhamento de registro para propagar registros para outros processos e aplicativos em execução no contêiner migrado, seguindo as instruções deste tópico.

Encaminhar registros de aplicativos para o Cloud Logging

Para fazer registros no Cloud Logging a partir de aplicativos em VMs migradas com o Migrate to Containers, você precisa cumprir as exigências a seguir:

  • Crie um ConfigMap no cluster de carga de trabalho de destino que especifique uma lista de arquivos de registro do sistema com entradas que precisam ser gravadas no Cloud Logging.

    É possível usar a amostra ConfigMap incluída na seção abaixo, como uma referência que abrange muitos arquivos de registro comuns.

  • O ConfigMap precisa estar no mesmo namespace que o Deployment ou StatefulSet do contêiner.

  • O Deployment ou StatefulSet precisa referenciar a ConfigMap, conforme destacado no exemplo abaixo:

  • (Como migrar para o GKE apenas no VMware) Instale o Connect no cluster do GKE no VMware. É necessário conectar para retornar os dados ao Cloud Logging.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      creationTimestamp: null
      labels:
        app: my-app
        migrate-for-anthos-type: workload
      name: test-ibsc-appenhmutimiy
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: test-ibsc-appenhmutimiy
          migrate-for-anthos-type: workload
      strategy: {}
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: test-ibsc-appenhmutimiy
            migrate-for-anthos-type: workload
        spec:
          containers:
          - image: gcr.io/myproject/my-container-image:v1.0.0
            name: test-ibsc-appenhmutimiy
            readinessProbe:
              exec:
                command:
                - /code/ready.sh
            resources: {}
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: /sys/fs/cgroup
              name: cgroups
            - mountPath: /code/config/logs/
              name: logs-config
          volumes:
          - hostPath:
              path: /sys/fs/cgroup
              type: Directory
            name: cgroups
          - configMap:
              name: <ConfigMap name>
            name: logs-config

Usar o ConfigMap para registros de aplicativos comuns

O ConfigMap YAML de referência abaixo engloba uma lista de arquivos de registro comuns do aplicativo e os respectivos rótulos. É possível copiar o ConfigMap YAML de referência como está ou modificá-lo para remover entradas ou adicionar registros de aplicativos personalizados.

Para editar a lista de arquivos de registro, edite os elementos que seguem a linha logs:. Um subelemento de registro tem a seguinte estrutura:

label:
  - path-with-simple-wildcards

Exemplo:

tomcat:
  - /var/log/tomcat*/catalina.out
  - /var/log/tomcat*/localhost.*.log

Referência ConfigMap para apps comuns

apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: <ConfigMap name>
data:
  logs.yaml: |
    logs:
      mysql:
      - /var/log/mysql.log
      - /var/log/mysql/mysql.log
      mongodb:
      - /var/log/mongodb/*.log
      memcached:
      - /var/log/memcached.log
      redis:
      - /var/log/redis*.log
      - /var/log/redis/*.log
      rabbitmq-startup:
      - /var/log/rabbitmq/startup_log
      rabbitmq-startup_err:
      - /var/log/rabbitmq/startup_err
      rabbitmq-sasl:
      - /var/log/rabbitmq/*-sasl.log
      sugarcrm:
      - /var/www/*/sugarcrm.log
      tomcat-localhost_access_log:
      - /var/log/tomcat*/localhost_access_log*.txt
      tomcat:
      - /var/log/tomcat*/catalina.out
      - /var/log/tomcat*/localhost.*.log
      apache-access:
      - /var/log/apache*/access.log
      - /var/log/apache*/access_log
      - /var/log/httpd/access.log
      - /var/log/httpd/access_log
      apache-error:
      - /var/log/apache*/error.log
      - /var/log/apache*/error_log
      - /var/log/httpd/error.log
      - /var/log/httpd/error_log
      cassandra:
      - /var/log/cassandra/system.log
      - /var/log/cassandra/cassandra.log
      - /var/log/cassandra/output.log
      chef-bookshelf:
      - /var/log/chef-server/bookshelf/current
      chef-expander:
      - /var/log/chef-server/chef-expander/current
      chef-pedant-http-traffic:
      - /var/log/chef-server/chef-pedant/http-traffic.log
      chef-server-webui:
      - /var/log/chef-server/chef-server-webui/current
      chef-solr:
      - /var/log/chef-server/chef-solr/current
      chef-erchef-current:
      - /var/log/chef-server/erchef/current
      chef-erchef:
      - /var/log/chef-server/erchef/erchef.log.1
      chef-nginx-access:
      - /var/log/chef-server/nginx/access.log
      chef-nginx-error:
      - /var/log/chef-server/nginx/error.log
      chef-nginx-rewrite-port-80:
      - /var/log/chef-server/nginx/rewrite-port-80.log
      chef-postgresql:
      - /var/log/chef-server/postgresql/current
      chef-rabbitmq:
      - /var/log/chef-server/rabbitmq/current
      postgresql:
      - /var/log/postgres*/*.log
      - /var/log/pgsql/*.log
      puppet-access:
      - /var/log/pe-httpd/access.log
      puppet-puppetmasteraccess:
      - /var/log/pe-httpd/puppetmasteraccess.log
      puppet-activemq:
      - /var/log/pe-activemq/activemq.log
      puppet-activemq-wrapper:
      - /var/log/pe-activemq/wrapper.log
      puppet-mcollective:
      - /var/log/pe-mcollective/mcollective.log
      puppet-mcollective-audit:
      - /var/log/pe-mcollective/mcollective_audit.log
      puppet-puppetdb:
      - /var/log/pe-puppetdb/pe-puppetdb.log
      puppet-dashboard-error:
      - /var/log/pe-httpd/puppetdashboard.error.log
      puppet-dashboard-mcollective-client:
      - /var/log/pe-puppet-dashboard/mcollective_client.log
      puppet-dashboard-production:
      - /var/log/pe-puppet-dashboard/production.log
      puppet-dashboard-event-inspector:
      - /var/log/pe-puppet-dashboard/event-inspector.log
      puppet-dashboard-certificate-manager:
      - /var/log/pe-puppet-dashboard/certificate_manager.log
      puppet-dashboard-live-management:
      - /var/log/pe-puppet-dashboard/live-management.log
      puppet-console-cas-client:
      - /var/log/pe-console-auth/cas_client.log
      puppet-console-auth-cas:
      - /var/log/pe-console-auth/cas.log
      puppet-console-auth:
      - /var/log/pe-console-auth/auth.log
      puppet-dashboard-access:
      - /var/log/pe-httpd/puppetdashboard.access.log
      puppet-dashboard-failed-reports:
      - /var/log/pe-puppet-dashboard/failed_reports.log
      puppet-error:
      - /var/log/pe-httpd/error.log
      puppet-other-vhosts-access:
      - /var/log/pe-httpd/other_vhosts_access.log
      puppet-masterhttp:
      - /var/log/pe-puppet/masterhttp.log
      - /var/log/puppet/masterhttp.log
      puppet-rails:
      - /var/log/pe-puppet/rails.log
      puppet-http:
      - /var/log/puppet/http.log
      gitlab-application:
      - /home/git/gitlab/log/application.log
      gitlab-production:
      - /home/git/gitlab/log/production.log
      gitlab-sidekiq:
      - /home/git/gitlab/log/sidekiq.log
      gitlab-unicorn-stdout:
      - /home/git/gitlab/log/unicorn.stdout.log
      gitlab-unicorn-stderr:
      - /home/git/gitlab/log/unicorn.stderr.log
      gitlab-githost:
      - /home/git/gitlab/log/githost.log
      gitlab-satellites:
      - /home/git/gitlab/log/satellites.log
      gitlab-shell:
      - /home/git/gitlab-shell/gitlab-shell.log
      jenkins:
      - /var/log/jenkins/jenkins.log
      jetty-request:
      - /var/log/jetty/*.request.log
      jetty-stderrout:
      - /var/log/jetty/*.stderrout.log
      jetty-out:
      - /var/log/jetty/out.log
      joomla:
      - /var/www/joomla/logs/*.log
      magento-system:
      - /var/www/magento/var/log/system.log
      magento-exception:
      - /var/www/magento/var/log/exception.log
      magento-report:
      - /var/www/magento/var/report/*
      mediawiki:
      - /var/log/mediawiki/*.log
      nginx-access:
      - /var/log/nginx/access.log
      nginx-error:
      - /var/log/nginx/error.log
      redmine:
      - /var/log/redmine/*.log
      salt-master:
      - /var/log/salt/master
      salt-minion:
      - /var/log/salt/minion
      salt-key:
      - /var/log/salt/key
      salt-syndic:
      - /var/log/salt/syndic.loc
      solr:
      - /var/log/solr/*.log
      sugarcrm:
      - /var/www/*/sugarcrm.log
      tomcat-localhost_access_log:
      - /var/log/tomcat*/localhost_access_log.*.txt
      tomcat:
      - /var/log/tomcat*/catalina.out,/var/log/tomcat*/localhost.*.log

A seguir