ラベル Elastic Stack の投稿を表示しています。 すべての投稿を表示
ラベル Elastic Stack の投稿を表示しています。 すべての投稿を表示

Elastic Stack #7:Twitterのつぶやき履歴を集めてみる 3



Elasticsearchにデータを送る

outputにelasticsearchプラグイン設定を追加する
output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    hosts => "http://localhost:9200/"
  }
}
Elasticsearchの起動は
C:\apps\elasticsearch-7.4.0\bin\elasticsearch.bat

logstash起動し、コンソールにCSV内容が表示されることを確認
 : 省略
{
      "@version" => "1",
          "path" => "d:/temp/20191011/CSV/work191010.csv",
          "host" => "DESKTOP-37HDMPE",
    "@timestamp" => 2019-10-31T08:13:09.688Z,
          "tags" => [
        [0] "csv"
    ],
       "message" => "\"1182187647629873152\",\"191010 155433\",\"テスト\""
}

CSVフィルターの設定

CSVファイルを読み込む場合はCSVフィルターを使う
logstash.confにCSVフィルターの設定を追記
filter {
  csv {
  }
}
この状態でlogstashを起動するとコンソールにCSVの内容が表示される
 : 省略
{
          "tags" => [
        [0] "csv"
    ],
      "@version" => "1",
       "message" => "\"1182187647629873152\",\"191010 155433\",\"テスト\"",
       "column1" => "1182187647629873152",
    "@timestamp" => 2019-10-31T22:31:34.928Z,
          "path" => "d:/temp/20191011/CSV//work191010.csv",
          "host" => "DESKTOP-37HDMPE",
       "column2" => "191010 155433",
       "column3" => "テスト"
}
不要な項目(フィールド)を消したい場合は remove_fieldオプションを指定 "remove_field => [フィールド名,…]"

例)
filter {
  csv {
    remove_field => ["column1","host","path"]
  }
}
出力結果
{
       "column2" => "191010 155433",
      "@version" => "1",
       "message" => "\"1182187647629873152\",\"191010 155433\",\"テスト\"",
          "tags" => [
        [0] "csv"
    ],
    "@timestamp" => 2019-10-31T22:42:03.559Z,
       "column3" => "テスト"
}
@timestampはLogstashがデータを取り込んだ時間。
CSVログの日時は"column2"フィールド。
column2フィールドを@timestampとして使用する場合は、CSVフィルターのconvertオプションに "フィールド名 => 型" の書式で指定。
また書式を指定する場合はdateフィルタのmatchオプションを使用する。

例)
filter {
  csv {
    convert => {
     "column2" => "date_time"
    }
    remove_field => ["column1","host","path"]
  }
  date {
    match => [ "column2", "YYMMdd HHmmss" ]
  }
}
出力結果
{
       "column2" => "191010 155433",
       "message" => "\"1182187647629873152\",\"191010 155433\",\"テスト\"",
    "@timestamp" => 2019-10-10T06:54:33.000Z,
      "@version" => "1",
       "column3" => "テスト",
          "tags" => [
        [0] "csv"
    ]
}

コンフィグテスト

設定したコンフィグが正しいかテストを行う場合は-tオプションを指定
.\bin\logstash.bat -f .\config\logstash.conf -t



Elastic Stack, Elasticsearch

Elastic Stack #6:Twitterのつぶやき履歴を集めてみる 2



input file(CSVファイル)が読み込めない件への対処

input - file - pathの記述変更:
1) パス区切りは "\" でなく "/"(スラッシュ) を使用する
2) 拡張子は大文字で指定 ("csv" → "CSV")
3) ワイルドカードのアスタリスクは2つ書く必要なし

1)の対処で直ることが多いが動作不安定 (CSVファイルを正しく読み込めたり、読み込めなかったり…)
読み込めない場合は2)の対処で直ったり、最後の"/"を"//"にすると直ったり、よくわからない。

ちなみに読み込めた時のコンフィグファイル:
input{
  file{
    path => "d:/temp/20191011/csv//*.CSV"
    start_position => "beginning"
    tags => "csv"
  }
}
output{
  stdout{ codec => rubydebug }
}
そういうものか、ということで先に進む。


Elastic Stack, Elasticsearch

Elastic Stack #5:Twitterのつぶやき履歴を集めてみる 1



Twilogサービスへの登録

Twitterの情報を集めるため https://twilog.org/ へアカウントを登録する

というか、まったくツイートしたことが無いので、1件だけツイートした。

