O logstash-input-sls é um plug-in de entrada nativo do Alibaba Cloud Logstash que recupera logs do Simple Log Service.
O logstash-input-sls é um plug-in open source mantido pela Alibaba Cloud. Para mais informações, consulte logstash-input-logservice.
Recursos
-
Consumo colaborativo distribuído: Configure vários servidores para consumir dados de log em um Logstore simultaneamente.
NotaPara implementar o consumo colaborativo distribuído com múltiplos servidores Logstash, garanta a implantação de apenas um pipeline com o logstash-input-sls em cada servidor. Essa restrição deve-se aos limites do plug-in. A implantação de vários pipelines com o logstash-input-sls em um único servidor pode gerar dados duplicados na saída.
Alto desempenho: Com um grupo de consumidores Java, a velocidade de consumo de uma CPU single-core atinge 20 MB/s.
Alta confiabilidade: O logstash-input-sls salva o progresso de consumo nos servidores. Se um servidor se recuperar de uma falha, ele retomará o consumo dos dados a partir do último checkpoint.
Balanceamento de carga automático: O sistema aloca shards automaticamente conforme a quantidade de consumidores no grupo. Quando consumidores entram ou saem do grupo, o logstash-input-sls realoca os shards.
Pré-requisitos
-
Plug-in logstash-input-sls instalado.
Para mais informações, consulte Instale ou remova plug-ins.
-
Projeto do Simple Log Service e Logstore criados, com coleta de dados configurada.
Para mais informações, consulte Quick start.
Aplicação do logstash-input-sls
Após atender aos prerequisites, crie um pipeline seguindo as instruções em Gerencie pipelines do Logstash com arquivos de configuração. Durante a criação, configure os parâmetros do pipeline conforme as descrições na tabela da seção Parâmetros. Salve as configurações e implante o pipeline para acionar o Alibaba Cloud Logstash a recuperar dados do Simple Log Service.
Antes de usar o plug-in logstash-input-sls com um usuário RAM, conceda as permissões relacionadas a grupos de consumidores a esse usuário. Para mais informações, consulte Consuming logs with a consumer group.
O exemplo a seguir demonstra como usar o Alibaba Cloud Logstash para consumir dados de log de um Logstore e transferi-los para o Alibaba Cloud Elasticsearch:
input {
logservice{
endpoint => "your project endpoint"
access_id => "your access id"
access_key => "your access key"
project => "your project name"
logstore => "your logstore name"
consumer_group => "consumer group name"
consumer_name => "consumer name"
position => "end"
checkpoint_second => 30
include_meta => true
consumer_name_with_ip => true
}
}
output {
elasticsearch {
hosts => ["http://es-cn-***.elasticsearch.aliyuncs.com:9200"]
index => "<your_index>"
user => "elastic"
password => "changeme"
}
}
Considere o seguinte cenário: o Logstore possui 10 shards, cada um com tráfego de dados de 1 MB/s, e a capacidade de processamento de cada servidor Logstash é de 3 MB/s. Cinco servidores Logstash são alocados, com um pipeline contendo o logstash-input-sls implantado em cada um. Todos os servidores utilizam as mesmas configurações para consumer_group e consumer_name, e o parâmetro consumer_name_with_ip está definido como true.
Nesse caso, dois shards são alocados para cada servidor, resultando em um processamento de dados de 2 MB/s por shard.
Parâmetros
A tabela a seguir descreve os parâmetros suportados pelo logstash-input-sls.
Parâmetro | Tipo | Obrigatório | Descrição |
endpoint | String | Sim | Endpoint do projeto do Simple Log Service em uma virtual private cloud (VPC). Para mais informações, consulte Internal Simple Log Service endpoints. |
access_id | String | Sim | AccessKey ID da conta com permissões no grupo de consumidores. Para mais informações, consulte Consuming logs with a consumer group. |
access_key | String | Sim | AccessKey secret da conta com permissões no grupo de consumidores. Para mais informações, consulte Consuming logs with a consumer group. |
project | String | Sim | Nome do projeto do Simple Log Service. |
logstore | String | Sim | Nome do Logstore. |
consumer_group | String | Sim | Nome do grupo de consumidores (personalizável). |
consumer_name | String | Sim | Nome do consumidor (personalizável). Cada consumidor deve ter um nome exclusivo dentro do grupo para evitar comportamentos indefinidos. |
position | String | Sim | Posição inicial para o consumo de dados de log. Valores válidos:
|
checkpoint_second | Number | Não | Intervalo para acionar um checkpoint. Recomenda-se definir um valor entre 10s e 60s. Valor mínimo: 10. Valor padrão: 30. Unidade: segundos. |
include_meta | Boolean | Não | Define se os logs de entrada contêm metadados, como origem do log, horário, tag e tópico. Valor padrão: true. |
consumer_name_with_ip | Boolean | Não | Indica se o nome do consumidor inclui um endereço IP. Valor padrão: true. Defina como true para consumo colaborativo distribuído. |
Teste de benchmark de desempenho
-
Ambiente de teste
CPU: Processador Intel(R) Xeon(R) Platinum 8163 @ 2,50 GHz, 4 núcleos
Memória: 8 GB
Sistema operacional: Linux
-
Configuração de um pipeline do Logstash
input { logservice{ endpoint => "cn-hangzhou-intranet.log.aliyuncs.com" access_id => "***" access_key => "***" project => "test-project" logstore => "logstore1" consumer_group => "consumer_group1" consumer_name => "consumer1" position => "end" checkpoint_second => 30 include_meta => true consumer_name_with_ip => true } } output { elasticsearch { hosts => ["http://es-cn-***.elasticsearch.aliyuncs.com:9200"] index => "myindex" user => "elastic" password => "changeme" } } -
Procedimento de teste
-
Envie 2 MB, 4 MB, 8 MB, 16 MB e 32 MB de dados por segundo para o Logstore usando um producer Java.
Cada entrada de log contém 10 pares chave-valor e tem aproximadamente 500 bytes.
Inicie o Logstash para consumir os dados no Logstore. Verifique se a latência de consumo não aumenta e se a velocidade de consumo acompanha a velocidade de produção.
-
-
Resultados do teste
Tráfego (MB/s)
Utilização da CPU (%)
Uso de memória (GB)
32
170,3
1,3
16
83,3
1,3
8
41,5
1,3
4
21,0
1,3
2
11,3
1,3