入力プラグインの一般的なタイプと基本的な使用法Logstashデータ処理サービスの入力
記事ディレクトリ
1.一般的なタイプの入力プラグイン
logstashのプラグインには通常、stdin(デバッグ用)、file、redis、kafka、beats(filebeat)タイプがあります。
2.Logstash入力の一般的な構成パラメーター
入力のいくつかの一般的な構成は自動であり、これらのフィールドは、Redis、kakfa、filebeat、fileなどのさまざまなタイプの入力プラグインで使用できます。
add_field
:イベントにフィールドを追加し、イベントの先頭に配置します。これは通常、ログソースをマークするために使用されます。たとえば、どのプロジェクトがどのアプリケーションに属しているか
tags
:アクセスログやエラーログの表示など、ログの他のプロパティをマークするために任意の数のタグを追加します
type
:ログタイプなど、すべての入力のフィールドを追加します
これらの3つの構成フィールドはすべて、収集されたログデータに追加されます。構成する3つのフィールドの1つを選択するだけで済みます。前哨出力プラグインでは、フィールドと値をそれぞれ一致させることができます。フィールドのログデータが保存されます。さまざまなESインデックスライブラリで。
1.配置logstash
[root@elkstack-1 ~]# vim /data/elk/logstash/conf.d/test.conf
input {
file {
path => "/var/log/test/*.log"
exclude => "error.log"
start_position => "beginning"
tags => "web" #增加一个标签
type => "nginx" #增加一个字段type,值为nginx
add_field => { #在日志数据的最前面增加字段信息,project为web,app为nginx
"project" => "web"
"app" => "nginx"
}
}
}
filter {
}
output {
file {
path => "/tmp/log.txt"
}
}
2.重载配置
[root@elkstack-1 ~]# ps aux | grep logstash | grep -v grep | awk '{print $2}' |xargs kill -HUPUP
収集されたログデータ情報を観察し、構成したいくつかのフィールドプロパティを追加します
{"message":"web field","app":"nginx","path":"/var/log/test/access.log","tags":["web"],"host":"elkstack-1","project":"web","@version":"1","@timestamp":"2021-12-09T09:18:58.735Z","type":"nginx"}
収集されたログデータはjson形式であり、jsonパーサーで表示できます。
3.Inputは、ファイルタイプの入力プラグインを構成します
/ var / log / messagesを例にとると、メッセージ内のログはlogstashを介して/tmp/log.txtファイルに出力されます。
3.1。クラシックケース
1.编写配置文件
[root@elkstack-1 logstash]# cat conf.d/test.conf
input { #定义日志的来源
file { #类型为file,从文件中读取日志数据
path => "/var/log/message" #日志路径
}
}
filter { #过滤器
}
output { #定义日志输出的存储路径
file {
path => "/tmp/log.txt" #日志路径
}
}
2.重载logstash
[root@elkstack-1 logstash]# ps aux | grep logstash | grep -v grep | awk '{print $2}' |xargs kill -HUP
或者
[root@elkstack-1 logstash]# systemctl restart logstash
/tmp/log.txtファイルにlogstashによって書き込まれたデータがあるかどうかを確認します。
1.向/var/log/messages中插入日志数据
[root@elkstack-1 ~]# echo "123456" >> /var/log/messages
3.追踪/tmp/log.txt观察日志是输出
[root@elkstack-1 ~]# tail -f /tmp/log.txt
{"path":"/var/log/messages","host":"elkstack-1","@version":"1","@timestamp":"2021-12-09T08:12:43.656Z","message":"123456"}
3.2.ファイルタイプの一般的なフィールド
path
:ワイルドカードマッチングをサポートするログのストレージパス。
exclude
:収集する必要のないログファイルを除外します。
start_position
:ログファイルの読み取りを開始する場所を指定します。デフォルトでは、最後から読み取りを開始します。指定されたbeginingのパラメータ値は、ファイルの先頭からの読み取りを意味します。
例:/ var / log / testディレクトリ内のすべてのログファイルを読み取りますが、error.logファイルは除外します。
1.logstash配置文件内容
[root@elkstack-1 ~]# vim /data/elk/logstash/conf.d/test.conf
input {
file {
path => "/var/log/test/*.log" #读取test目录下的所有日志文件
exclude => "error.log" #不采集error日志文件
start_position => "beginning" #从文件的开头开始读取
}
}
filter {
}
output {
file {
path => "/tmp/log.txt"
}
}
2.重载logstash
[root@elkstack-1 ~]# ps aux | grep logstash | grep -v grep | awk '{print $2}' |xargs kill -HUP
ログ収集の効果を観察する
1.向access日志中写入数据
[root@elkstack-1 ~]# echo access12332 > /var/log/test/access.log
[root@elkstack-1 ~]# echo access1 >> /var/log/test/access.log
2.日志被logstash正常的采集到了
[root@elkstack-1 ~]# tail -f /tmp/log.txt
{"path":"/var/log/test/access.log","message":"2","@version":"1","host":"elkstack-1","@timestamp":"2021-12-09T08:53:54.953Z"}
{"path":"/var/log/test/access.log","message":"access1","@version":"1","host":"elkstack-1","@timestamp":"2021-12-09T08:53:59.969Z"}
3.写入error日志则不会被采集
[root@elkstack-1 ~]# echo abc >> /var/log/test/access.log
4.logstashビートタイプのプラグイン
Beatsプラグインは、Beatsデータコレクターからデータを受信するために使用されます。一般的なデータコレクターには、Filebeat、Metricbeat、Packetbeat、Winlogbeat、Auditbeat、Heartbeat、Functionbeatなどがあります。
例は次のとおりです。
1.配置logstash
[root@elkstack-1 ~]# vim /data/elk/logstash/conf.d/test.conf
input {
beats {
host => "0.0.0.0"
port => 5044
}
}
filter {
}
output {
file {
path => "/tmp/log.txt"
}
}