Logstash 出力プラグインガイド
Revision: 2.5.0-13372-ad2ab4f6
1 概要
Logstash用GridDBプラグイン(logstash-plugin-griddb) はHTTP/HTTPメソッドを使ってGridDBにデータを挿入します。
1.1 インストール
インストールには、手動で行う方法とDockerを使用する方法の2つがあります。
[注意]: SSL証明書に関するエラーが発生する場合、下記のコマンドで証明書検証を無効にして下さい:
echo insecure >> ~/.curlrc
1.1.1 (1) 手動でインストール
1.1.1.1 システム要件
本ブラグインのビルドと実行は以下の環境で検査済みです。
- OS: CentOS 7以上
- Rubyのバージョン 2.4以上
- Logstashのバージョン 7.x (現在、Logstash8.xでは動作しません)
1.1.1.2 Ruby v2.4.0のインストール
Rubyのセットアップとインストールについては https://www.techoism.com/install-ruby-2-4-0-centosrhel-rvm/ を参照してください。
1.1.1.3 Logstashのインストール
Logstashのセットアップとインストールについては https://www.elastic.co/guide/jp/logstash/current/installing-logstash.html を参照。
公開署名キーをダウンロードし、インストールします。
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
/etc/yum.repos.d/ に移動し、yumコマンド用のrepoファイル (例: logstash.repo) を作成し、以下を追加します。
[logstash-7.x] 
name=Elastic repository for 7.x packages 
baseurl=https://artifacts.elastic.co/packages/7.x/yum 
gpgcheck=1 
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch 
enabled=1 
autorefresh=1 
type=rpm-md
以下のyumコマンド使ってLogstashをインストールします。
$ yum install logstash
1.1.1.4 ローカルソースコードからのプラグインのインストール
ステップ 1: logstash-plugin ディレクトリをマシン上の任意の覚えやすいディレクトリ(例えば、root)にコピーします。
ステップ 2: 次のコマンドを実行し logstash-output-griddb をマシンにインストールします。
# cd logstash-plugin/source/logstash-output-griddb
# gem build logstash-output-griddb.gemspec
# /usr/share/logstash/bin/logstash-plugin install logstash-output-griddb-1.0.0.gem
1.1.2 (2) Dockerを使ったインストール
1.1.2.1 Dockerのインストール
https://docs.docker.com/engine/install/centos/ の手順に従ってください。
[注意]: プロキシを使用している場合、 https://docs.docker.com/config/daemon/systemd のガイドに従ってください。
1.1.2.2 コンテナのビルドと起動
- /logstash-plugin/development_procedure/logstash-dockerディレクトリをマシンにコピーします。
- /logstash-dockerディレクトリでコマンド- docker build -t logstash-griddb-output .を実行します。
- Dockerコンテナのlogstash-griddb-outputにアクセスするために、コマンド docker run -it logstash-griddb-output bashを実行します。
[注意]: SSL証明書に関するエラーが発生する場合、下記のコマンドで証明書検証を無効にして下さい:
echo insecure >> ~/.curlrc
2 使用方法
出力プラグインの構成の項に従って、構成ファイルを編集します。
$ cd /etc/logstash/
$ vi mylogstash.conf
Logstashを実行するために次のコマンドを実行します。
$ /usr/share/logstash/bin/logstash -f /etc/logstash/mylogstash.conf --path.settings /etc/logstash
ファイルの変更後に変更結果を自動的にリロードするには、 --config.reload.automatic をコマンドに追加し、次を実行します。
$ /usr/share/logstash/bin/logstash -f /etc/logstash/mylogstash.conf --config.reload.automatic --path.settings /etc/logstash 
2.1 入力プラグインの構成
入力プラグインの詳細は、 https://www.elastic.co/guide/en/logstash/current/input-plugins.html を参照。本マニュアルではファイル入力プラグインを例に説明します。
2.1.1 ファイル入力
| パラメータ | 値 | 
|---|---|
| path | 必須の設定。 値の型は配列。 デフォルト値はありません。 | 
| type | typeは主にフィルタをアクティブにするために使用されます。 | 
例: ファイル入力を使った場合
input { 
    file {
        path => "/usr/share/logstash/run/input/sys.log"
        type => "syslog"
    }
}
2.2 フィルタプラグインの構成(オプション)
フィルタプラグインの詳細は https://www.elastic.co/guide/en/logstash/current/filter-plugins.html を参照。
2.3 出力プラグインの構成
2.3.1 パラメータ
| パラメータ | 値 | 
|---|---|
| host | GridDB WebAPIのURL (必須) [注意]: このURLにはWeb APIコンテキストパスを含めないでください。 有効なURL例: http://192.168.0.11:8081 無効なURL例: http://192.168.0.11:8081/griddb/v2 | 
| cluster | GridDBのクラスタ名 (必須) | 
| database | データの挿入先のGridDBのデータベース名。値がnullまたは空の場合、"public"がデフォルトになります。 | 
| container | GridDBに挿入するコンテナ名 (必須) | 
| insert_mode | 挿入モードのオプション: appendまたはreplace。値がnullまたは空の場合、"append"がデフォルトになります。 | 
| username | GridDBユーザ名 (必須) | 
| password | GridDB userのパスワード (必須) | 
| proxy | プロキシ構成 (マシンがプロキシサーバの背後に配置されている場合、必須) [注意]: プロキシはURL、username、passwordを含みます。 例: 完全な構成: proxy => { url => 'http://10.116.16.12:3128' user => 'admin' password => 'admin' } | 
2.3.2 例
以下にlogstash-plugin-griddbを使った詳しい例を示します。
例1: appendモードの場合
output {
    griddb {
        host => "{host}:{port}"
        cluster => "mycluster2"
        database => "public"
        container => "logstashTest2"    
        username => "{username}"
        password => "{password}"
        insert_mode => "append"
        proxy => {
            url =>  '{host}:{port}'
            user => '{username}'
            password => '{password}'
        }
    }
}
データの挿入にappendモードを使用し、コンテナが存在しない場合、新しいコンテナを作成し、データを挿入します。コンテナがすでに存在している場合、現在のコンテナを保持してデータを挿入します。
例2: replaceモードの場合
output {
    griddb {
        host => "{host}:{port}"
        cluster => "mycluster2"
        database => "public"
        container => "logstashTest2"    
        username => "{username}"
        password => "{password}"
        insert_mode => "replace"
        proxy => {
            url =>  '{host}:{port}'
            user => '{username}'
            password => '{password}'
        }
    }
}
データの挿入にreplaceモードを使用し、コンテナが存在しない場合、新しいコンテナを作成し、データを挿入します。コンテナがすでに存在している場合、現在のコンテナを削除の上、新しいコンテナを作成し、データを挿入します。
例3: httpsを使った場合
output {
    griddb {
        host => "https://{full_uri}"
        cluster => "mycluster2"
        database => "public"
        container => "logstashTest2"    
        username => "{username}"
        password => "{password}"
        insert_mode => "replace"
        proxy => {
            url =>  '{host}:{port}'
            user => '{username}'
            password => '{password}'
        }
    }
}
2.4 入出力プラグインの完全な構成例
例1: ファイル入力を使い、プロキシを使わない完全な構成
input { 
    file {
        path => "/var/log/msg/logstash-tutorial-dataset"
        type => "syslog"
    }
}
output {
    stdout {}
    
    griddb {
        host => "{host}:{port}"
        cluster => "mycluster2"
        database => "public"
        container => "logstashTest2"    
        username => "{username}"
        password => "{password}"
        insert_mode => "replace"
    }
}
例2: システムログ入力, 認証なしのプロキシを使った完全な構成
input { 
    file {
        path => "/var/log/msg/logstash-tutorial-dataset"
        type => "syslog"
    }
}
output {
    stdout {}
    
    griddb {
        host => "{host}:{port}"
        cluster => "mycluster2"
        database => "public"
        container => "logstashTest2"    
        username => "{username}"
        password => "{password}"
        insert_mode => "replace"
        proxy => "{host}:{port}"
    }
}



