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 のパスワードを変更する方法

推薦する

MySQLオンラインデッドロック分析練習

序文MySQL を学習する際に、MySQL のロック メカニズムについて簡単に理解したことがあると思...

Vueはツリーテーブルを実装する

この記事では、ツリーテーブルを実装するためのVueの具体的なコードを例として紹介します。具体的な内容...

Docker nginxは1つのホストを実装して複数のサイトを展開します

とあるサイトからレンタルした仮想マシンの有効期限が近づいており、更新料が200元以上かかります。Al...

HTML のキャンバスに基づくスクリーンショットのデモ

冒頭に書いた以前、Renren で JS ベースのスクリーンショット ソリューションについて説明した...

MySQL での置換例の詳細な説明

MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...

Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法

1. Vueプロジェクトのパッケージ化開発されたvueプロジェクトに次の名前を入力し、パッケージ化し...

Spark RDD をデータフレームに変換し、それを MySQL に書き込む例

DataframeはSpark 1.3.0で導入された新しいAPIで、Sparkで大規模な構造化デー...

MySql8.023 インストール プロセスの詳細なグラフィック説明 (初回インストール)

まず、MySQL公式サイトからインストールパッケージをダウンロードします。MySQLはオープンソース...

JavaScript 配列の重複排除とフラット化関数の紹介

目次1. 配列の平坦化(配列の次元削減とも呼ばれる)方法1: 削減メソッドを使用する方法2: スタッ...

Vue はタブ ラベルを実装します (ラベルが自動スクロールを超える)

作成されたタブラベルがページの表示領域を超えると、タブラベルの距離だけ自動的にスクロールされます。ま...

MySQL で特殊文字を含むデータベース名を作成する方法の例

序文この記事では、MySQL で特殊文字を使用してデータベース名を作成する方法について説明します。こ...

HTML の相対パス (Relative Path) と絶対パス (Absolute Path) の詳細な理解

私は 1 年以上 Java Web 開発に携わっており、HTML または JSP ページの作成は避け...

CentOS7 (YUM) での MySQL 5.7 のインストールと設定のチュートリアル

インストール環境: CentOS7 64ビット、MySQL5.7 1. YUMソースを設定するMyS...

CSS3 シンプルカットカルーセル画像実装コード

実装のアイデアまず、親コンテナーを作成し、2 つの順序なしリストを使用して、柔軟なレイアウトで親コン...

Innodb システムテーブルスペースのメンテナンス方法

環境説明:実行中の MySQL 環境があります。以前の構成ファイルの設定が単純すぎたため (inno...