Coletar registros no Anthos com o Splunk Connect

Neste tutorial, descrevemos como instalar e usar o Splunk Connect for Kubernetes para coletar registros de aplicativos do Kubernetes em execução no Anthos no Google Cloud. O Anthos permite que você aproveite o Kubernetes e a tecnologia de nuvem nos seus investimentos locais ou na nuvem pública. Você tem a experiência do Google Kubernetes Engine (GKE) com instalações e upgrades rápidos, gerenciados e simples validados pelo Google. Com o Splunk Connect, é possível indexar, armazenar e analisar os registros no local, como mostrado no diagrama a seguir:

Arquitetura para geração de registros do Anthos implantada no VMware com o Splunk.

O tutorial destina-se a administradores que configuram a integração de registros e métricas do Anthos com o Splunk. Neste tutorial, você configura um coletor de eventos HTTP para o Splunk Enterprise, implanta o Splunk Connect for Kubernetes no cluster do Anthos e implanta um aplicativo de amostra.

Neste tutorial, presumimos que você tenha familiaridade com o Kubernetes e também tenha os seguintes requisitos técnicos:

  • Você é um cliente do Anthos ou participa do programa de avaliação gratuita dessa plataforma.
  • Você tem uma instalação do Anthos configurada anteriormente com um cluster de usuário em execução.
  • No momento, você está executando o Splunk Enterprise (7.0 ou mais recente) local na sua organização.

Se você estiver executando o Anthos no Google Cloud ou em outras nuvens públicas e quiser se conectar a uma instância do Splunk em execução no local, será necessário ter conectividade híbrida entre os dois ambientes em vigor, conforme mostrado no diagrama a seguir:

Arquitetura para registrar o Anthos no Google Cloud ou em outras nuvens públicas com o Splunk

Objetivos

  • Instale e use o Splunk Connect for Kubernetes para coletar registros de aplicativos do Kubernetes em execução no Anthos no Google Cloud.
  • Configure um coletor de eventos HTTP para Splunk Connect.
  • Implante o Splunk Connect for Kubernetes no cluster do Anthos.
  • Implantar um aplicativo de amostra.

Custos

Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem ser qualificados para uma avaliação gratuita.

Antes de começar

  1. Faça login na sua conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Cloud, na página do seletor de projetos, selecione ou crie um projeto do Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu projeto.

  4. Verifique se você implantou e configurou o Splunk. Consulte Primeiros passos com o Splunk (em inglês) e implante o Splunk Enterprise.
  5. Verifique se você tem um cluster de usuário do Anthos implantado e registrado no Console do Google Cloud. Para seguir este tutorial, é recomendável (mas não obrigatório) ter três nós no cluster. Siga a documentação do Anthos para implantar esse componente Anthos.
  6. Verifique se há conectividade de rede entre o cluster do Anthos e o Splunk.

Como configurar o Splunk Enterprise

Configurar índices

O Splunk Connect requer no mínimo dois índices para exportar dados: um para eventos e outro para métricas. Neste tutorial, você também cria um índice de eventos separado para objetos, para um total de três índices.

  1. Faça login no Splunk como administrador.
  2. Vá para Configurações > Índices.
  3. Clique em Novo índice.
    1. Na caixa de texto Nome do índice, digite events.
    2. Defina Tipo de dados de índice como Eventos.
  4. Clique em Salvar.
  5. Clique em Novo índice.
    1. Na caixa de texto Nome do índice, digite objects.
    2. Defina Tipo de dados de índice como Eventos.
  6. Clique em Salvar.
  7. Clique em Novo índice.
    1. Na caixa de texto Nome do índice, digite metrics.
    2. Defina Tipo de dados do índice como Métricas.
  8. Clique em Salvar.

Configurar um coletor de eventos HTTP (HEC, na sigla em inglês)

