Docker を介して ELK ログ収集システムをデプロイする


注: elasticsearch、kibana、logstash、および filebeat のバージョンは一貫している必要があります。 elasticsearch-head を使用すると、ブラウザを通じて elasticsearch のステータスとインデックス データを簡単に表示できます。

動作原理: filebeat (軽量データ収集エンジン) を通じてログを収集した後、それらを Logstash (データ収集および処理エンジン) にプッシュしてフィルタリング、分析、エンリッチメント、統一フォーマットなどの操作を行い、処理されたログを Elasticsearch (分散検索) に保存します。 Engine)、最後に Kibana (視覚化プラットフォーム) が Elasticsearch に保存されたインデックス付きデータを検索して表示します。

環境の説明:

応用 バージョン
港湾労働者 19.03.9
弾性検索 7.17.2
キバナ 7.17.2
ログスタッシュ 7.17.2
ファイルビート 7.17.2
エラスティックサーチヘッド 5.0

1.画像プル

docker pull  docker.elastic.co/elasticsearch/elasticsearch:7.17.2
docker pull  mobz/elasticsearch-head:5                           
docker pull  docker.elastic.co/kibana/kibana:7.17.2             
docker pull  docker.elastic.co/logstash/logstash:7.17.2     
docker pull  docker.elastic.co/beats/filebeat:7.17.2           

2. elasticsearchのインストール

  1. elasticsearch.yml ファイルを準備する
# 创建文件夹
mkdir /home/southgisdata/elasticsearch
# 创建 elasticsearch.yml 文件
vi  /home/southgisdata/elasticsearch/elasticsearch.yml
------------------------写入---------------------------
network.host: 0.0.0.0 
cluster.name: "docker-cluster" 
http.cors.enabled: true 
http.cors.allow-origin: "*" 
#cluster.initial_master_nodes: ["node-1"] 
xpack: 
 ml.enabled: false
 monitoring.enabled: false 
 security.enabled: false 
 watcher.enabled: false
#去除以下两项的注释,则开启身份认证
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
------------------------结束---------------------------
  1. elasticsearchコンテナを実行する
docker run -d --restart=always -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /home/southgisdata/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
--name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.17.2
  1. ブラウザの検証を確認します
    : 192.168.1.100:9200 にアクセスします。
    ここに画像の説明を挿入します

コマンドライン検証: curl http://localhost:9200/_nodes/http?pretty
ここに画像の説明を挿入します

注:次のエラーが発生した場合!
ここに画像の説明を挿入します
加工方法は以下の通りです。

  1. メモリを変更します。
    /etc/sysctl.conf ファイルに、最後に次の内容を追加します。
vm.max_map_count=262144        
  1. 構成ファイル elasticsearch.yml の次の構成を有効にします。
cluster.initial_master_nodes: ["node-1"]

3. elasticsearch-head のインストール

  1. elasticsearch-head コンテナを実行する
docker run -d --restart=always -p 9100:9100 --name elasticsearch-head mobz/elasticsearch-head:5
  1. 主にデータ閲覧の右側にインデックスデータを表示できるようにvendor.jsを修正
    ここに画像の説明を挿入します
# 创建文件夹
mkdir -p /home/southgisdata/elasticsearch-head
# 进入文件夹下
cd /home/southgisdata/elasticsearch-head
# 拷贝 vendor.js 文件到宿主机上
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js ./
# 修改 vendor.js 文件内容
sed -i '/contentType:/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js

sed -i '/var inspectData = s.contentType/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js
  1. elasticsearch-head コンテナを再度実行します
# 删除容器
docker rm -f elasticsearch-head
# 运行容器
docker run -d --restart=always -p 9100:9100 -v /home/southgisdata/elasticsearch-head/vendor.js:/usr/src/app/_site/vendor.js --name elasticsearch-head mobz/elasticsearch-head:5
  1. 検証
    **ブラウザ検証:**192.168.1.100:9100 にアクセスしてください。
    ここに画像の説明を挿入します

