freedomofpress.elk
ELK Ansible ロール
ログの集約と監視のために ELKスタック(Elasticsearch、Logstash、Kibana)をインストールします。アラート機能を追加するために Riemann との統合を意図しています。
要件
- freedomofpress.generate-ssl-cert ロール
- ログサーバー用に2GBのRAM
- ログを送信するログクライアント
ロール変数
elk_kibana_user: "kibana"
elk_kibana_logfile: "/var/log/kibana.log"
# スナップショット機能を無効にするオプションを提供します。テストが不十分なので、デフォルトはfalseにします。
# 初回実行時にtrueに設定した場合は、`path.repo:` 変数が実行中のelasticsearchサービスに認識されるように
# `meta: flush_handlers`を追加する必要があります。
elk_elasticsearch_snapshot: false
elk_elasticsearch_snapshot_directory: /var/lib/elasticsearch/backups
elk_elasticsearch_snapshot_repository: es_backup
elk_elasticsearch_snapshot_initialization:
type: fs
settings:
location: "{{ elk_elasticsearch_snapshot_directory }}"
compress: yes
_hack: null
# iso8601を使用するのが理想ですが、ElasticSearch APIはiso8601形式で無効なスナップショット名のエラーを出します。
elk_elasticsearch_snapshot_name: "snapshot-{{ ansible_date_time.epoch }}"
# /etc/security/limits.confで設定する制限。個々の要素を上書きする場合は、全リストをコピーしてください。
elk_elasticsearch_pam_limits:
- domain: elasticsearch
limit_item: memlock
limit_type: hard
value: unlimited
- domain: elasticsearch
limit_item: memlock
limit_type: soft
value: unlimited
- domain: elasticsearch
limit_item: nofile
limit_type: soft
value: 65535
- domain: elasticsearch
limit_item: nofile
limit_type: hard
value: 65535
# アラート用のRiemannプラグイン、ElasticSearch v2との互換性のためのde-dotフィルタ。
# 詳細: https://www.elastic.co/blog/introducing-the-de_dot-filter
elk_logstash_plugins:
- logstash-output-riemann
- logstash-filter-de_dot
# ファイアウォール制限およびIPv4検索に使用されるインターフェース
elk_network_interface: eth0
elk_cluster_name: elk-logging
# デフォルトではSSLは無効です。使用したいSSL証明書のフルパスを設定すると、NginxがHTTPS接続を強制します。
# SSL証明書は別のプレイで配置する必要があります。
elk_nginx_ssl_certificate: ""
elk_nginx_ssl_certificate_key: ""
elk_nginx_server_name: localhost
# 本番使用には安全ではありません!ログインを保護するために上書きしてください。
elk_kibana_username: kibana
elk_kibana_password: kibana
# ランディングページを変更するために上書きします。例えば、カスタムダッシュボード:"dashboard/Your-Dashboard-Name"。
# Kibanaはダッシュボード名内の空白をハイフンに置き換える必要があります。
elk_kibana_default_app: discover
# "logclients"のためのIPホワイトリスト設定を自動で行うようにします。
# ufwを使用します。異なるロールでファイアウォールの設定を行っている場合は無効にしてください。
elk_configure_firewall: true
# 下流のプレイブックがカスタムウェブサーバー構成を利用できるようにします
# このロールのnginxの展開をスキップするためにfalseに設定してください。
elk_configure_nginx: true
# 下流のプレイブックがパターンやフィルターファイルのファイルグロブリストを上書きできるようにします。
elk_logstash_patterns:
- logstash-patterns/*
elk_logstash_filters:
- logstash-configs/*
# コピーするGeoIPデータベースのファイルグロブを宣言します。デフォルトではオフです。
elk_logstash_geoipdbs: []
使用方法
プレイブックでこのロールを以下のように使用します:
- hosts: logserver
roles:
- role: elk
elk_kibana_username: admin
elk_kibana_password: WowWhatAStrongPassword4
可視化の追加
このロールはKibanaの可視化を自動で作成しませんが、files/kibana-dashboards.json
に含まれる保存された可視化をインポートできます。
Kibana UI内で設定 -> オブジェクト -> インポートに行き、JSONファイルを参照してください。
テストの実行
このロールは Molecule と ServerSpec を使用してテストします。使用するには:
pip install molecule
gem install serverspec
molecule test
特定のコマンドを実行することもできます:
molecule idempotence
molecule verify
詳細については Molecule のドキュメントを参照してください。
さらなる読み物
セットアップ
カスタムフィルタの開発
このリポジトリの examples/writing-filters ディレクトリには事前に設定された開発環境が含まれています。そのディレクトリをlogstashがインストールされたサーバーにコピーするか、VagrantテストVMを使用してください。
メンテナンス
ライセンス
MIT
プロジェクトについて
Stands up ELK stack for log aggregation.
インストール
ansible-galaxy install freedomofpress.elk
ライセンス
Unknown
ダウンロード
152
所有者
Defending and supporting cutting-edge transparency journalism in the face of adversity.