Observação:

Use o Fluentd para Ingerir Logs do Oracle Cloud Infrastructure na Nuvem Elástica

Introdução

A Oracle Cloud Infrastructure (OCI) fornece recursos abrangentes de registro em log, mas a integração desses logs com sistemas externos, como Elastic, requer um expedidor de log robusto. Existem muitos coletores de dados de código aberto populares que permitem unificar a coleta e o consumo de dados.

Para obter mais informações, consulte: Ingerir Logs do Oracle Cloud Infrastructure em Plataformas SIEM de Terceiros usando Entregadores de Logs e Enviar Logs do Oracle Cloud Infrastructure para o New Relic usando o Vector para determinar qual solução melhor se adapta ao seu caso de uso.

Neste tutorial, analisaremos as tarefas detalhadas para usar o Fluentd como um remetente de logs para ingerir logs do OCI no Elastic Cloud.

Fluentd

A Fluentd é um coletor de dados robusto e de código aberto desenvolvido pela Treasure Data e agora parte da CNCF, projetado para agilizar a coleta, a transformação e a distribuição de dados de log em vários sistemas. Ele atua como uma camada de registro unificada que reúne logs de diversas fontes, processa-os usando plug-ins de analisador e filtro e os encaminha para destinos como Elastic, Kafka ou armazenamento em nuvem. O Fluentd pode ser implantado como um remetente de logs em uma instância de computação para capturar logs do serviço OCI Logging e entregá-los ao Elastic para monitoramento e análise aprimorados.

Quando o Fluentd encaminha os logs para o Elastic, o poder real dos dados de log é desbloqueado. O Elastic Security indexa e armazena os dados de log em um formato estruturado, permitindo recursos avançados de pesquisa, análise e visualização. Ao aproveitar o mecanismo de pesquisa de texto completo da Elastic, os usuários podem consultar e agregar logs em tempo real, descobrir padrões, identificar anomalias e gerar insights acionáveis. Além disso, com ferramentas como o Kibana, os logs podem ser visualizados por meio de painéis interativos, transformando dados brutos de log em representações visuais intuitivas que ajudam no monitoramento do desempenho do aplicativo, na detecção de ameaças à segurança e na solução eficaz de problemas operacionais.

Vejamos a representação de alto nível da arquitetura da solução, conforme mostrado na imagem a seguir.

Botão Editar

Objetivos

Pré-requisitos

Tarefa 1: Preparar o OCI para o Streaming de Logs

  1. Ativar logs no OCI Logging.

    Para este tutorial, usaremos os logs de Auditoria. Você também pode ativar logs de serviço ou personalizados com base no seu caso de uso. Para obter mais informações, consulte Visão Geral do Serviço Logging.

  2. Criar um Stream.

    Antes que a Fluentd possa começar a enviar logs, os dados precisam de uma fonte consistente. Na OCI, essa origem é um fluxo compatível com Kafka. Imagine configurar um fluxo como um pipeline de dados centralizado para logs. Todos os eventos de log gerados no OCI de instâncias de computação a serviços de rede podem ser direcionados a esse fluxo. Isso não apenas consolida os dados de log, mas também garante que o Fluentd tenha um único ponto final para extrair dados.

    1. Para criar um fluxo, consulte Criando um Fluxo.

      Botão Editar

    2. Navegue até Pool de Streams e anote o Nome do Stream, o Servidor de Inicialização, o nome de usuário do pool de streams e gere o token de autenticação para o usuário. Para obter mais informações, consulte token de autenticação.

      Vamos precisar de tudo isso em nosso arquivo de configuração Fluentd.

      Botão Editar

  3. Crie um OCI Connector Hub.

    O OCI Connector Hub atua como o orquestrador, roteando logs de vários serviços para o stream. Com o OCI Connector Hub, você pode definir conectores que movem logs do serviço OCI Logging que tem logs de Auditoria, logs de Serviço e logs Personalizados e os direcionam para o stream. Para criar um hub de conector, insira as informações a seguir.

    • Origem: Selecione Log.
    • Destino: Selecione Streaming (selecione o stream criado na etapa 2).
    • Selecione Criar políticas automaticamente para gerar as políticas obrigatórias do OCI IAM.

    Botão Editar

    Botão Editar

    Botão Editar

    Para obter mais informações, consulte Criando um Conector com uma Origem de Log.

Tarefa 2: Instalar e Configurar o Fluentd

Com o fluxo em funcionamento, é hora de configurar o Fluentd. Aqui, o objetivo é implantar o Fluentd em uma instância do OCI Compute e configurá-lo para consumir logs do fluxo.

Por que uma instância do OCI Compute? Pense nisso como o intermediário que preenche a lacuna entre os logs da OCI e a Elastic Cloud. É onde o Fluentd será executado, ingerirá dados do fluxo e os transmitirá para o Elastic.

Estabeleça SSH na instância e instale o Fluentd usando o gerenciador de pacotes do Treasure Data.

curl -fsSL https://toolbelt.treasuredata.com/sh/install-redhat-fluent-package5-lts.sh | sh

Verifique a versão que confirma que o Fluentd está instalado.

fluentd --version

