本文へジャンプ

Logstash 出力プラグインガイド

Revision: 1.4.0-8326-74fbb17a

1 概要

Logstash用GridDBプラグイン(logstash-plugin-griddb) はHTTP/HTTPメソッドを使ってGridDBにデータを挿入します。

1.1 インストール

インストールには、手動で行う方法とDockerを使用する方法の2つがあります。

1.1.1 (1) 手動でインストール

1.1.1.1 システム要件

本ブラグインのビルドと実行は以下の環境で検査済みです。

  • OS: CentOS 7以上
  • Rubyのバージョン 2.4以上
  • Logstashのバージョン 7.x (現在、Logstash8.xでは動作しません)

1.1.1.2 Rubyのインストール

Rubyのセットアップとインストールについては https://www.techoism.com/install-ruby-2-3-3-centosrhel-rvm/ を参照してください。

rvm install ${RUBY_VER}

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 を実行します。

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}"
    }
}