Para exportar registros e métricas do Anthos para o Splunk, você precisa configurar o Splunk HTTP Event Collector (HEC).

  1. Vá para Configurações > Entradas de dados.
  2. Clique em Configurações globais.
    1. Defina Todos os tokens como Ativado.
    2. Selecione Ativar SSL.
    3. Clique em Salvar.
  3. Na caixa de diálogo Coletor de eventos HTTP, selecione +Adicionar novo.
  4. Na caixa de texto Nome, digite anthos-hec e, em seguida, selecione Próxima.
  5. Na caixa de diálogo Configurações de entrada, faça o seguinte:
    1. Defina Contexto de aplicativo como Pesquisa e relatórios (pesquisa).
    2. No menu Selecionar índices permitidos, selecione eventos, métricas e objetos.
    3. Clique em Próximo.
  6. A página Revisar é exibida. Verifique se a página tem a seguinte aparência:

    Página de revisão do HEC Collector.

  7. Clique em Enviar para criar o HEC. Copie o valor do token resultante para uso posterior.

  8. Para verificar a conectividade, faça login em um nó no cluster do Anthos e envie um evento de teste para o Splunk. Substitua hec-token pelo valor do token criado anteriormente e substitua splunk-ip pelo IP do servidor do Splunk Enterprise, conforme mostrado no seguinte código:

        curl -k http://splunk-ip:8088/services/collector/event \
        -H "Authorization: Splunk hec-token" -d '{"event": "hello splunk"}'
        

    Se a solicitação for bem-sucedida, o servidor retornará uma resposta como a seguinte:

        {"text":"Success","code":0}
        

Como implantar o Splunk Connect for Kubernetes

Para implantar o Splunk Connect for Kubernetes, você precisa criar uma conta de serviço, instalar o Helm e implantar o Splunk Connect.

Faça login no cluster de usuários do Anthos como administrador

  • Em um shell na estação de trabalho do administrador do Anthos, verifique se a ferramenta kubectl está configurada para apontar o cluster do Anthos por padrão:
  • kubectl config current-context
  • O comando anterior retorna o cluster do Anthos. Caso contrário, vincule o arquivo mestre kubeconfig a um arquivo de configuração local e tente novamente:
  •     mkdir .kube
        ln -s /kubeconfig ~/.kube/config
        

Criar uma conta de serviço e um namespace do Splunk

  1. Criar um namespace do Splunk. Esse namespace é usado para isolar o Splunk Connect do resto do seu cluster:

    kubectl create namespace splunk
        
  2. Crie um arquivo de configuração de controle de acesso baseado em papéis (RBAC, na sigla em inglês) que defina uma conta de serviço do Splunk autorizada a editar o namespace. Esta conta tem direitos de cluster-admin:

    cat <<EOF >tiller-rbac-config.yaml
        apiVersion: v1
        kind: ServiceAccount
        metadata:
         name: tiller
         namespace: splunk
        ---
        apiVersion: rbac.authorization.k8s.io/v1beta1
        kind: ClusterRoleBinding
        metadata:
         name: tiller
         namespace: splunk
        roleRef:
         apiGroup: rbac.authorization.k8s.io
         kind: ClusterRole
         name: cluster-admin
        subjects:
         - kind: ServiceAccount
           name: tiller
           namespace: splunk
        EOF
        
  3. Aplique o arquivo de configuração para criar a conta de serviço e a vinculação do RBAC:

    kubectl -n splunk apply -f tiller-rbac-config.yaml
        

    Se a solicitação for bem-sucedida, o servidor retornará uma resposta como a seguinte:

        serviceaccount/tiller created
        clusterrolebinding.rbac.authorization.k8s.io/tiller created
        

Instalar o Helm