Observação: Se você estiver girando a instância de computação no OCI, certifique-se de que o complemento do Log personalizado esteja desativado.

Tarefa 3: Instalar Plug-ins no Kafka e no Elasticsearch

Agora que o Fluentd está pronto, ele precisa ser equipado com plugins. Nesta arquitetura, a Fluentd atua como consumidor de dados de fluxo e encaminhador para o Elasticsearch. Isso requer a instalação de dois plug-ins principais:

Execute o comando a seguir para instalar os dois plug-ins.

fluent-gem install fluent-plugin-kafka fluent-plugin-elasticsearch

Tarefa 4: Verificar os Logs de Saída usando stdout

Antes de encaminhar logs para o Elasticsearch, é uma boa prática verificar se o fluxo de ingestão de log está funcionando. É aqui que entra o stdout. Ele garante que os dados estejam fluindo corretamente do fluxo antes de enviá-los para o Elastic.

  1. Para implementar isso, atualize a configuração do Fluentd localizada em /etc/fluent/fluentd.conf.

    	<source>
    	@type kafka_group
    	brokers <stream_endpoint>:9092
    	topics <stream_topic>
    	format json
    	username <username>
    	password <password>
    	ssl_ca_cert /etc/fluent/kafka_chain.pem
    	sasl_over_ssl true
    	consumer_group fluentd-group
    	<parse>
    		@type json
    	</parse>
    	</source>
    
    	<match **>
    	@type stdout
    	</match>
    
  2. Substitua <stream_endpoint> e <stream_topic> pelo servidor de inicialização e pelo nome de fluxo de acordo. Substitua também o <username> e o <password> pelos detalhes das Definições de Conexão do Kafka no OCI coletados na Tarefa 1.2. O nome de usuário também precisa do domínio anexado, como <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############.

    Observação:

    • O ssl_ca_cert deve ser uma cadeia de certificados completa no formato PEM, que deve incluir certificados de servidor (Certificados OCI Streaming), intermediários e raiz.

    • Para estabelecer uma conexão TLS confiável com o OCI Streaming, comece extraindo o servidor e os certificados intermediários usando o comando openssl: openssl s_client -showcerts -connect cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092 -servername cell-1.streaming.us-ashburn-1.oci.oraclecloud.com < /dev/null | \\nsed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > kafka_chain.pem.

    • Isso salva a cadeia de certificados em um arquivo chamado kafka_chain.pem. Em seguida, faça download do certificado raiz global DigiCert G2 do certificado raiz confiável usado pelo OCI Streaming na página DigiCert Root Certificates no formato PEM e salve-o como root.pem. Por fim, anexe o certificado raiz ao seu arquivo de cadeia usando o comando cat root.pem >> kafka_chain.pem.

    • Isso resulta em uma cadeia de certificados completa no kafka_chain.pem, pronta para ser usada por clientes TLS para conectividade segura com o OCI Streaming.

  3. Execute o comando a seguir para iniciar o Fluentd e monitorar a saída.

    $ sudo systemctl restart fluentd.service
    $ sudo systemctl status fluentd.service
    $ sudo cat /var/log/fluent/fluentd.log
    

Se tudo estiver funcionando, os logs do stream começarão a aparecer nos logs do Fluentd. Isso garante que o pipeline de dados esteja funcionando conforme o esperado antes de avançar.

Tarefa 5: Encaminhar Logs para o Elastic Cloud

Com o pipeline verificado, é hora de reconfigurar o Fluentd para encaminhar logs para o Elastic Cloud. Essa tarefa transforma o Fluentd de um simples consumidor de log em um remetente de log completo.

  1. Atualize a configuração para incluir o plug-in de saída Elastic.

    <source>
      @type kafka_group
      brokers <stream_endpoint>:9092
      topics <stream_topic>
      format json
      username <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.iad.##########
      password <password>
      ssl_ca_cert /etc/fluent/kafka_chain.pem
      sasl_over_ssl true
      consumer_group fluentd-group
    </source>
    
    <match **>
      @type elasticsearch
      cloud_id ###########
      cloud_auth 'elastic:##########'
      logstash_prefix fluentd
      logstash_format true
      index_name fluentd
    </match>
    

    Observação: O ID do Cloud é um ID exclusivo que é designado ao cluster do Elasticsearch hospedado no Elastic Cloud. Todas as implantações obtêm automaticamente um ID de Nuvem. Para localizar o ID da Nuvem e a senha do usuário elástico, consulte Localizar o seu ID da Nuvem.

  2. Reinicie o Fluentd para aplicar as alterações.

    sudo systemctl restart fluentd.service
    

Tarefa 6: Validar e Desbloquear Insights no Elasticsearch

Os logs são transmitidos para o Elastic com sucesso, os dados são indexados e estruturados para consultas eficientes. O mecanismo de pesquisa de texto completo da Elastic permite pesquisar, agregar e visualizar dados em tempo real.

É essencial criar uma view de dados. Essa exibição de dados serve como uma camada estruturada que organiza dados de log e permite que você explore e extraia insights valiosos de forma integrada. Para obter mais informações, consulte Views de dados.

Botão Editar

Botão Editar

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.