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.3k
          
所有者
 hobo devop/sysadmin/SRE

