Udplogbeat est une application Beats personnalisée destinée à permettre aux développeurs de consigner des événements à indexer dans Elasticsearch. Les entrées de journal sont envoyées à un socket UDP local, puis expédiées via la sortie sélectionnée. Le but prévu de cet outil est de permettre à n'importe quelle application d'enregistrer facilement des messages localement sans écrire sur le disque et en profitant des différentes sorties et fonctionnalités intégrées du framework Beats.
Assurez-vous que ce dossier se trouve à l'emplacement suivant : ${GOPATH}/github.com/hartfordfive
Ce rythme est désormais remplacé par protologbeat. Bien que ce rythme devrait fonctionner très bien, il est conseillé d'utiliser son successeur à la place car il présente quelques améliorations, ainsi que la possibilité de choisir entre TCP ou UDP. Aucune modification ne sera apportée à ce projet.
udplogbeat.port
: Le port UDP sur lequel le processus écoutera (par défaut = 5000)udplogbeat.max_message_size
: La taille maximale acceptée du message (par défaut = 1024)udplogbeat.enable_syslog_format_only
: valeur booléenne indiquant si seuls les messages syslog doivent être acceptés. (Par défaut = faux)udplogbeat.enable_json_validation
: valeur booléenne indiquant si la validation du schéma JSON doit être appliquée pour les messages au format json
(par défaut = false)udplogbeat.publish_failed_json_invalid
: Valeur booléenne indiquant si les objets JSON doivent être envoyés sérialisés en cas d'échec de validation. Cela ajoutera la balise _udplogbeat_jspf
. (Par défaut = faux)udplogbeat.json_document_type_schema
: un hachage composé du type Elasticsearch comme clé et du chemin absolu du fichier de schéma local comme valeur.Exemple de configuration pour un remplacement de Syslog
udplogbeat:
port: 5000
max_message_size: 4096
enable_syslog_format_only: false
Exemple de configuration qui applique les schémas pour les événements au format JSON
udplogbeat:
port: 5001
max_message_size: 2048
enable_json_validation: true
json_document_type_schema:
email_contact: "/etc/udplogbeat/app1_schema.json"
stock_item: "/etc/udplogbeat/app2_schema.json"
Les schémas JSON peuvent être générés automatiquement à partir d'un objet ici : http://jsonschema.net/. Vous pouvez également afficher les exemples de schémas inclus app1_schema.json
et app2_schema.json
à titre d'exemples.
Si vous avez l'intention de l'utiliser en remplacement de la journalisation avec Rsyslog, cette méthode ne conservera pas vos données dans un fichier sur le disque.
Si udplogbeat est en panne pour une raison donnée, les messages envoyés au port UDP configuré ne seront jamais traités ou envoyés à votre cluster ELK. Si vous avez besoin d’une garantie à 100 % que chaque message sera livré au moins une fois, ce n’est peut-être pas la meilleure solution pour vous.
Si une perte potentielle d'événements de journal est acceptable pour vous, cela peut être une solution raisonnable pour vous.
Pour que l'application udplogbeat accepte les événements, lorsqu'elle n'est pas en mode format syslog uniquement ( activate_syslog_format_only: false ), ils doivent être structurés au format suivant :
[FORMAT] : [ES_TYPE] : [EVENT_DATA]
json
, soit plain
. Les entrées codées JSON seront automatiquement analysées.Exemple:
Événement codé en clair :
plain:syslog:Nov 26 18:51:42 my-web-host01 dhclient: DHCPACK of 10.2.1.2 from 10.2.1.3
Événement codé en JSON :
json:my_application:{"message":"This is a test JSON message", "application":"my_application", "log_level":"INFO"}
Veuillez noter que la date/heure actuelle est automatiquement ajoutée à chaque entrée du journal.
Veuillez consulter le répertoire sample_clients/
pour des exemples de clients dans différentes langues.
Pour démarrer avec Udplogbeat et également installer les dépendances, exécutez la commande suivante :
make setup
Cela créera un historique git propre pour chaque étape majeure. Notez que vous pouvez toujours réécrire l'historique si vous le souhaitez avant de pousser vos modifications.
Pour pousser Udplogbeat dans le dépôt git, exécutez les commandes suivantes :
git remote set-url origin https://github.com/hartfordfive/udplogbeat
git push origin master
Pour un développement ultérieur, consultez le guide du développeur Beat.
Pour créer le binaire pour Udplogbeat, exécutez la commande ci-dessous. Cela générera un binaire dans le même répertoire avec le nom udplogbeat.
make
Ou pour créer les binaires compressés pour OSX, Windows et Linux :
./build_os_binaries.sh "[VERSION_NUMBER]"
Ceux-ci seront placés dans le répertoire bin/
.
Pour exécuter Udplogbeat avec la sortie de débogage activée, exécutez :
./udplogbeat -c udplogbeat.yml -e -d "*"
Pour tester Udplogbeat, exécutez la commande suivante :
make testsuite
alternativement :
make unit-tests
make system-tests
make integration-tests
make coverage-report
La couverture des tests est rapportée dans le dossier ./build/coverage/
Chaque battement a un modèle pour le mappage dans elasticsearch et une documentation pour les champs qui est automatiquement générée sur la base de etc/fields.yml
. Pour générer etc/udplogbeat.template.json et etc/udplogbeat.asciidoc
make update
Pour nettoyer le code source d'Udplogbeat, exécutez les commandes suivantes :
make fmt
make simplify
Pour nettoyer le répertoire de build et les artefacts générés, exécutez :
make clean
Pour cloner Udplogbeat depuis le dépôt git, exécutez les commandes suivantes :
mkdir -p ${GOPATH}/github.com/hartfordfive
cd ${GOPATH}/github.com/hartfordfive
git clone https://github.com/hartfordfive/udplogbeat
Pour un développement ultérieur, consultez le guide du développeur Beat.
Les frameworks beat fournissent des outils pour compiler et empaqueter votre rythme pour différentes plates-formes. Cela nécessite Docker et Vending comme décrit ci-dessus. Pour créer des packages de votre rythme, exécutez la commande suivante :
make package
Cela récupérera et créera toutes les images requises pour le processus de construction. Le processus de perçage peut prendre plusieurs minutes.
Alain Lefebvre <hartfordfive 'at' gmail.com>
Couvert sous la licence Apache, version 2.0 Copyright (c) 2016 Alain Lefebvre