Como registrar eventos do aplicativo com Ruby

Nesta parte do tutorial do app Bookshelf, ensinamos como um aplicativo pode incorporar registros detalhados para ajudar na detecção, na depuração e no monitoramento de problemas em potencial. O registro de eventos do aplicativo ajuda a identificar e resolver problemas durante o desenvolvimento e na fase de produção.

Esta página faz parte de um tutorial com várias páginas. Para começar do início e ver as instruções de configuração, consulte Aplicativo Bookshelf em Ruby.

Como instalar dependências

Acesse o diretório getting-started-ruby/5-logging e insira o seguinte comando:

bundle install

Como definir as configurações

  1. Copie o arquivo de configurações de exemplo.

    cp config/settings.example.yml config/settings.yml
    
  2. Edite o arquivo settings.yml, como você fez na seção Como autenticar usuários.

    Por exemplo, suponha que o ID do cliente do aplicativo da Web seja XYZCLIENTID, a chave secreta do cliente seja XYZCLIENTSECRET, o nome do projeto seja my-project e o nome do intervalo do Cloud Storage seja my-bucket. Então, a seção padrão do seu arquivo settings.yml ficaria assim:

    default: &default
      project_id: my-project
      gcs_bucket: my-bucket
      oauth2:
        client_id: XYZCLIENTID
        client_secret: XYZCLIENTSECRET
    
  3. Copie o arquivo de exemplo database.

    cp config/database.example.yml config/database.yml
    
  4. Configure o aplicativo de amostra para usar o mesmo banco de dados que você configurou durante a parte Como usar dados estruturados deste tutorial.

    Cloud SQL

    • Edite o arquivo database.yml. Remova os comentários das linhas da parte do Cloud SQL no arquivo.

       mysql_settings: &mysql_settings
         adapter: mysql2
         encoding: utf8
         pool: 5
         timeout: 5000
         username: [MYSQL_USER]
         password: [MYSQL_PASS]
         database: [MYSQL_DATABASE]
         socket: /cloudsql/[YOUR_INSTANCE_CONNECTION_NAME]
      
      • Substitua [MYSQL_USER] e [MYSQL_PASS] pelo nome de usuário e pela senha da instância do Cloud SQL criados anteriormente.

      • Substitua [MYSQL_DATABASE] pelo nome do banco de dados criado anteriormente.

      • Substitua [YOUR_INSTANCE_CONNECTION_NAME] pelo Instance Connection Name da instância do Cloud SQL.

    • Execute as migrações.

      bundle exec rake db:migrate
      

    PostgreSQL

    • Edite o arquivo database.yml. Remova os comentários das linhas da parte do PostgreSQL no arquivo. Substitua os marcadores your-postgresql-* pelos valores do banco de dados e da instância do PostgreSQL. Por exemplo, suponha que seu endereço IPv4 seja 173.194.230.44, seu nome de usuário seja postgres, sua senha seja pword123 e o nome do seu banco de dados seja bookshelf. Então, a parte do PostgreSQL do seu arquivo database.yml seria assim:

      # PostgreSQL Sample Database Configuration
      # ----------------------------------------
        adapter: postgresql
        encoding: unicode
        pool: 5
        username: postgres
        password: pword123
        host: 173.194.230.44
        database: bookshelf
      
    • Crie as tabelas e o banco de dados necessários.

      bundle exec rake db:create
      bundle exec rake db:migrate
      

    Cloud Datastore

    • Edite o arquivo database.yml. Remova os comentários da linha na parte do Cloud Datastore no arquivo. Substitua your-project-id pelo código do projeto do Google Cloud Platform. Por exemplo, se o código do projeto for my-project, a parte do Cloud Datastore do arquivo database.yml será assim:

      # Google Cloud Datastore Sample Database Configuration
      # ----------------------------------------------------
      dataset_id: my-project
      
    • Execute uma tarefa "rake" para copiar os arquivos do projeto de amostra para o Cloud Datastore.

      bundle exec rake backend:datastore
      

Como executar o app na máquina local

  1. Inicie um servidor da Web local.

    bundle exec rails server
    
  2. No navegador da Web, digite este endereço:

    http://localhost:3000

Para sair do servidor da Web local, pressione Control+C.

Como implantar o app no ambiente flexível do App Engine

  1. Compile os recursos do JavaScript para produção.

    RAILS_ENV=production bundle exec rake assets:precompile
    
  2. Implante o app de amostra.

    gcloud app deploy
    
  3. No navegador da Web, digite o endereço a seguir.

    https://[YOUR_PROJECT_ID].appspot.com
    

Atualize o app e implante a versão atualizada com o mesmo comando usado para implantá-lo pela primeira vez. A implantação cria uma nova versão do app e a define como padrão. As versões mais antigas são mantidas, bem como as instâncias de VM associadas. Lembre-se de que essas versões do aplicativo e instâncias de VM são recursos passíveis de cobrança.

Reduza os custos excluindo as versões não padrão do app.

Para excluir uma versão do app:

  1. No Console do GCP, acesse a página "Versões do Google App Engine".

    Acessar a página Versões

  2. Clique na caixa de seleção ao lado da versão do aplicativo não padrão que você quer excluir.
  3. Clique no botão Excluir na parte superior da página para excluir a versão do aplicativo.

Para informações detalhadas sobre a remoção de recursos faturáveis, consulte a seção Como fazer a limpeza na etapa final deste tutorial.

Estrutura do app

O diagrama a seguir mostra como o aplicativo processa os registros depois de implantado no ambiente flexível do App Engine.

Como gerar registros da estrutura de exemplo - ambiente flexível do App Engine

Como visualizar registros

Durante a execução do app Bookshelf, ele grava dados da geração de registros coletados e disponibilizados no Console do Google Cloud Platform. É possível utilizar as ferramentas de monitoramento de registros no Console do GCP para analisar os registros diretamente. Se você quiser ver uma análise mais detalhada, use o Console do GCP para fazer streaming ou importar os registros do aplicativo para o BigQuery. Além disso, é possível exportá-los para um intervalo do Cloud Storage.

Como fazer login no Console do GCP

Noções básicas sobre o código

O Rails inclui um eficiente sistema de geração de registros configurável. O aplicativo Bookshelf configura o Rails para colocar os registros no diretório em que o ambiente flexível do App Engine espera encontrá-los.

if Dir.exist? "/var/log/app_engine/custom_logs"
  config.logger = ActiveSupport::TaggedLogging.new Logger.new("/var/log/app_engine/custom_logs/application.log")
end

Além das mensagens padrão fornecidas pelo Rails, é possível registrar tudo o que você quiser usando o objeto logger do Rails.

logger.debug "Debug message."
logger.info "Infomational."
logger.fatal "Fatal error."
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…