Twilogの [管理] メニューを選択
ログのダウンロードで [CSV(UTF8)] ボタンをクリックしダウンロード

ダウンロードしたファイルは 拡張しgz の圧縮ファイルなので7-Zipで解凍
以下フォルダ直下にCSVファイルをコピー
"d:\temp\20191011\CSV"

logstash.conf設定

Logstashの設定 → "C:\apps\logstash-7.4.0\config\logstash.conf"

この設定ファイルは3つの部分に分けれている
1) input … データの取得元を指定
2) filter … データの加工方法を指定
3) output … データの送り先を指定

1) input
ログをどこから取得するか?
ログの取得間隔
Logstashサービス再開時の挙動

2) filter
ログをどのように加工・整形するか?

3) データをどこに送るか?
Elasticsearch以外にもCSV形式なども可能

fileプラグイン
input部分では情報の取得元ごとにプラグインが提供されている
今回はCSVファイル取得のため fileプラグイン を使用

プラグインの一覧は https://www.elastic.co/guide/en/logstash/index.html
→ [Logstash Reference: 7.4 (current)] - [Input plugins] にて確認

inputプラグインの記載方法
input{
  利用するプラグイン名{
    設定を記載
  }
}
pathの記載
fileプラグインではpath指定は必須
"path => ファイルパス" のように指定する
input{
  file{
    path => "/フォルダのフルパス/logs/**.csv"
  }
}
標準出力への出力
outputにstdoutを指定することで、コンソール上に標準出力できる
output{
  stdout{ codec => rubydebug }
}
ファイルの読み込み位置指定
既定ではLogstash起動後の更新分しかデータを取得しないので、最初から取得するように設定
「start_position => "beginning"」

ファイルにタグをつけて分類
「tags => "好きな名前"」で指定
ここでは「tags => "csv"」とする

以上をまとめると
次の内容をlogstash.confに書き込み
input{
  file{
    path => "d:\temp\20191011\csv\**.csv"
    start_position => "beginning"
    tags => "csv"
  }
}
output{
  stdout{ codec => rubydebug }
}

Logstash起動

コマンドプロンプトより以下コマンドで起動
C:\Windows\system32>cd /d c:\apps\logstash-7.4.0
c:\apps\logstash-7.4.0>.\bin\logstash.bat -f .\config\logstash.conf
→ コンソールにCSVデータが出力される、らしいが出ない…
[2019-10-11T17:03:53,279][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}


ElasticSearch, ElasticStack

Elastic Stack #4:インストール 3

※ 前回記事:#3:インストール 2
記事一覧


Kibanaのインストール

以下サイトの [WINDOWS] をクリックしダウンロード
https://www.elastic.co/jp/downloads/kibana

ダウンロードした kibana-7.4.0-windows-x86_64.zip を解凍し C:\apps\kibana-7.4.0 へコピー

設定ファイル編集
C:\apps\kibana-7.4.0\config\kibaya.ymlを編集
"#elasticsearch.hosts:" の行を探し (7.4.0では28行目) ElasticsearchのURLに変更

今回作成したElasticsearchのURLは「http://localhost:9200」のはず
ということで以下のように修正(コメントを外しただけ)
#elasticsearch.hosts: ["http://localhost:9200"]

elasticsearch.hosts: ["http://localhost:9200"]

Kibanaの起動確認

C:\apps\kibana-7.4.0\bin\kibana.bat をダブルクリックし実行
すると、以下メッセージ
WindowsによってPCが保護されました。
Windows Defender SmartScreenは認識されないアプリの起動を停止しました。
アプリを実行すると、PCに問題が起こる可能性があります。


[詳細情報]リンクをクリックすると[実行]ボタンが出てくるので、実行する.

ブラウザ(Chrome)で以下URLにアクセス
http://localhost:5601

とりあえず何か画面が表示されたので大丈夫と思われる


Elastic Stack, Elasticsearch, Kibana

Elastic Stack #3:インストール 2



Logstashのインストール

以下サイトよりダウンロード
https://www.elastic.co/jp/products/logstash
[ダウンロード] - [ZIP] をクリック

ダウンロードした logstash-7.4.0.zip を解凍 C:\apps\logstash-7.4.0 へコピー

設定
c:\apps\logstash-7.4.0\config\logstash.conf を新規作成し以下内容を書き込む
input {
  stdin { }
}

output {
  stdout { codec => rubydebug }
}

動作テスト

コマンドプロンプトより以下コマンドを実行
D:\>cd /d c:\apps\logstash-7.4.0

