sadsfae.ansible_elk

ansible-elk

リモートホストにELK/EFKスタックとFilebeatクライアントを設定するためのAnsibleプレイブック

ELK

GA

何をするものですか?

  • ELKまたはEFKスタック(Elasticsearch, Logstash/Fluentd, Kibana)の6.xシリーズを自動でデプロイします。
    • 5.6および2.4のELKバージョンもブランチとして維持されており、現在のmasterブランチは6.xです。
    • NginxをKibana用のリバースプロキシとして使用し、オプションでapache_reverse_proxy: trueを使ってApacheも利用可能です。
    • FilebeatまたはLogstash-forwarder用のSSL証明書を生成します。
    • ファイアウォールがアクティブな場合、iptablesまたはfirewalldのルールを追加します。
    • Elasticsearchのヒープサイズをメモリの半分、最大32Gに調整します。
    • SSLを使用してLogstash用にFilebeatを利用したELKクライアントをデプロイします(デフォルト)。
    • FluentdをLogstashの代わりに選択した場合は、rsyslogをデプロイし、/var/log/*内のOpenStack関連のログを取得します。
    • すべてのサービスポートはinstall/group_vars/all.ymlで変更できます。
    • オプションでCuratorをインストールできます。
    • オプションでElastic X-Pack Suiteをインストールできます。
    • これはAnsible Galaxyでも利用可能です。

要件

  • 修正されていないRHEL7またはCentOS7のサーバー/クライアント
  • Filebeatを使用するELKクライアント用のRHEL7/CentOS7、RockyまたはFedora
  • 最低8Gのメモリを持つELK/EFKサーバー(少ないメモリでも試すことができますが、5.xシリーズはかなり要求されます - リソースが限られている場合は2.4シリーズを試してください)。
  • ELK/EFKは要求が厳しいため、vm.swappinessを修正することをお勧めします。スワッピングは応答性を低下させます。
    • 自分の判断に任せます。
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

注意事項

  • 現在のELKバージョンは6.xですが、5.6または2.4ブランチをチェックアウトすることもできます。
  • 時間が許す限り、今後の主要なELKバージョンに対してこのプレイブックを更新していきます。
  • 最初にnginxのhtpasswdをadmin/adminに設定します。
  • nginxのポートはデフォルトでKibana用に80/8080およびSSL証明書の取得用になっています(設定可能)。
  • JavaにはOpenJDKを使用します。
  • テストVMで約3分ほどで比較的早く終わります。
  • FluentdはデフォルトのLogstashの代わりに利用できます。
    • group_vars/all.ymllogging_backend: fluentdを設定します。
  • install/group_vars/all.ymlにおいてinstall_curator_tool: trueを設定するとCuratorをインストールします。
  • Elasticsearch、LogStashまたはKibana用のElastic X-Pack Suiteを次のコマンドでインストールします。
    • install_elasticsearch_xpack: true
    • install_kibana_xpack: true
    • install_logstash_xpack: true
    • 注意:X-Packをデプロイすると、ESに追加の認証とセキュリティが追加されます。例えばKibanaは独自のクレデンシャルを持つことになり、デフォルトではユーザー名がelastic、パスワードがchangemeです。

ELK/EFKサーバーの手順

  • リポジトリをクローンし、ホストファイルを設定します。
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
sed -i 's/host-01/elkserver/' hosts
sed -i 's/host-02/elkclient/' hosts
  • Ansible用に非rootユーザーを使用している場合(例:AWS EC2はec2-userを使用することが多い)には、以下を設定してください。デフォルトはrootです。
ansible_system_user: ec2-user
  • プレイブックを実行します。
ansible-playbook -i hosts install/elk.yml

Kibanaインデックスパターンの作成

  • 次に、Kibanaインスタンスにログインし、Kibanaインデックスパターンを作成します。

ELK

  • 注意:サンプルデータは役立つことがありますが、後で試すことができます。

ELK

ELK

ELK

ELK

  • これで、クライアントを設定してFilebeat/SSLを通じてデータを送信できるようになります。

ELKクライアントの手順

  • 生成されたelk_server変数に対してクライアントプレイブックを実行します。
ansible-playbook -i hosts install/elk-client.yml --extra-vars 'elk_server=X.X.X.X'
  • 完了後、ELKに戻り、ELK/EFKクライアントからFilebeatを介してログ結果が入ってくるのを確認します。

ELK

5.6 ELK/EFK(非推奨)

  • 5.6シリーズのELK/EFKも利用可能で、これを使用するには5.6ブランチを利用してください。
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 5.6

2.4 ELK/EFK(非推奨)

  • 2.4シリーズのELK/EFKも利用可能で、これを使用するには2.4ブランチを利用してください。
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 2.4
  • デプロイメント動画はここで見ることができます:

Ansible Elk

ファイル階層

.
├── hosts
├── install
│   ├── elk_client.yml
│   ├── elk.yml
│   ├── group_vars
│   │   └── all.yml
│   └── roles
│       ├── apache
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── 8080vhost.conf.j2
│       │       └── kibana.conf.j2
│       ├── curator
│       │   ├── files
│       │   │   └── curator.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── curator-action.yml.j2
│       │       └── curator-config.yml.j2
│       ├── elasticsearch
│       │   ├── files
│       │   │   ├── elasticsearch.in.sh
│       │   │   └── elasticsearch.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── elasticsearch.yml.j2
│       ├── elk_client
│       │   ├── files
│       │   │   └── elk.repo
│       │   └── tasks
│       │       └── main.yml
│       ├── filebeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── filebeat.yml.j2
│       │       └── rsyslog-openstack.conf.j2
│       ├── firewall
│       │   ├── handlers
│       │   │   └── main.yml
│       │   └── tasks
│       │       └── main.yml
│       ├── fluentd
│       │   ├── files
│       │   │   ├── filebeat-index-template.json
│       │   │   └── fluentd.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── openssl_extras.cnf.j2
│       │       └── td-agent.conf.j2
│       ├── heartbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── heartbeat.yml.j2
│       ├── instructions
│       │   └── tasks
│       │       └── main.yml
│       ├── kibana
│       │   ├── files
│       │   │   └── kibana.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── kibana.yml.j2
│       ├── logstash
│       │   ├── files
│       │   │   ├── filebeat-index-template.json
│       │   │   └── logstash.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── 02-beats-input.conf.j2
│       │       ├── logstash.conf.j2
│       │       └── openssl_extras.cnf.j2
│       ├── metricbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── metricbeat.yml.j2
│       ├── nginx
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── kibana.conf.j2
│       │       └── nginx.conf.j2
│       ├── packetbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── packetbeat.yml.j2
│       └── xpack
│           └── tasks
│               └── main.yml
└── meta
    └── main.yml

56のディレクトリと52のファイルがあります。
プロジェクトについて

Playbook for setting up an ELK/EFK stack and clients.

インストール
ansible-galaxy install sadsfae.ansible_elk
ライセンス
apache-2.0
ダウンロード
1.2k
所有者
hobo devop/sysadmin/SRE