geerlingguy.logstash
Ansibleロール: Logstash
RedHat/CentOS、Debian/UbuntuにLogstashをインストールするAnsibleロールです。
このロールはデフォルトでsyslog用のgrokパターンをインストールします。追加のフィルターが必要な場合は、/etc/logstash/conf.d/
ディレクトリ内に追加してください。例えば、適切なgrokフィルターを含む13-myapp.conf
という名前のファイルを作成し、Logstashを再起動して使用を開始できます。grokの正規表現はGrok Debuggerを使ってテストできます。
必要条件
他の方法も可能ですが、このロールはElasticsearchをバックエンドとして利用するように設計されています。
ロール変数
利用可能な変数は以下に示されており、デフォルト値と共に記載されています(defaults/main.yml
を参照)。
logstash_version: '7.x'
インストールするLogstashのメジャーバージョン。
logstash_package: logstash
インストールする特定のパッケージ。プラットフォームとパッケージマネージャーの構文に従ってパッケージ名を変更することで、パッケージのバージョンを指定できます。
logstash_listen_port_beats: 5044
Logstashがbeatsをリッスンするポート。
logstash_elasticsearch_hosts:
- http://localhost:9200
LogstashがElasticsearchにログを送信するホスト。
logstash_dir: /usr/share/logstash
Logstashがインストールされているディレクトリ。
logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key
SSL証明書とキーのローカルパスで、logstash_ssl_dir
にコピーされます。
自己署名証明書の生成に関しては、生成手順を参照してください。
logstash_local_syslog_path: /var/log/syslog
logstash_monitor_local_syslog: true
ローカルsyslogファイル(logstash_local_syslog_path
として定義)の設定をLogstashに追加するかどうか。ローカルsyslogを異なる方法で監視する場合や、ローカルsyslogファイルを気にしない場合はfalse
に設定します。その他のローカルログは、/etc/logstash/conf.d
に配置した独自の設定ファイルで追加できます。
logstash_enabled_on_boot: true
システム起動時にLogstashを実行したくない場合は、これをfalse
に設定します。
logstash_install_plugins:
- logstash-input-beats
- logstash-filter-multiline
インストールするLogstashプラグインのリスト。
logstash_setup_default_config: true
このロールに付属するデフォルトの設定ファイル(files/filters
ディレクトリ内)を追加したくない場合は、これをfalse
に設定します。独自の設定ファイルは/etc/logstash/conf.d
に追加できます。
自己署名証明書の生成
最大限のセキュリティのために、独自の有効な証明書とキーを使用し、プレイブック内のlogstash_ssl_*
変数を更新して証明書を使用します。
自己署名証明書/キーのペアを生成するには、次のコマンドを使用できます:
$ openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -subj '/CN=example.com'
FilebeatとLogstashは自己署名証明書が正しく動作しない場合があります。そのため、サーバーに信頼の完全なチェーン(自己署名証明書の認証局を含む)を追加する必要があります。詳細は: https://github.com/elastic/logstash/issues/4926#issuecomment-203936891
新しいバージョンのFilebeatとLogstashはpkcs8形式の秘密鍵を必要とし、これは以前に生成した鍵を変換することによって生成できます。たとえば、以下のようにします:
openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.p8
その他の注意事項
logstash
プロセスの1つから高いCPU使用率が見られる場合、Ubuntuのようなプラットフォームでポート80で別のアプリケーションを実行している場合、logstash-web
プロセスがポート80での起動を試みてループに陥っている可能性があります。この問題を回避するためには、/etc/init/logstash-web.conf
のその行を変更してrespawnステートメントにlimit
を追加するか、プレイブックでlogstash-web
サービスをenabled=no
に設定します。例えば:
- name: logstash-webプロセスが停止し無効になっていることを確認する。
service: name=logstash-web state=stopped enabled=no
例プレイブック
- hosts: search
pre_tasks:
- name: Debian/UbuntuでJava 8を使用する。
set_fact:
java_packages:
- openjdk-8-jdk
when: ansible_os_family == 'Debian'
roles:
- geerlingguy.java
- geerlingguy.elasticsearch
- geerlingguy.logstash
ライセンス
MIT / BSD
著者情報
このロールは2014年にJeff Geerlingによって作成されました。彼はAnsible for DevOpsの著者です。
ansible-galaxy install geerlingguy.logstash