c:\apps\logstash-7.4.0>.\bin\logstash -f .\config\logstash.conf
しばらく待つと Successfully started Logstash API endpoint の表示で待機となる。
Thread.exclusive is deprecated, use Thread::Mutex
Sending Logstash logs to c:/apps/logstash-7.4.0/logs which is now configured via log4j2.properties
[2019-10-10T12:23:46,021][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2019-10-10T12:23:46,039][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"7.4.0"}
[2019-10-10T12:23:48,327][INFO ][org.reflections.Reflections] Reflections took 48 ms to scan 1 urls, producing 20 keys and 40 values
[2019-10-10T12:23:51,869][WARN ][org.logstash.instrument.metrics.gauge.LazyDelegatingGauge][main] A gauge metric of an unknown type (org.jruby.RubyArray) has been create for key: cluster_uuids. This may result in invalid serialization.  It is recommended to log an issue to the responsible developer/development team.
[2019-10-10T12:23:51,877][INFO ][logstash.javapipeline    ][main] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>500, :thread=>"#"}
[2019-10-10T12:23:52,014][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[2019-10-10T12:23:52,124][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-10-10T12:23:52,518][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
適当に "hello world" と入力してみる
hello world
C:/apps/logstash-7.4.0/vendor/bundle/jruby/2.5.0/gems/awesome_print-1.7.0/lib/awesome_print/formatters/base_formatter.rb:31: warning: constant ::Fixnum is deprecated
{
       "message" => "hello world\r",
      "@version" => "1",
          "host" => "DESKTOP-37HDMPE",
    "@timestamp" => 2019-10-10T03:26:16.934Z
}
とりあえず問題なし?と思われる

※ 次回記事:#4 インストール 3

Elastic Stack, Elasticsearch

Elastic Stack #2:インストール 1



インストールの順序

[Elaticsearch] ⇒ [Logstash(Beats)] ⇒ [Kibana]

Java

Elasticsearch、Logstashの起動にはJava(バージョン8以上)が必要

評価環境

・仮想上のWindows10 1903 (18995.1)
・Javaはすでに入っている
C:\Windows\system32>java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

Elasticsearchインストール

以下サイトよりWindows版をダウンロード
https://www.elastic.co/jp/downloads/elasticsearch

ファイル名は elasticsearch-7.4.0-windows-x86_64.zip
zipファイルを解凍し、C:\apps\elaticsearch-7.4.0 へコピー

メモリ使用率の変更
C:\apps\elasticsearch-7.4.0\config\jvm.options を開き、-Xmsxx、-Xmxxxの部分を確認。
最大ヒープサイズ(Xms)は物理メモリの50%以下となるように設定する。
仮想マシンのメモリは4GBなので、とりあえず設定変更せずにおく。
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g
-Xmx1g
Elasticsearch起動
C:\apps\elasticsearch-7.4.0\bin\elasticsearch.bat をダブルクリックし実行
しばらく待ってDOS窓のログが
[INFO ][o.e.x.s.s.SecurityStatusChangeListener] [DESKTOP-37HDMPE] Active license is now [BASIC]; Security is disabled
から動かなくなったので、おそらく起動完了

Chromeから以下URLでアクセス
http://localhost:9200/?pretty

以下結果が表示された。おそらく正常起動している
{
  "name" : "DESKTOP-37HDMPE",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "2Nl7BGrzRM-qwq8P8NhAng",
  "version" : {
    "number" : "7.4.0",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910",
    "build_date" : "2019-09-27T08:36:48.569419Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

※ 次回記事:#3:インストール 2

Elastic Stack, Elasticsearch

Elastic Stack #1:基本



Elastic社が提供するツール

・Elastic Stack
・Logstash
・Elasticsearch
・Kibana
・Beats
・Elastic Cloud

Logstash

各環境に散らばっているログを集め、指定した対象に連携できるツール
ログの連携だけではなく、ログの加工機能も持つ。
コード自体はRuby言語で記載。

Elasticsearch

Javaで作られている分散処理型の検索エンジン

Kibana

Elasticsearchに貯めた情報を整形し可視化するツール。
JavaScriptde開発されており、Node.js上で実行される。

Beats

機器のデータをElasticsearchやLogstashに転送する簡易的なデータ収集ツール

Elastic Cloud

Elastic社が提供するクラウド環境
有償

※ 次回記事:#2 インストール 1

Elastic Stack, Elasticsearch

その他の記事