Quero usar um driver de log Splunk com uma tarefa do Amazon Elastic Container Service (Amazon ECS) no AWS Fargate
Breve descrição
É possível usar o driver de log Splunk, também chamado de "logging driver," do Docker no Fargate, para enviar seus logs de contêiner para o coletor de log Enterprise Splunk ou Splunk Cloud.
Resolução
Configure seu ambiente do Splunk Cloud para receber logs do Fargate
- Use a opção Free Splunk para criar uma conta no Splunk Cloud. Se você já tem uma conta no Splunk Cloud, vá para a etapa 2. Para obter mais informações, consulte Free Splunk no site do Splunk.
- Faça login na sua conta do Splunk Cloud.
Observação: Depois de criar uma conta, use seu URL, nome de usuário e senha do Splunk Cloud para fazer login.
- No painel de navegação, selecione Configurações.
- Na seção DADOS, selecione Entradas de dados.
- Na seção Entradas locais, na coluna Ações, Clique em Adicionar novo.
Observação: Você cria um token HTTP Event Collector (HEC) para poder enviar eventos de dados e de aplicações para uma implantação do Splunk por meio dos protocolos HTTP e Secure HTTP (HTTPS).
- Em Nome, insira um nome para seu token e selecione Próximo.
- Percorra o restante das páginas no assistente de configuração e selecione Enviar para criar o token HEC.
Observação: É possível deixar os valores padrão em vigor.
- Teste o novo token usando curl ou Docker.
Observação: Por padrão, o Splunk escuta na porta 8088 e aceita eventos no caminho /services/collector.
curl:
curl -k https://prd-p-9l79p.splunkcloud.com:8088/services/collector -H "Authorization: Splunk splunk-token" -d '{"event": "Put this message in Splunk"}'
Observação: Substitua splunk-token pelo token HEC que você criou anteriormente.
Docker:
docker run --publish 80:80 --log-driver=splunk --log-opt splunk-token=splunk token --log-opt splunk-url=https://prd-p-u7z1u.splunkcloud.com:8088 --log-opt splunk-insecureskipverify=true --log-opt splunk-sourcetype=docker-test --log-opt splunk-index=main nginx
Observação: Substitua splunk-token pelo token HEC que você criou anteriormente.
Configure o AWS Secrets Manager para usar seu token HEC
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para armazenar seu token HEC no Secrets Manager para que o Fargate possa usar seu token com segurança, execute o seguinte comando:
aws secretsmanager create-secret --name splunk-token --secret-string token-value
Observação: Substitua splunk-token pelo seu token HEC. Substitua token-value pelo valor do seu token.
Configure um perfil de Execução de tarefa com permissão para acessar segredos
- Abra o console do AWS Identity and Access Management (AWS IAM).
- No painel de navegação, selecione Perfis.
- Na lista de perfis, pesquise e selecione ecsTaskExecutionRole.
- Selecione Adicionar política em linha.
- Clique na guia JSON do editor e insira a seguinte política:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"kms:Decrypt"
],
"Resource": [
"arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>",
"arn:aws:kms:<region>:<aws_account_id>:key/<key_id>"
]
}
]
}
Observação: Se você usar uma chave personalizada do AWS Key Management Service (AWS KMS) para criptografar seus segredos, forneça a permissão kms:Decrypt e o nome do recurso da Amazon (ARN) para sua chave KMS.
- Selecione Revisar política.
- Em Nome, insira um nome para a política.
- Selecione Criar política.
Configure sua definição de tarefa para sua tarefa do Amazon ECS no Fargate
- Abra o console do Amazon ECS.
- No painel de navegação, na seção Amazon ECS, selecione Definições de tarefa.
- Clique em Criar nova definição de tarefa.
- Selecione Fargate e, em seguida, clique em Próxima etapa.
- Na seção Configurar definições de tarefa e contêiner, em Nome da definição da tarefa, insira um nome para sua definição de tarefa.
- Em Perfil da tarefa, selecione o perfil que você configurou anteriormente.
- Na seção Tamanho da tarefa, em Memória da tarefa (GB) e CPU da tarefa (vCPU), insira os valores apropriados para suas tarefas.
- Na seção Definições de contêiner, clique em Adicionar contêiner.
- Escolha as opções apropriadas para as necessidades do seu contêiner.
- Na seção REGISTRO DE LOG no menu suspenso, selecione Exportar logs para o Splunk.
- Para as opções de chave e valor em Opções de log, insira o seguinte:
Chave: splunk-url
Valor: Seu endpoint splunk (por exemplo: https://prd-p-9l79p.splunkcloud.com:8088/)
Chave: splunk-insecureskipverify
Valor: Verdadeiro
Chave: splunk-token
valueFrom: O ARN secreto que você criou anteriormente
- Selecione Adicionar.
Observação: Para obter mais detalhes sobre o código e as configurações do Splunk, consulte splunk.go no GitHub e Splunk options (opções do Splunk) no site do Docker.
- Para criar sua definição de tarefa, selecione Criar.
- Crie um serviço Amazon ECS ou execute uma tarefa que use a definição de tarefa que você criou anteriormente.
Verifique seus logs no Splunk Cloud
Antes de verificar seus logs no Splunk Cloud, certifique-se de que sua tarefa esteja em execução.
Observação: Como você não especificou splunk-index em sua configuração de log, seus logs vão para splunk-index no índice principal por padrão.
- Conecte-se à sua conta do Splunk Cloud.
- No menu de navegação, selecione Pesquisar.
- Digite index="main" na caixa de pesquisa.
Observação: É possível seguir as etapas anteriores para criar uma definição de tarefa no Amazon ECS para um tipo de inicialização do Amazon ElasticCompute Cloud (Amazon EC2). Em seguida, é possível usar o driver de log do Splunk de qualquer uma das suas tarefas do ECS para enviar seus logs para o coletor de log do Splunk.
Informações relacionadas
Perfil do IAM de execução de tarefas do Amazon ECS