💭

俺的ElasticStackチュートリアル その2

2022/06/05に公開

その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