O que eles não dizem na documentação é que você precisa ter mais alguns direitos para usar filtros. O código realiza uma chamada de descrever as instâncias na sua conta, usando o filters
para obter uma lista de IDs de instâncias, as quais então executam as chamadas da API do cloudwatch.
A política do IAM listada na documentação abrange apenas as chamadas da API do cloudwatch. Se você parou de filtrar completamente na sua configuração, você obteria dados .
No entanto, você deseja filtrar tags. Para isso, você precisará de pelo menos:
ec2:DescribeInstances
ec2:DescribeTags
Em uma declaração de permissão, consiga obter os dados de que você precisa.
Para resolver isso, eu verificaria se as credenciais da AWS fazem o que devem para descartá-las. O equivalente da AWS CLI do que eles estão fazendo é:
aws ec2 describe-instances --filters "Name=tag:Monitoring,Value=Yes"
Se isso falhar, então este é o seu problema. Você pode precisar de ec2:DescribeNetworkInterfaces
também, mas não tenho certeza disso.
Se isso for bem-sucedido, o problema não está nos seus direitos do EC2, mas em algo mais. Você pode replicar a chamada que o plug-in está fazendo para cloudwatch dessa maneira:
aws cloudwatch list-metrics --namespace AWS/EC2 --dimensions "Name=InstanceId,Value=i-1234abcd" --metric-name CPUUtilization
O plug-in está usando a chamada describe-instances
para buscar os valores InstanceId
para instâncias com a tag de monitoramento.
Se isso funcionar, assim como a busca de instâncias, então é um problema com o plugin de alguma forma. Verifique se o arquivo de credenciais está realmente legível pelo processo logstash. Você pode ignorar a necessidade de pesquisar tags tentando obter uma instância específica. Há um exemplo no código para saber como especificar isso.
filters => { 'instance-id' => 'i-1234abcd' }