redis からログを読み取るように logstash の構成を最適化します (以下)。

一緒に創造し、成長するために一緒に働きましょう!「ナゲッツデイリー新プラン・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 つのログのインデックス ライブラリがすべて生成されます

ここに画像の説明を挿入

おすすめ

転載: juejin.im/post/7136856884874575886