LoginSignup
2
0

More than 1 year has passed since last update.

Elastic Cloud + GCP 事始め③ ~Logstashからのデータの投入~

Last updated at Posted at 2021-01-06

ゴール

ローカルディレクトリに配置したCSVファイルを、Elastic Cloud 上のKibanaで閲覧できるようにする。

公式マニュアル

1. rootの設定

WSL に rootパスワードを設定し、rootに昇格できるようにする
以下は全てUbuntuコンソールで作業する

sudo passwd root

image.png

root に昇格する

su -

image.png

2. Javaの導入

環境を更新

apt-get update

image.png

インストール実行

apt install openjdk-11-jre-headless

image.png

Java のバージョン確認

java --version

image.png

3. Logstashの導入

アプリケーションファイルを取得する

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.1-linux-x86_64.tar.gz

image.png

解凍する(解凍ログ付き)

tar -xzvf logstash-7.10.1-linux-x86_64.tar.gz

image.png

4. Logstash の設定

4.1. logstash.ymd の変更

# 設定ディレクトリに移動
cd logstash-7.10.1/config/

# 設定ファイルをバックアップ
cp -ip logstash.yml logstash.yml.20210106

image.png

viコマンドで、logstash.yml内の先頭に下記を追加する。

# Elastic Cloud
xpack.management.elasticsearch.cloud_id: '<cloud_id>'
xpack.management.elasticsearch.cloud_auth: elastic:<password>

image.png

cloud.idの確認方法

Elastic cloud のdeploymentsメインページ

image.png

cloud.authの記法

事始め①でDLしておいたelasticユーザーのユーザー名とパスワードをコロンで繋げる

4.2. 日付フォーマッタフィルタのインストール

./logstash-7.10.1/bin/logstash-plugin install logstash-filter-date_formatter

image.png

インストールの確認

./logstash-7.10.1/bin/logstash-plugin list

image.png

4.3. config ファイルの作成

下記定義を、Windows上で作成し、Ubuntuとの共有ディレクトリ以下に任意のファイル名(例: sample-9.conf)で保存
※文字コードは utf-8 にする事。

# 入力ファイル
input {
    file {
        path => "/mnt/d/Development/elastic/sample/0105/*.csv"
        # 常に最初から読み込む
        start_position => "beginning"
        # 開始地点の記録は不要
        sincedb_path => "/dev/null"
        # 実データに合わせて要変更
        codec => plain { 
            charset => "SJIS"
        }
    }
}
# フィールド設定
filter {
    csv {
        columns => ["now","user","goodsid","code","quantity","price","get_updated_at","ref_updated_at","lowest_price","availability"]
        # ヘッダを飛ばす
        skip_header => true
        # カンマ区切り
        separator => ","
        # 数値変換はここで行う(boolはkeyword相当)
        convert => { 
            'quantity' => 'integer'
            'price' => 'integer'
            'lowest_price' => 'integer'
        }
    }
    # 日付変換
    date {
        # 実データに合わせて要変更(checkforLoginではハイフンつなぎ)
        match => ['now', 'yyyy/MM/dd hh:mm:ss']
        target => '@timestamp'
    }
    date {
        match => ['get_updated_at', 'yyyy/MM/dd hh:mm:ss']
        target => 'get_updated_at'
    }
    date {
        match => ['ref_updated_at', 'yyyy/MM/dd hh:mm:ss']
        target => 'ref_updated_at'
    }
    date_formatter {
        source => "@timestamp"
        target => "[@metadata][index_now]"
        pattern => "YYYY.MM.dd"
    }
}
## Elastic cloudに出力
output {
    # Elastic Cloud に出力する
    elasticsearch {
        hosts => ['<Elasticsearch の endpoint>']
        user => 'elastic'
        password => '<elastic の password>'
        index => "sample-9-%{[user]}-%{[@metadata][index_now]}"
    }
    # デバッグ用にコマンドプロンプトにも取り込み結果を表示する
    stdout {
        codec => rubydebug
    }
}

hosts の確認方法

image.png

Elastic Cloud コンソールの 「Copy endpoint」

5. Logstash の実行

./logstash-7.10.1/bin/logstash -f sample0104/sample-9.conf

インポートにはそれなりに時間がかかる。

6. Kibana Index Patterns の登録

Discover や Dashboard に表示するため、Index Patterns を登録する

Kibana コンソール の 「Stack Management」>「Index Patterns」>「Create index pattern」

image.png

Step1. Index Patter 名の指定

プレフィックスを指定して、ユーザー名や日付は「*」でワイルドカード指定する。

image.png

Time field には、「@timestamp」を指定する。

image.png

Discover で見れるようになりました。

image.png

次回予定:
ロール作成+ユーザー作成の自動化(指定期間ロールの作成)
https://qiita.com/miu200521358/items/c8795565343a3c5d8058

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0