💭
俺的ElasticStackチュートリアル その2
その1はこちらからどうぞ
レベル6
データの型変換
いくつか型変換します。
こちらの型が文字列型なので、数値型に変換します。
["age"]
{
"email" => "tsuruoka_kaoru@example.com",
"gender" => "M",
"registration_date" => 2019-01-01T04:48:22.000Z,
"pref" => "東京都",
"customerid" => "AS345469",
"tags" => [
[0] "CSV"
],
"birth" => "1945/3/25",
"customer_name" => "鶴岡 薫",
"age" => "74",
"@version" => "1",
"customer_name_kana" => "つるおか かおる"
}
first-pipeline.confの編集
input {
file {
path => ["/home/opc/test.csv"]
start_position => "beginning"
sincedb_path => "/usr/share/logstash/data/plugins/inputs/file/sincedb"
tags => "CSV"
}
}
filter {
csv {
remove_field => [ "path","host","message" ]
}
date {
match => [ "column3","yyyy-MM-dd HH:mm:ss" ]
remove_field => [ "column3" ]
}
mutate {
rename => { "column1" => "customerid"}
rename => { "column2" => "customer_name" }
rename => { "@timestamp" => "registration_date"}
rename => { "column4" => "customer_name_kana" }
rename => { "column5" => "email"}
rename => { "column6" => "gender"}
rename => { "column7" => "age"}
rename => { "column8" => "birth"}
rename => { "column9" => "pref"}
convert => {
"age" => "integer"
}
}
}
output {
stdout { codec => rubydebug }
}
"age"が数値型に変換されていることが分かります。
年齢を括っていたダブルクォーテーションが消えたと思います。
{
"customer_name_kana" => "つるおか かおる",
"email" => "tsuruoka_kaoru@example.com",
"pref" => "東京都",
"birth" => "1945/3/25",
"age" => 74,
"@version" => "1",
"customer_name" => "鶴岡 薫",
"gender" => "M",
"customerid" => "AS345469",
"registration_date" => 2019-01-01T04:48:22.000Z,
"tags" => [
[0] "CSV"
]
}
レベル7
Elasticsearchにデータを送る
ようやく面白くなってきました。
これまではコンソール上での表示しかしてませんでしたが、ここでElasticsearchへ送りKibanaで確認してみます。
first-pipeline.confの編集
input {
file {
path => ["/home/opc/test.csv"]
start_position => "beginning"
sincedb_path => "/usr/share/logstash/data/plugins/inputs/file/sincedb"
tags => "CSV"
}
}
filter {
csv {
remove_field => [ "path","host","message" ]
}
date {
match => [ "column3","yyyy-MM-dd HH:mm:ss" ]
remove_field => [ "column3" ]
}
mutate {
rename => { "column1" => "customerid"}
rename => { "column2" => "customer_name" }
rename => { "@timestamp" => "registration_date"}
rename => { "column4" => "customer_name_kana" }
rename => { "column5" => "email"}
rename => { "column6" => "gender"}
rename => { "column7" => "age"}
rename => { "column8" => "birth"}
rename => { "column9" => "pref"}
convert => {
"age" => "integer"
}
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => "http://localhost:9200/"
index => "python-100knocks-%{+YYYY.MM.DD}"
}
}
Kibanaで確認してみる
kibanaにログインします。http://{Server_IP_Address}:5601
画面左上のハンバーガーメニューから「Stack Management」をクリックします。
次に「Create index pattern」をクリックします。
すると先ほどfirst-pipeline.confで定義したindex名が表示されています。
Name欄にIndexと同じ名前を入力し、「Create index pattern」をクリックします。
Timestamp field欄には「timestamp」を選択します。
見覚えのあるカラム名が表示されています。
レベル8
Metricbeatを使ってインスタンスのCPU/Memory等の情報を収集する
インストール方法
sudo yum install metricbeat
Metricbeatの起動
sudo systemctl start metricbeat
これだけでkibanaにメトリックが送られます。
Discussion