Você instala o Splunk Connect com o gerenciador de pacotes Helm, que consiste no cliente Helm e no servidor Tiller.

  1. Instale o cliente Helm e verifique se o Helm está no seu caminho:

    helm version
        

    A saída é semelhante à seguinte, embora os números de versão e confirmação possam ser diferentes:

          Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
        
  2. Implante o servidor do Tiller usando a conta de serviço tiller no namespace splunk do cluster:

    helm init --service-account tiller --tiller-namespace splunk
        
  3. Confirme se o servidor foi implantado com sucesso:

    helm version --tiller-namespace splunk
        

    A saída é semelhante à seguinte, embora os números de versão e confirmação possam ser diferentes:

          Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
          Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
        

    Implantar o Splunk Connect

  1. Crie um arquivo YAML contendo a configuração do Splunk Connect para ler registros, objetos e métricas. Substitua hec-token pelo valor do token criado anteriormente e substitua splunk-ip pelo IP do servidor do Splunk Enterprise:

        cat <<EOF >values.yaml
        global:
          splunk:
            hec:
              protocol: https
              insecureSSL: true
              token: hec-token
              host: splunk-ip
              port: 8088
              indexName: events
    
        splunk-kubernetes-logging:
          journalLogPath: /run/log/journal
          splunk:
            hec:
              indexName: events
    
        splunk-kubernetes-objects:
          objects:
            core:
              v1:
                - name: pods
                - name: namespaces
                - name: nodes
                - name: services
                - name: config_maps
                - name: persistent_volumes
                - name: service_accounts
                - name: persistent_volume_claims
                - name: resource_quotas
                - name: component_statuses
                - name: events
                  mode: watch
            apps:
              v1:
                - name: deployments
                - name: daemon_sets
                - name: replica_sets
                - name: stateful_sets
          splunk:
            hec:
              indexName: objects
    
        splunk-kubernetes-metrics:
          kubernetes:
            insecureSSL: true
          splunk:
            hec:
              indexName: metrics
        EOF
        
  2. Instale o Splunk Connect for Kubernetes no namespace splunk:

    helm install --tiller-namespace splunk --namespace splunk \
        --name anthos-splunk -f values.yaml \
        https://github.com/splunk/splunk-connect-for-kubernetes/releases/download/1.2.0/splunk-connect-for-kubernetes-1.2.0.tgz
        
  3. Verifique se o Splunk Connect foi iniciado:

    kubectl -n splunk get pods
        

    Você verá três pods de geração de registros, três pods de métricas, um pod agregador de métricas e um pod de objetos em execução, como mostrado a seguir:

        NAME                                                          READY   STATUS    RESTARTS   AGE
        anthos-splunk-splunk-kubernetes-logging-46srr                  1/1     Running   0          2m
        anthos-splunk-splunk-kubernetes-logging-gkgkm                  1/1     Running   0          2m
        anthos-splunk-splunk-kubernetes-logging-r52nz                  1/1     Running   0          2m
        anthos-splunk-splunk-kubernetes-metrics-agg-595946f874-vjzmb   1/1     Running   0          2m
        anthos-splunk-splunk-kubernetes-metrics-gbkb8                  1/1     Running   0          2m
        anthos-splunk-splunk-kubernetes-metrics-k6ksn                  1/1     Running   0          2m
        anthos-splunk-splunk-kubernetes-metrics-vg5wn                  1/1     Running   0          2m
        anthos-splunk-splunk-kubernetes-objects-7c5cd8cf7d-csvw6       1/1     Running   0          2m
        tiller-deploy-bbd4d7f6b-xpxjk                                  1/1     Running   0          2m
        
  4. Acesse Configurações e Índices na IU do Splunk. Se a conexão for bem-sucedida, a coluna Evento mais recente mostrará um horário recente para os índices events, metrics e objects.

Solução de problemas e alterações

  • Se um pod não estiver iniciando ou se os dados não estiverem passando, inspecione os registros do pod para verificar se há erros:

        kubectl -n splunk logs pod-name
        
  • Se você precisar atualizar o arquivo config.yaml e tentar novamente, execute o seguinte comando para reimplantar o Splunk Connect:

        helm upgrade --recreate-pods --tiller-namespace splunk \
        --namespace splunk -f values.yaml anthos-splunk   https://github.com/splunk/splunk-connect-for-kubernetes/releases/download/1.2.0/splunk-connect-for-         kubernetes-1.2.0.tgz
        

Como implantar e testar um aplicativo de amostra

Em seguida, você implanta um aplicativo de amostra e visualiza os registros, metadados e métricas no Splunk.

