sadsfae.ansible_elk
ansible-elk
リモートホストにELK/EFKスタックとFilebeatクライアントを設定するためのAnsibleプレイブック
何をするものですか?
- 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.yml
にlogging_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
- (プレイブックのメッセージを確認してください)
- http://host-01:80(デフォルト、nginx)またはhttp://host-01/kibana(apache)に移動してELKにアクセスします。
- デフォルトのログインは:
- ユーザー名:
admin
- パスワード:
admin
- ユーザー名:
Kibanaインデックスパターンの作成
- 次に、Kibanaインスタンスにログインし、Kibanaインデックスパターンを作成します。
- 注意:サンプルデータは役立つことがありますが、後で試すことができます。
- これで、クライアントを設定して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を介してログ結果が入ってくるのを確認します。
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
- デプロイメント動画はここで見ることができます:
ファイル階層
.
├── 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