Maison  >  Article  >  Tutoriel système  >  Explication détaillée de Logstash, l'ami de base d'Elasticsearch

Explication détaillée de Logstash, l'ami de base d'Elasticsearch

WBOY
WBOYoriginal
2024-07-18 06:56:47938parcourir

Explication détaillée de Logstash, lami de base dElasticsearch

Logstash est un puissant outil de traitement de données qui peut réaliser la transmission de données, le traitement du format, la sortie formatée et dispose de puissantes fonctions de plug-in, qui sont souvent utilisées pour le traitement des journaux.

1.Principe

Entrée

Les données peuvent être extraites des fichiers, du stockage et des bases de données. La première consiste à les transmettre à Filter pour le filtrage et l'élagage. L'autre est donné directement à Output

Filtre

Capacité à transformer et analyser dynamiquement les données. Les informations sur les données peuvent être filtrées et élaguées de manière personnalisée

Sortie

Fournissant de nombreuses options de sortie, vous pouvez envoyer des données où vous le souhaitez, avec la flexibilité de débloquer de nombreux cas d'utilisation en aval.

Explication détaillée de Logstash, lami de base dElasticsearch

2. Installation et utilisation
1.Installation
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.1.rpm
yum install -y ./logstash-6.0.1.rpm
2.Fichier de configuration Logstash
vim /etc/logstash/logstash.yml
path.data: /var/lib/logstash                                    # 数据存放路径
path.config: /etc/logstash/conf.d/*.conf                        # 其他插件的配置文件,输入输出过滤等等
path.logs: /var/log/logstash                                    # 日志存放路径
Fichier de configuration 3.JVM dans Logstash

Logstash est un programme développé basé sur Java et doit s'exécuter dans la JVM. Il peut être défini pour la JVM en configurant jvm.options. Par exemple, la mémoire maximale et minimale, le mécanisme de nettoyage des ordures, etc. Voici seulement deux des plus couramment utilisés.

L'allocation de mémoire de la JVM ne peut pas être trop grande ou trop petite, si elle est trop grande, cela ralentira le système d'exploitation. Trop petit pour commencer.

vim /etc/logstash/jvm.options                               # logstash有关JVM的配置
-Xms256m                                                    # logstash最大最小使用内存
-Xmx1g
4. La configuration de collecte de journaux la plus simple

Installez un httpd pour tester et configurez Logstash pour collecter le fichier journal accless.log d'Apache

yum install httpd
echo "Hello world" > /var/www/html/index.html               # 安装httpd,创建首页用于测试
vim /etc/logstash/conf.d/test.conf
input {
    file {                                                  # 使用file作为数据输入
        path => ['/var/log/httpd/access_log']               # 设定读入数据的路径
        start_position => beginning                         # 从文件的开始处读取,end从文件末尾开始读取
    }
}
output {                                                    # 设定输出的位置
    stdout {
        codec => rubydebug                                  # 输出至屏幕
    }
}
5. Fichier de configuration de test

Logstash est une commande intégrée mais elle n'est pas incluse dans les variables d'environnement, vous ne pouvez donc utiliser que le chemin absolu pour utiliser cette commande.

/usr/share/logstash/bin/logstash -t  -f  /etc/logstash/conf.d/test.conf   # 测试执行配置文件,-t要在-f前面
Configuration OK                                                          # 表示测试OK
6. Démarrez logstash

Après avoir exécuté logstash dans la session en cours, ne fermez pas cette session temporairement. Appelez-la Session 1, puis ouvrez une nouvelle fenêtre en tant que Session 2

.
/usr/share/logstash/bin/logstash  -f  /etc/logstash/conf.d/test.conf

Après le démarrage, utilisez la commande curl dans la session 2 pour tester

curl 172.18.68.14

Ensuite, vous pourrez voir les informations de sortie lorsque vous reviendrez à la session précédente 1

{
      "@version" => "1",
          "host" => "logstash.shuaiguoxia.com",
          "path" => "/var/log/httpd/access_log",
    "@timestamp" => 2017-12-10T14:07:07.682Z,
       "message" => "172.18.68.14 - - [10/Dec/2017:22:04:44 +0800] \"GET / HTTP/1.1\" 200 12 \"-\" \"curl/7.29.0\""
}

À ce stade, la configuration Logstash la plus simple a été complétée. Ici, il s'agit simplement de la sortie directe collectée sans filtrage ni élagage.

3. Elasticsearch et Logstash

上面的配置时Logsatsh从日志文件中抽取数据,然后输出至屏幕。那么在生产中往往是将抽取的数据过滤后输出到Elasticsearch中。下面讲解Elasticsearch结合Logstash

Logstash抽取httpd的access.log文件,然后经过过滤(结构化)之后输出给Elasticsearch Cluster,在使用Head插件就可以看到抽取到的数据。(Elasticsearch Cluster与Head插件搭建请查看前两篇文章)

Explication détaillée de Logstash, lami de base dElasticsearch

配置Logstash

    vim /etc/logstash/conf.d/test.conf
    input {
    file {
        path => ['/var/log/httpd/access_log']
        start_position => "beginning"
    }
    }
    filter {
    grok {
        match => {
            "message" => "%{COMBINEDAPACHELOG}"
        }

        remove_field => "message"   
    }
    }
    output {
    elasticsearch {
        hosts => ["http://172.18.68.11:9200","http://172.18.68.12:9200","http://172.18.68.13:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
        action => "index"
        document_type => "apache_logs"
    }
    }

启动Logstash

     /usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/test.conf       # 测试配置文件
    Configuration OK
     /usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/test.conf         # 启动Logstash

测试

每个执行10次172.18.68.14,位Logstash的地址

    curl 127.0.0.1
    curl 172.18.68.14

验证数据

使用浏览器访问172.18.68.11:9100(Elastisearch 安装Head地址,前面文章有讲)

选择今天的日期,就能看到一天内访问的所有数据。

Explication détaillée de Logstash, lami de base dElasticsearch

四、监控其他

监控Nginx日志

仅仅列了filter配置块,input与output参考上一个配置

    filter {
        grok {
                match => {
                        "message" => "%{HTTPD_COMBINEDLOG} \"%{DATA:realclient}\""
                }
                remove_field => "message"
        }
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
                remove_field => "timestamp"
        }
    }

监控Tomcat

仅仅列了filter配置块,input与output参考上一个配置

    filter {
        grok {
                match => {
                        "message" => "%{HTTPD_COMMONLOG}"
                }
                remove_field => "message"
        }
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
                remove_field => "timestamp"
        }
    } 
五、Filebeat

现在已经搭建成在节点安装Logstash并发送到Elasticsearch中去,但是Logstash是基于Java开发需要运行在JVM中,所以是一个重量级采集工具,仅仅对于一个日志采集节点来说使用Logstash太过重量级,那么就可以使用一个轻量级日志收集工具Filebeat来收集日志信息,Filebeat同一交给Logstash进行过滤后再Elasticsearch。这些在接下来的文章在进行讲解,先放一张架构图吧。

Explication détaillée de Logstash, lami de base dElasticsearch

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn