Docker-compose を使用して ELK をデプロイするためのサンプル コード

Docker-compose を使用して ELK をデプロイするためのサンプル コード

環境

  1. ホストIP 192.168.0.9
  2. Docker バージョン 19.03.2
  3. docker-compose バージョン 1.24.0-rc1
  4. elasticsearch バージョン 6.6.1
  5. キバナ バージョン 6.6.1
  6. ログスタッシュ バージョン 6.6.1

1. ELK-dockerfileファイルの書き込みと設定ファイル

● エラスティックサーチ

1. elasticsearch-dockerfile

Centos:latest から
elasticsearch-6.6.1.tar.gz /usr/local/を追加します。
elasticsearch.yml をコピー /usr/local/elasticsearch-6.6.1/config/
jdk1.8 /usr/local/ をコピーします
環境変数JAVA_HOME=/usr/local/jdk1.8
ENV CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
環境変数PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
実行 groupadd elsearch && \
ユーザー追加 elsearch -g elsearch -p elasticsearch && \
chown -R elsearch:elsearch /usr/local/elasticsearch-6.6.1 && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/shanghai" > /etc/timezone && \
yum インストール which -y && \
mkdir /opt/data && \
mkdir /opt/logs
エクスポーズ9200 9300
#主にelsearchユーザーに切り替えてesを起動します
ユーザー検索
ワークディレクトリ /usr/local/elasticsearch-6.6.1/bin/
エントリポイント ["./elasticsearch"]

2. エラスティックサーチ.yml

[root@localhost elasticsearch]# egrep "^[^#]" elasticsearch.yml 
クラスター名: es-cluster
ノード名: ノード1
パス.データ: /opt/data
パス.logs: /opt/logs
ネットワークホスト: 0.0.0.0
http.ポート: 9200
cluster.routing.allocation.disk.threshold_enabled: true
クラスタールーティング割り当てディスクウォーターマーク低: 94%
クラスタールーティング割り当てディスクウォーターマーク高: 96%
クラスタールーティング割り当てディスクウォーターマークフラッドステージ: 98%
discovery.zen.最小マスターノード数: 1

● ログスタッシュ

1. ログスタッシュDockerファイル

Centos:latest から
logstash-6.6.1.tar.gz /usr/local/を追加します。
logstash.yml をコピー /usr/local/logstash-6.6.1/config/
logstash.conf をコピー /usr/local/logstash-6.6.1/config/
jdk1.8 /usr/local/ をコピーします
コピー start.sh /start.sh
環境変数JAVA_HOME=/usr/local/jdk1.8
ENV CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
環境変数PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
mkdir /opt/data && \ を実行します。
mkdir /opt/logs && \
chmod +x /start.sh
エントリポイント ["/start.sh"]

2. ログスタッシュ開始.sh

#!/bin/bash
/usr/local/logstash-6.6.1/bin/logstash -f /usr/local/logstash-6.6.1/config/logstash.conf

3. ログスタッシュ.yml

[root@localhost logstash]# egrep "^[^#]" logstash.yml 
パス.データ: /opt/data
パス.logs: /opt/logs
パイプラインバッチサイズ: 200

4. ログスタッシュ.conf

入力{
 ファイル {
  パス => "/usr/local/nginx/logs/access.log"
  タイプ => "nginx"
  start_position => "始まり"
  sincedb_path => "/dev/null"
 }
 ファイル {
  パス => "/var/log/secure"
  タイプ => "セキュア"
  start_position => "始まり"
  sincedb_path => "/dev/null"
 }
}
#詳しい説明については、以前のブログフィルターを参照してください{
  理解する {
    一致 => {
      「メッセージ」=> '(?<clientip> [0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3}) 2} \:[0-9] {2} \:[0-9] {2} \+[0-9]*\]) "(?<requesttype> [az]+)(?<licturl> [^]+)(?<requestv> http/\ d \。\ d) > [^] |(http | https):// [0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} \/) ""(?
    }
     remove_field => ["メッセージ","ログ","ビート","オフセット","プロスペクター","ホスト","@バージョン"]
  }
}
#outputはesコンテナの出力を指します{
 [タイプ] == "nginx" の場合 {
 エラスティックサーチ
  ホスト => ["es:9200"]
  インデックス => "nginx-%{+YYYY.MM.dd}"
    }
   }
 そうでない場合、[type] == "secure" {
  エラスティックサーチ
  ホスト => ["es:9200"]
  インデックス => "secure-%{+YYYY.MM.dd}"
    }
   }
 }

● キバナ

1. キバナdockerファイル

Centos:latest から
kibana-6.6.1-linux-x86_64.tar.gz /usr/local/を追加します。
kibana.yml をコピー /usr/local/kibana-6.6.1-linux-x86_64/config/
コピー start.sh /start.sh
chmod +x /start.sh を実行します。
エクスポーズ5601
エントリポイント ["/start.sh"]

2. キバナ

[root@localhost kibana]# egrep "^[^#]" kibana.yml 
サーバーポート: 5601
サーバーホスト: "0.0.0.0"
#es コンテナ elasticsearch.hosts のポート 9200 を指定します: ["http://es:9200"]

3. キバナを起動します

#!/bin/bash
キバナ

2. docker-compose、ymlファイルの書き込み

[root@localhost elk_dockerfile]# cat docker-compose.yml 

バージョン: '3.7'
サービス:
 エラスティックサーチ:
  画像: elasticsearch:elk
  コンテナ名: es
  ネットワーク:
   -ヘラジカ
  ボリューム:
   - /opt/データ:/opt/データ
   - /opt/logs:/opt/logs
  さらす:
   - 9200
   - 9300
  再起動: 常に
  依存:
   - ログスタッシュ
   -キバナ
 ログスタッシュ:
  画像: logstash:elk
  コンテナ名: logstash
  ネットワーク:
   -ヘラジカ
  ボリューム:
   - /opt/logstash/データ/:/op/データ
   - /opt/logstash/logs/:/opt/logs
   - /opt/elk/elk_dockerfile/logstash/logstash.conf:/usr/local/logstash-6.6.1/config/logstash.conf
   - /usr/local/nginx/logs:/usr/local/nginx/logs
   - /var/log/secure:/var/log/secure
  再起動: 常に
 キバナ:
  画像: キバナ:エルク
  コンテナ名: kibana
  ポート:
   -5601:5601
  ネットワーク:
   -ヘラジカ
  ボリューム:
   - /opt/elk/elk_dockerfile/kibana/kibana.yml:/usr/local/kibana-6.6.1-linux-x86_64/config/kibana.yml
ネットワーク:
 ヘラジカ:

作成ファイルのバージョンは以下を指します

3. アクセスインターフェース

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker ベースの ELK を素早く構築する方法
  • NodeフレームワークをELKに接続する実践の簡単な概要
  • Docker を使用して ELK ログ システムを構築する例
  • ELKの原理と導入の詳細な分析

<<:  CentOS 7 で yum を使用して MySQL 5.7.20 をインストールする最も簡単な方法

>>:  Linux CentOS 7.4 で mysql5.7.20 のパスワードを変更する方法

推薦する

Dockerはターミナルで中国語を入力できない問題を解決します

序文:ある日、DockerでMySQLサービスを構築したところ、MySQLのコマンドラインで中国語の...

HTML メタビューポート属性の詳細な説明

ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...

VMware Workstation Pro が Windows で実行されない場合の解決策

国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...

フロントエンド制作に関する簡単な議論: 互換性のために IE6 はまだ必要ですか?

国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...

Vueコンポーネントの7つの通信方法についての深い理解

目次1. props/$emit導入コードサンプル2.Vスロット導入コードサンプル3.$refs/ ...

Linux ソースコードからのソケット (TCP) バインドの詳細な説明

目次1. 最も単純なサーバー側の例2. バインドシステムコール2.1、inet_bind 2.2、i...

メンテナンス可能なJSコードの書き方を教えます

目次保守可能なコードとは何ですか?コード規約1. 読みやすさ2. 変数と関数の命名3. 透過的な変数...

MySQL 5.7 における部分テーブルのデュアルマスター同期の実装プロセスの詳細な説明

序文最近、私はある要件に遭遇しました。会社の業務上、2 つのデータベース間の一部のテーブルは、リアル...

MySQL 8.0.24 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...

MySQLを閉じることができない問題を解決する方法

mysql が閉じない場合の解決策:コンピュータのタスクバーを右クリックしてタスクマネージャーを開き...

HTML フォーム タグの使用方法を学ぶチュートリアル

HTML のフォームを使用して、ユーザーからさまざまな種類の入力情報を収集できます。フォームは、実際...

Vueのドラッグスクリーンショット機能を実装する簡単な方法

マウスをドラッグしてページのスクリーンショットを撮ります(指定した領域にスクリーンショットをドラッグ...

CSS セレクターの重みの理解(個人テスト)

コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...

CSSテーマを簡単に切り替える方法の詳細な説明

最近、個人の Web サイトに非常にシンプルなカラー スキーム (テーマ) スイッチャーを追加しまし...

MySQL における楽観的ロックと悲観的ロックの例

データベース管理システムにおける同時実行制御のタスクは、データベース内の同じデータに同時にアクセスす...