Envoyer des logs avec un forwarder - Filebeat (Linux)
Installez et configurez Filebeat sur Linux pour transférer vos fichiers de logs vers Logs Data Platform.
Objectif
Filebeat est un collecteur de fichiers open source, utilisé pour récupérer des fichiers de logs et qui peut facilement être configuré pour les transmettre à Logs Data Platform.
Les principaux atouts de Filebeat sont son protocole résilient d'envoi des logs et la variété de ses modules prêts à l'emploi pour la plupart des applications courantes.
Ce guide décrira comment installer Filebeat OSS sur votre système afin de transférer vos logs vers Logs Data Platform. Il vous présentera également quelques éléments de configuration utiles pour structurer davantage vos logs.
Prérequis
Notez que pour réaliser ce tutoriel, vous devez au minimum :
En pratique
Installer Filebeat OSS 7.X sur votre système
Filebeat prend en charge de nombreuses plateformes, listées ici : https://www.elastic.co/downloads/beats/filebeat
Vous pouvez choisir d'installer Filebeat OSS depuis un paquet, de le compiler depuis les sources (vous aurez besoin du dernier compilateur go pour cela) ou simplement de télécharger le binaire pour démarrer immédiatement.
Pour cette partie, rendez-vous sur le site de téléchargement de Filebeat OSS afin de télécharger la version la plus adaptée à votre distribution.
Les fichiers de configuration suivants ont été testés sur la dernière version de Filebeat OSS compatible avec OpenSearch (7.12.1).
Le paquet installera le fichier de configuration dans le répertoire suivant : /etc/filebeat/filebeat.yml.
Dans l'exemple suivant, nous allons activer la prise en charge d'Apache et de Syslog, mais vous pouvez facilement collecter tout autre type de source.
Filebeat attend un fichier de configuration nommé filebeat.yml.
- Pour que la configuration fonctionne, il est obligatoire de remplacer hosts: ["
<your_cluster>.logs.ovh.com:5044"] par le nom d'hôte fourni par Logs Data Platform.
- Vous devez également veiller à indiquer le
X-OVH-TOKEN du flux concerné.
Configuration de Filebeat
###################### Filebeat Configuration Example #########################
# This file is an example configuration file highlighting only the most common
# options. The filebeat.reference.yml file from the same directory contains all the
# supported options with more comments. You can use it as a reference.
#
# You can find the full configuration reference here:
# https://www.elastic.co/guide/en/beats/filebeat/index.html
# For more available modules and options, please see the filebeat.reference.yml sample
# configuration file.
#=========================== Filebeat inputs =============================
filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.
- type: log
# Change to true to enable this input configuration.
enabled: false
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/*.log
#- c:\programdata\elasticsearch\logs\*
# Exclude lines. A list of regular expressions to match. It drops the lines that are
# matching any regular expression from the list.
#exclude_lines: ['^DBG']
# Include lines. A list of regular expressions to match. It exports the lines that are
# matching any regular expression from the list.
#include_lines: ['^ERR', '^WARN']
# Exclude files. A list of regular expressions to match. Filebeat drops the files that
# are matching any regular expression from the list. By default, no files are dropped.
#exclude_files: ['.gz$']
# Optional additional fields. These fields can be freely picked
# to add additional information to the crawled log files for filtering
#fields:
# level: debug
# review: 1
### Multiline options
# Multiline can be used for log messages spanning multiple lines. This is common
# for Java Stack Traces or C-Line Continuation
# The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
#multiline.pattern: ^\[
# Defines if the pattern set under pattern should be negated or not. Default is false.
#multiline.negate: false
# Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
# that was (not) matched before or after or as long as a pattern is not matched based on negate.
# Note: After is the equivalent to previous and before is the equivalent to next in Logstash
#multiline.match: after
#============================= Filebeat modules ===============================
filebeat.config.modules:
# Glob pattern for configuration loading
path: ${path.config}/modules.d/*.yml
# Set to true to enable config reloading
reload.enabled: false
# Period on which files under path should be checked for changes
#reload.period: 10s
#================================ General =====================================
# The name of the shipper that publishes the network data. It can be used to group
# all the transactions sent by a single shipper in the web interface.
#name:
# The tags of the shipper are included in their own field with each
# transaction published.
#tags: ["service-X", "web-tier"]
# Optional fields that you can specify to add additional information to the
# output.
fields_under_root: true
fields:
X-OVH-TOKEN: 'xxxxxxxxxxxxxxxxxxxxx'
#================================ Outputs =====================================
# Configure what output to use when sending the data collected by the beat.
#----------------------------- Logstash output --------------------------------
output.logstash:
# Boolean flag to enable or disable the output module.
enabled: true
# The Logstash hosts
hosts: ["<your_cluster>.logs.ovh.com:5044"]
# Set gzip compression level.
compression_level: 3
# Enable SSL support. SSL is automatically enabled if any SSL setting is set.
ssl.enabled: true
# Optional SSL configuration options. SSL is off by default.
# List of root certificates for HTTPS server verifications
# ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
#================================ Processors =====================================
# Configure processors to enhance or manipulate events generated by the beat.
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
#================================ Logging =====================================
# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
#logging.level: debug
# At debug level, you can selectively enable logging only for some components.
# To enable all selectors use ["*"]. Examples of other selectors are "beat",
# "publish", "service".
#logging.selectors: ["*"]
Vous pouvez également utiliser notre endpoint OpenSearch pour envoyer vos logs. Cet endpoint prend en charge l'ingest, ce qui garantit de meilleures performances et une meilleure compatibilité avec les modules sélectionnés. Pour des raisons légales, nous ne prenons pas en charge les modules X-Pack sur cet endpoint, mais tout module OSS est pris en charge. Pour activer cet endpoint, remplacez la configuration de sortie Logstash par l'extrait suivant :
#==================== Output template setting ==========================
setup.template.enabled: false
setup.ilm.enabled: false
#-------------------------- OpenSearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["`<your-cluster>`.logs.ovh.com:9200"]
# Protocol - either `http` (default) or `https`.
protocol: "https"
# Authentication credentials - either API key or username/password.
username: "pat_jwt_`<your_suffix>`"
password: "`<iam-token>`"
index: "ldp-logs"
# Header for OpenSearch 2.X
headers:
X-Es-Compat: "7.10"
Warning
La section headers de la configuration de sortie est obligatoire afin de garantir la compatibilité avec OpenSearch 2.X.
Cette configuration désactive la configuration de template (inutile pour notre endpoint). Vous devez fournir vos identifiants IAM pat_jwt_<your_suffix> et <iam-token> de votre compte. Comme pour toutes les API backend de Logs Data Platform, vous pouvez utiliser des jetons IAM. Ne modifiez pas ldp-logs, car il s'agit de notre index de destination spécifique.
Lorsque vous utilisez notre endpoint OpenSearch avec Filebeat, celui-ci utilisera le module ingest afin d'analyser et de structurer les logs.
Activer le module Apache de Filebeat
Pour activer la prise en charge d'apache2 dans Filebeat, exécutez la commande suivante :
$ ldp@ubuntu:~$ sudo filebeat modules enable apache
Cela générera un nouveau fichier de module : /etc/filebeat/modules.d/apache.yml. Modifiez-le afin d'y inclure tous les chemins de vos fichiers d'accès et d'erreurs apache2 :
- module: apache
# Access logs
access:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/log/apache2/access.log*","/var/log/apache2/ssl_access.log*"]
# Error logs
error:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/LOG/apache2/error_log*","/var/log/apache2/ssl_error_log*"]
Activer le module System de Filebeat
La prise en charge de Syslog et de l'authentification fait partie du module system de Filebeat. Pour l'activer :
$ ldp@ubuntu:~$ sudo filebeat modules enable system
Une fois encore, cela générera un fichier /etc/filebeat/modules.d/system.yml
- module: system
# Syslog
syslog:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/log/syslog*"]
# Authorization logs
auth:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/log/auth.log*"]
Assurez-vous que les deux chemins de fichiers existent sur votre système.
Activer les pipelines
Si vous utilisez la sortie « Elasticsearch », veillez à configurer les pipelines à l'aide de la commande suivante :
$ filebeat setup --pipelines --modules apache,system
Filebeat se connectera alors à OpenSearch et configurera les pipelines requis par vos modules.
Lancer Filebeat
Lancez le binaire ou le service Filebeat afin de tester votre fichier de configuration, puis rendez-vous sur votre site apache pour un exemple d'envoi de logs. Vous verrez ce type de log dans Graylog :
$ ldp@ubuntu:~$ sudo systemctl restart filebeat.service
ou
$ ldp@ubuntu:~$ sudo /etc/init.d/filebeat restart
Notez la valeur type (apache, syslog ou apache-error) qui indique le fichier source du message de log. Vous pouvez par exemple afficher facilement uniquement vos logs d'accès apache en saisissant fileset_module:apache2 dans la barre de recherche.
Conclusion et ressources utiles
Filebeat est un outil pratique pour envoyer le contenu de vos fichiers de logs actuels vers Logs Data Platform. Il offre un moyen simple et propre d'envoyer vos logs sans modifier la configuration de vos logiciels. N'hésitez pas à consulter les liens ci-dessous pour maîtriser cet outil.
Aller plus loin