一緒に創造し、成長するために一緒に働きましょう!「ナゲッツデイリー新プラン・8月アップデートチャレンジ」に参加して29日目、イベント詳細はこちら
logstash を最適化して Redis キャッシュ ログ構成を読み取る
次に、さらに最適化するために、filebeat によって redis から収集されたログを読み取るように logstash を構成します (上記)。
1.構成のアイデアを最適化する
以前のlogstashはredisが収集したログデータの構成を読み取るため多くの手順が必要で、新しいログが追加されるたびに特に面倒です
最適化の前にログ収集の構成手順を追加します。
1. filebeat が収集するログを設定し、タグを追加します
2. filebeat がログを保存する場所を構成する
3.logstash がデータを読み取る場所を構成する
4.logstash がデータを保存する場所を構成する
考えてみれば、logstashが実際にデータを読み取るところは同じで、キーはどこに保存するかということで、filebeatの設定時にすべてのログをredisのキーに保存し、すべてのログを保存する場合は、タグを付けます。 logstash が収集すると、このキーのデータのみを読み取り、最後にタグ tag に従って分類して保存するため、構成の 2 つのステップが削減されます。
最適化後、ログ構成ステップを追加します。
1. filebeat で収集するログを設定する
2. タグがログスタッシュに保存されている es インデックス ライブラリを構成する
2.ファイルビート構成を最適化する
各ログは異なるタグでマークされ、すべてのログは nginx-all-key に保存されます
[root@nginx /etc/filebeat]# vim filebeat.yml
#定义收集什么日志
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/www_access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["nginx-www"]
- type: log
enabled: true
paths:
- /var/log/nginx/bbs_access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["nginx-bbs"]
#定义redis集群地址以及定义索引名
output.redis:
hosts: ["192.168.81.220:6379"]
key: "nginx-all-key"
db: 0
timeout: 5
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
复制代码
3.logstash 構成を最適化する
残りのキーは 1 つだけで、このキーからデータを取得すると、タグごとに異なるインデックス ライブラリが作成されます。
#
input {
redis {
host => "192.168.81.220"
port => "6379"
db => "0"
key => "nginx-all-key"
data_type => "list"
}
}
output {
if "nginx-www" in [tags] {
stdout{}
elasticsearch {
hosts => "http://192.168.81.210:9200"
manage_template => false
index => "nginx-www-access-%{+yyyy.MM.dd}"
}
}
if "nginx-bbs" in [tags] {
stdout{}
elasticsearch {
hosts => "http://192.168.81.210:9200"
manage_template => false
index => "nginx-bbs-access-%{+yyyy.MM.dd}"
}
}
}
复制代码
4. 新しいブログ ログを収集する
4.1. ブログログのパスを指定するように filebeat を設定する
パスを指定するだけでよく、他の設定は必要ありません
[root@nginx ~]# vim /etc/filebeat/filebeat.yml
- type: log
enabled: true
paths:
- /var/log/nginx/blog_access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["nginx-blog"]
[root@nginx ~]# systemctl restart filebeat
复制代码
4.2. logstash カスタム インデックス ライブラリの設定
作成するインデックス ライブラリを追加するだけです。
[root@elasticsearch ~]# vim /etc/logstash/conf.d/redis.conf
if "nginx-blog" in [tags] {
stdout{}
elasticsearch {
hosts => "http://192.168.81.210:9200"
manage_template => false
index => "nginx-blog-access-%{+yyyy.MM.dd}"
}
}
复制代码
4.3. logstash の開始
[root@elasticsearch ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf
复制代码
4.4. ログの生成と redis キーの表示
1.产生日志
ab -c 100 -n 1000 http://bbs.jiangxl.com/
ab -c 100 -n 1000 http://www.jiangxl.com/
ab -c 100 -n 1000 http://blog.jiangxl.com/
2.查看redis上的key
[root@node-2 ~]# redis-cli --raw
127.0.0.1:6379> KEYS *
filebeat
nginx-all-key
127.0.0.1:6379> LLEN nginx-all-key
3000
nginx-all-key中一共有3000条数据,正好就是我们用ab产生的3000个访问
复制代码
4.5. es インデックス ライブラリが生成されているかどうかを確認する
3 つのログのインデックス ライブラリがすべて生成されます