logstash-input-sls est un plug-in d'entrée intégré à Alibaba Cloud Logstash. Ce plug-in récupère les journaux depuis Simple Log Service.
logstash-input-sls est un plug-in open source maintenu par Alibaba Cloud. Pour plus d'informations, consultez logstash-input-logservice.
Fonctionnalités
-
Consommation collaborative distribuée : configurez plusieurs serveurs pour consommer simultanément les données de journalisation d'un Logstore.
RemarquePour mettre en œuvre une consommation collaborative distribuée avec plusieurs serveurs Logstash, déployez un seul pipeline équipé du plug-in logstash-input-sls sur chaque serveur. Cette contrainte découle des limites du plug-in. Le déploiement de plusieurs pipelines logstash-input-sls sur un même serveur risque de générer des doublons dans la sortie.
Hautes performances : avec un groupe de consommateurs Java, la vitesse de consommation atteint 20 Mo/s sur un CPU monocœur.
Haute fiabilité : logstash-input-sls enregistre la progression de la consommation sur les serveurs. En cas de récupération après une exception, le serveur reprend la consommation des données à partir du dernier point de contrôle.
Équilibrage de charge automatique : le système attribue automatiquement les shards en fonction du nombre de consommateurs dans un groupe. Lorsqu'un consommateur rejoint ou quitte le groupe, logstash-input-sls réattribue automatiquement les shards.
Prérequis
-
Le plug-in logstash-input-sls est installé.
Pour plus d'informations, consultez Installer ou supprimer des plug-ins.
-
Un projet Simple Log Service et un Logstore sont créés. La collecte des données est activée.
Pour plus d'informations, consultez Démarrage rapide.
Utilisation de logstash-input-sls
Une fois les prérequis remplis, créez un pipeline en suivant les instructions de la rubrique Gérer les pipelines Logstash avec des fichiers de configuration. Lors de la création, configurez les paramètres selon les descriptions du tableau de la section Paramètres. Enregistrez les paramètres, puis déployez le pipeline. Alibaba Cloud Logstash récupère alors les données depuis Simple Log Service.
Avant d'utiliser le plug-in logstash-input-sls avec un utilisateur RAM, accordez-lui les autorisations liées aux groupes de consommateurs. Pour plus d'informations, consultez Consommer des journaux avec un groupe de consommateurs.
L'exemple suivant montre comment utiliser Alibaba Cloud Logstash pour consommer les données de journalisation d'un Logstore et les transférer vers 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"
}
}
Prenons les hypothèses suivantes : le Logstore comporte 10 shards. Le trafic de données de chaque shard est de 1 Mo/s. La capacité de traitement de chaque serveur Logstash est de 3 Mo/s. Cinq serveurs Logstash sont alloués, chacun hébergeant un pipeline avec logstash-input-sls. Chaque serveur utilise les mêmes paramètres pour consumer_group et consumer_name. Le paramètre consumer_name_with_ip est défini sur true.
Dans ce cas, deux shards sont attribués à chaque serveur, et chaque shard traite les données à 2 Mo/s.
Paramètres
Le tableau suivant décrit les paramètres pris en charge par logstash-input-sls.
Paramètre | Type | Obligatoire | Description |
endpoint | String | Oui | Le point de terminaison du projet Simple Log Service dans un réseau privé virtuel (VPC). Pour plus d'informations, consultez Points de terminaison internes Simple Log Service. |
access_id | String | Oui | L'ID AccessKey de votre compte disposant des autorisations sur le groupe de consommateurs. Pour plus d'informations, consultez Consommer des journaux avec un groupe de consommateurs. |
access_key | String | Oui | La clé secrète AccessKey de votre compte disposant des autorisations sur le groupe de consommateurs. Pour plus d'informations, consultez Consommer des journaux avec un groupe de consommateurs. |
project | String | Oui | Le nom du projet Simple Log Service. |
logstore | String | Oui | Le nom du Logstore. |
consumer_group | String | Oui | Le nom du groupe de consommateurs, personnalisable. |
consumer_name | String | Oui | Le nom d'un consommateur, personnalisable. Le nom de chaque consommateur doit être unique au sein d'un groupe de consommateurs. Sinon, un comportement indéfini peut se produire. |
position | String | Oui | La position de départ pour la consommation des données de journalisation. Valeurs possibles :
|
checkpoint_second | Number | Non | L'intervalle de déclenchement d'un point de contrôle. Nous vous recommandons de définir l'intervalle entre 10 s et 60 s. Valeur minimale : 10. Valeur par défaut : 30. Unité : secondes. |
include_meta | Boolean | Non | Indique si les journaux d'entrée contiennent des métadonnées, telles que la source du journal, l'heure, le tag et le sujet. Valeur par défaut : true. |
consumer_name_with_ip | Boolean | Non | Indique si le nom du consommateur contient une adresse IP. Valeur par défaut : true. Pour la consommation collaborative distribuée, définissez la valeur sur true. |
Test de référence des performances
-
Environnement de test
CPU : processeur Intel(R) Xeon(R) Platinum 8163 @ 2,50 GHz, 4 cœurs
Mémoire : 8 Go
Système d'exploitation : Linux
-
Configuration d'un pipeline 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" } } -
Procédure de test
-
Utilisez un producteur Java pour envoyer 2 Mo, 4 Mo, 8 Mo, 16 Mo et 32 Mo de données par seconde au Logstore.
Chaque entrée de journal contient 10 paires clé-valeur et mesure environ 500 octets.
Démarrez Logstash pour consommer les données du Logstore. Assurez-vous que la latence de consommation n'augmente pas et que la vitesse de consommation suit le rythme de production.
-
-
Résultats du test
Trafic (Mo/s)
Utilisation du CPU (%)
Utilisation de la mémoire (Go)
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