Logstash ist ein leistungsstarkes Datenverarbeitungstool, das Datenübertragung, Formatverarbeitung und formatierte Ausgabe realisieren kann und über leistungsstarke Plug-In-Funktionen verfügt, die häufig für die Protokollverarbeitung verwendet werden.
Eingabe
Daten können aus Dateien, Speichern und Datenbanken extrahiert werden. Die eine besteht darin, sie zum Filtern und Bereinigen zu übergeben. Der andere wird direkt an Output übergeben
Filter
Fähigkeit zur dynamischen Transformation und Analyse von Daten. Dateninformationen können individuell gefiltert und bereinigt werden
Ausgabe
Mit zahlreichen Ausgabeoptionen können Sie Daten dorthin senden, wo Sie sie möchten, und haben die Flexibilität, zahlreiche nachgelagerte Anwendungsfälle freizuschalten.
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.1.rpm yum install -y ./logstash-6.0.1.rpm
vim /etc/logstash/logstash.yml path.data: /var/lib/logstash # 数据存放路径 path.config: /etc/logstash/conf.d/*.conf # 其他插件的配置文件,输入输出过滤等等 path.logs: /var/log/logstash # 日志存放路径
Logstash ist ein auf Java entwickeltes Programm, das in der JVM ausgeführt werden muss. Es kann durch die Konfiguration von jvm.options festgelegt werden. Zum Beispiel der maximale und minimale Speicher, der Müllbereinigungsmechanismus usw. Hier sind nur zwei der am häufigsten verwendeten.
Die Speicherzuweisung von JVM darf nicht zu groß oder zu klein sein. Wenn sie zu groß ist, wird das Betriebssystem verlangsamt. Zu klein, um anzufangen.
vim /etc/logstash/jvm.options # logstash有关JVM的配置 -Xms256m # logstash最大最小使用内存 -Xmx1g
Installieren Sie ein httpd zum Testen und konfigurieren Sie Logstash, um die Protokolldatei accless.log von Apache zu erfassen
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 # 输出至屏幕 } }
Logstash ist ein integrierter Befehl, der jedoch nicht in den Umgebungsvariablen enthalten ist. Daher können Sie für die Verwendung dieses Befehls nur den absoluten Pfad verwenden.
/usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/test.conf # 测试执行配置文件,-t要在-f前面 Configuration OK # 表示测试OK
Schließen Sie diese Sitzung nicht, nachdem Sie logstash in der aktuellen Sitzung ausgeführt haben. Nennen Sie sie vorübergehend Sitzung 1 und öffnen Sie dann ein neues Fenster als Sitzung 2
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf
curl 172.18.68.14
{ "@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\"" }
上面的配置时Logsatsh从日志文件中抽取数据,然后输出至屏幕。那么在生产中往往是将抽取的数据过滤后输出到Elasticsearch中。下面讲解Elasticsearch结合Logstash
Logstash抽取httpd的access.log文件,然后经过过滤(结构化)之后输出给Elasticsearch Cluster,在使用Head插件就可以看到抽取到的数据。(Elasticsearch Cluster与Head插件搭建请查看前两篇文章)
配置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地址,前面文章有讲)
选择今天的日期,就能看到一天内访问的所有数据。
监控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" } }
现在已经搭建成在节点安装Logstash并发送到Elasticsearch中去,但是Logstash是基于Java开发需要运行在JVM中,所以是一个重量级采集工具,仅仅对于一个日志采集节点来说使用Logstash太过重量级,那么就可以使用一个轻量级日志收集工具Filebeat来收集日志信息,Filebeat同一交给Logstash进行过滤后再Elasticsearch。这些在接下来的文章在进行讲解,先放一张架构图吧。
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des Basisfreundes Logstash von Elasticsearch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!