4.logstashのインストール

  1. logstash.yml および Pipelines.yml 構成ファイルを準備する
# 创建文件夹
mkdir -p /home/southgisdata/logstash/config
# 创建 logstash.yml 文件
vi /home/southgisdata/logstash/config/logstash.yml
------------------------写入---------------------------
config:
  reload:
    automatic: true
    interval: 3s
xpack:
  management.enabled: false
  monitoring.enabled: false
------------------------结束---------------------------

# 创建 pipelines.yml 文件
vi /home/southgisdata/logstash/config/pipelines.yml
------------------------写入---------------------------
- pipeline.id: test
  path.config: "/usr/share/logstash/pipeline/logstash-filebeat.conf"
------------------------结束---------------------------
  1. logstash-filebeat.conf設定ファイルを準備する
# 创建文件夹
mkdir -p /home/southgisdata/logstash/pipeline
# 创建 logstash.yml 文件
vi /home/southgisdata/logstash/pipeline/logstash-filebeat.conf
------------------------写入---------------------------
# 访问端口配置
input {
  beats {
    port => 5044
  }
}

# 过滤条件配置
#filter{
#  grok{
#    match => {
#    "message" => "%{COMBINEDAPACHELOG}"
#   }
#  }
#}

# 输出到ES配置
output {
  elasticsearch {
    hosts => ["http://192.168.1.100:9200"]	            
    index => "nginx_log"
  }
}
------------------------结束---------------------------
  1. logstash コンテナーを実行する
docker run -d  -p 5044:5044 \
-v /home/southgisdata/logstash/pipeline:/usr/share/logstash/pipeline \
-v /home/southgisdata/logstash/config:/usr/share/logstash/config \
--name logstash docker.elastic.co/logstash/logstash:7.17.2
  1. 検証:
    起動に約 2 分かかります。その後、Web にアクセスしてみると、es-head の Web インターフェイスに nginx_log のインデックスが表示されます。
    ここに画像の説明を挿入します

5. キバナのインストール

  1. kibana.yml設定ファイルを準備する
# 创建文件夹
mkdir -p /home/southgisdata/kibana
# 创建 kibana.yml 配置文件
vi /home/southgisdata/kibana/kibana.yml
------------------------写入---------------------------
server.name: kibana
# 允许所有地址访问
server.host: "0.0.0.0"
# elasticsearch的地址
elasticsearch.hosts: ["http://192.168.1.100:9200/"] 
xpack.monitoring.ui.container.elasticsearch.enabled: true
------------------------写入---------------------------
  1. kibanaコンテナを実行する
docker run -d --restart=always -p 5601:5601 \
-v /home/southgisdata/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--name kibana docker.elastic.co/kibana/kibana:7.17.2
  1. 検証
    elasticsearch-head を確認すると、kibanna によって生成されたインデックスがさらにいくつかあることがわかります。
    ここに画像の説明を挿入します

6. ファイルビートのインストール

  1. filebeat.yml設定ファイルを準備します
# 创建文件夹
mkdir -p /home/southgisdata/filebeat
# 创建 kibana.yml 配置文件
vi /home/southgisdata/filebeat/filebeat.yml
------------------------写入---------------------------
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/access.log   #日志文件路径

output.logstash:
  hosts: ["192.168.1.100:5044"]  #logstash访问地址
------------------------写入---------------------------
  1. filebeat コンテナを実行すると、
    filebeat 構成ファイルと nginx ログがマップされるため、nginx ログが変更されると、マップされたファイルも同期されます。
docker run -d --restart=always --name filebeat \
-v /home/southgisdata/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/nginx/logs/access.log:/var/log/access.log \
-d docker.elastic.co/beats/filebeat:7.17.2
  1. 確認
    nginx_logのインデックスを確認するとnginxのログデータが確認できます。
    ここに画像の説明を挿入します

7. 収集したデータをkibanaで表示する

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_41166785/article/details/124293408