Logstash は、データ送信、フォーマット処理、フォーマットされた出力を実現できる強力なデータ処理ツールであり、ログ処理によく使用される強力なプラグイン機能を備えています。
入力
データはファイル、ストレージ、データベースから抽出できます。入力には 2 つのオプションがあります。1 つはフィルタリングとプルーニングのためにデータを渡すことです。もう 1 つは Output
に直接与えられますフィルター
データを動的に変換および解析する機能。データ情報はカスタマイズされた方法でフィルタリングおよびプルーニングできます
出力
多数の出力オプションを提供することで、必要な場所にデータを送信でき、多数のダウンストリームのユースケースを柔軟に実現できます。
Logstash は Java に基づいて開発されたプログラムであり、JVM で実行する必要があります。jvm.options を設定することで JVM に設定できます。たとえば、メモリの最大値と最小値、ガベージ クリーニングのメカニズムなどです。ここでは、最もよく使用されるもののうち 2 つだけを紹介します。
JVM のメモリ割り当ては大きすぎても小さすぎてもいけません。大きすぎるとオペレーティング システムの速度が低下します。始めるには小さすぎます。
リーリーテスト用に httpd をインストールし、Apache の accless.log ログ ファイルを収集するように Logstash を構成します
リーリー リーリーLogstash は組み込みコマンドですが、環境変数には含まれていないため、このコマンドを使用するには絶対パスのみを使用できます。
リーリー現在のセッションで logstash を実行した後、このセッションを一時的にセッション 1 として閉じず、新しいウィンドウをセッション 2 として開きます。 リーリー
開始後、セッション2でcurlコマンドを使用してテストしますリーリー
その後、前のセッション 1 に戻ると出力情報が表示されますリーリー
この時点で、最も単純な Logstash 構成が完了しました。ここでは、収集された直接出力がフィルタリングやプルーニングなしで収集されます。
上面的配置时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。这些在接下来的文章在进行讲解,先放一张架构图吧。
以上がElasticsearchの基本フレンドLogstashについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。