ゴール
ローカルディレクトリに配置したCSVファイルを、Elastic Cloud 上のKibanaで閲覧できるようにする。
公式マニュアル
1. rootの設定
WSL に rootパスワードを設定し、rootに昇格できるようにする
以下は全てUbuntuコンソールで作業する
sudo passwd root
root に昇格する
su -
2. Javaの導入
環境を更新
apt-get update
インストール実行
apt install openjdk-11-jre-headless
Java のバージョン確認
java --version
3. Logstashの導入
アプリケーションファイルを取得する
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.1-linux-x86_64.tar.gz
解凍する(解凍ログ付き)
tar -xzvf logstash-7.10.1-linux-x86_64.tar.gz
4. Logstash の設定
4.1. logstash.ymd の変更
# 設定ディレクトリに移動
cd logstash-7.10.1/config/
# 設定ファイルをバックアップ
cp -ip logstash.yml logstash.yml.20210106
viコマンドで、logstash.yml内の先頭に下記を追加する。
# Elastic Cloud
xpack.management.elasticsearch.cloud_id: '<cloud_id>'
xpack.management.elasticsearch.cloud_auth: elastic:<password>
cloud.idの確認方法
Elastic cloud のdeploymentsメインページ
cloud.authの記法
事始め①でDLしておいたelastic
ユーザーのユーザー名とパスワードをコロンで繋げる
4.2. 日付フォーマッタフィルタのインストール
./logstash-7.10.1/bin/logstash-plugin install logstash-filter-date_formatter
インストールの確認
./logstash-7.10.1/bin/logstash-plugin list
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 の確認方法
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」
Step1. Index Patter 名の指定
プレフィックスを指定して、ユーザー名や日付は「*」でワイルドカード指定する。
Time field には、「@timestamp」を指定する。
Discover で見れるようになりました。
次回予定:
ロール作成+ユーザー作成の自動化(指定期間ロールの作成)
https://qiita.com/miu200521358/items/c8795565343a3c5d8058