Implantar um aplicativo de amostra

  1. Implante um aplicativo simples do "Hello World" no Anthos:

    kubectl create deployment hello-kubernetes --image=paulbouwer/hello-kubernetes:1.5
        
  2. Exponha o aplicativo na porta 8080 e encaminhe-o para que ele possa ser acessado localmente:

    kubectl expose deployment hello-kubernetes --port=8080 --type=ClusterIP
        kubectl port-forward deployment/hello-kubernetes 8080:8080
        
  3. Teste o aplicativo usando a ferramenta de linha de comando curl:

    curl http://localhost:8080/
        

    Se a solicitação for bem-sucedida, o servidor retornará uma resposta como a seguinte:

          <!DOCTYPE html>
          <html>
          <head>
              <title>Hello Kubernetes!</title>
          [...]
        

Ver registros do aplicativo

  • Navegue até Pesquisar na interface do usuário da Web do Splunk e pesquise os registros do aplicativo de exemplo no índice events:

    index=events sourcetype="kube:container:hello-kubernetes"
        

    Essa pesquisa retorna eventos de registro do aplicativo em ordem cronológica inversa (mais recente primeiro), começando com a solicitação de teste e a entrada indicando que o aplicativo está ouvindo e pronto para o serviço, conforme mostrado na captura de tela a seguir:

    Registra entradas de eventos.

Ver metadados do aplicativo

  • No painel Pesquisar, pesquise objetos de metadados para o aplicativo de amostra:

    index="objects" "hello-kubernetes"
        

    Esta pesquisa retorna uma lista de instantâneos de metadados para vários objetos do Kubernetes. Por exemplo, selecionando sourcetype="kube:objects:deployments" e expandindo metadata e status, é possível verificar o status da implantação hello-kubernetes em um momento específico, incluindo o número de réplicas disponíveis, conforme mostrado na captura de tela a seguir:

    Instantâneos de metadados para objetos do Kubernetes.

    Por padrão, os metadados são pesquisados a cada 15 minutos. Isso pode ser ajustado com a configuração do intervalo no arquivo values.yaml.

    Os metadados também incluem um fluxo de eventos da API Kubernetes. A pesquisa a seguir retorna todos os eventos do aplicativo de amostra:

    index="objects" sourcetype="kube:objects:events*" "hello-kubernetes"
        

Visualizar métricas do sistema e do aplicativo

  1. Acesse Métricas na interface do usuário do Splunk e insira cpu na caixa de pesquisa.

  2. No menu suspenso, selecione Métricas > kube > namespace > cpu > uso.

  3. No painel Análise à direita, selecione Divisão por e, em seguida, selecione nome. Você verá um gráfico de uso da CPU classificado por namespace, como mostrado na captura de tela a seguir:

    Gráfico de uso da CPU

Como implantar o Splunk App for Infrastructure

O Splunk App for Infrastructure (SAI) fornece informações sobre o desempenho de servidores Linux, servidores Microsoft Windows, clusters Kubernetes, contêineres OpenShift, contêineres Docker e instâncias do Amazon EC2, ELB e EBS. O SAI usa métricas para monitoramento de desempenho e usa dados de registro para entender melhor e solucionar problemas da infraestrutura do servidor.

Para uma instalação de configuração simplificada que seja totalmente compatível com os recursos fornecidos no Splunk App for Infrastructure, instale o Splunk Add-on for Infrastructure e o Splunk App Infrastructure no ambiente Splunk. Siga estas etapas para gerar um script de instalação que configure a entrega de dados para o Splunk.

Limpeza

Para evitar que os recursos usados neste tutorial sejam cobrados na conta do Google Cloud Platform:

Excluir o projeto do Cloud

A maneira mais fácil de eliminar o faturamento é excluir o projeto do Cloud que você criou para o tutorial.

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir os recursos

Depois de concluir este tutorial, execute estes comandos para remover os recursos criados:

   helm delete anthos-splunk --tiller-namespace splunk --purge
       helm reset --tiller-namespace splunk
       kubectl delete deployment hello-kubernetes
    

A seguir