freedomofpress.elk

ELK Ansible ロール

ログの集約と監視のために ELKスタック(Elasticsearch、Logstash、Kibana)をインストールします。アラート機能を追加するために Riemann との統合を意図しています。

要件

ロール変数

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ファイルを参照してください。

テストの実行

このロールは MoleculeServerSpec を使用してテストします。使用するには:

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.