ChangeFinderFunction - acromusashi/acromusashi-stream-example GitHub Wiki

変化点検出(ChangeFinder)機能

本ページでは変化点検出(ChangeFinder)機能の利用方法について説明します。

処理内容

本機能は以下のフローで動作します。

  1. kafka-log-producerがApacheのログを収集し、Kafkaクラスタに送信する。
  2. OpaqueTridentKafkaSpoutがKafkaクラスタからApacheのログを取得する。
  3. ApacheのログをApacheLogSplitFunctionを用いてエンティティに変換します。
  4. ChangeFindFunctionがエンティティ中のレスポンスタイムの値を用いて変化点検出スコアの算出を行います。
  5. ApacheLogAggregatorがホスト毎のレスポンスタイム/変化点検出スコアの統計を算出します。
  6. ResultPrintFunctionが統計結果をログに出力します。

準備

変化点検出(ChangeFinder)機能を動作させるためには以下の準備が必要です。

  • Step1: 必要となるミドルウェアのインストール
  • Step2: ChangeFindTopologyのデプロイ
  • Step3: ChangeFindTopologyの設定

Step1: 必要となるミドルウェアのインストール

下記の手順を確認し、必要ミドルウェアのインストールを行います。

Step2: ChangeFindTopologyのデプロイ

Step2: acromusashi-stream-exampleのデプロイ を参照し、Topologyのデプロイを行います。

Step3: ChangeFindTopologyの設定

Nimbusをインストールしたサーバの/opt/storm/conf 配下にChangeFindTopology.yamlを配置し、下記(★項目)の設定を行います。

## KmeansTopology Config
## ★NimbusHost  
## Set StormCluster's Nimbus Host
nimbus.host        : "192.168.0.1"
## NimbusPort
nimbus.thrift.port : 6627
## WorkerProcess Number
topology.workers   : 3
## parallelismHint ThreadNum
topology.parallelismHint   :   3
## Storm Debug Flag
topology.debug     : false

## TopologyDefine
## TridentKafkaSpout
## Kafkaの取得元となるTopic名
kafka.topic                : ApacheLog
## ★Kafkaの接続先ZooKeeperのサーバアドレス。「host1:port1,host2:port2,host3:port3...」という形式で定義(ホスト毎の区切り文字はカンマ)
kafka.zookeeper.server.str : "192.168.0.1:2181"
## KafkaのConsumer Group Id
kafka.consumer.id          : "ChangeFindTopology"
## KafkaのBroker情報を保持するZooKeeper上のパス
kafka.zookeeper.root       : "/brokers"

## ApacheLogSplitFunction
## ApacheLogJSON中のDateFormat
apache.date.format : "yyyy-MM-dd'T'HH:mm:SSSZ"

## ChangeFindFunction
## ChangeFindアルゴリズム:自己回帰モデルの次数「k」
changefinder.ardimension : 4
## ChangeFindアルゴリズム:オンライン忘却パラメータ「r」
changefinder.forgetability : 0.05
## ChangeFindアルゴリズム:平滑化ウィンドウサイズ「T」
changefinder.smoothingwindow  : 5
## 変化点として検出するスコア閾値
changefinder.threshold : 15.0

実行

変化点検出(ChangeFinder)機能は下記の手順で起動します。

  • Step1: kafka-log-producerの起動
  • Step2: ChangeFindTopologyの起動
  • Step3: Apacheへのアクセス
  • Step4: ChangeFindTopologyの終了

Step1: kafka-log-producerの起動

kafka-log-producerを確認し、kafka-log-producerを起動します。

Step2: ChangeFindTopologyの起動

Nimbusインストールサーバにログインし、下記のコマンドを実行してChangeFindTopologyを起動します。

cd /opt/storm  
bin/storm jar acromusashi-stream-example-x.x.x.jar acromusashi.stream.example.ml.topology.ChangeFindTopology conf/ChangeFindTopology.yaml false  

Step3: Apacheへのアクセス

kafka-log-producerがログを取得しているApacheへのアクセスを行います。

ChangeFindTopologyが動作しているWorkerのログ(/opt/storm/logs/ChangeFindTopology-xx-xxxxxxxxworker-xxxx.log)に下記のように変化点検出スコアが出力されることを確認します。

Change Find Result: Host=192.168.0.1, response time=17360.0, score:2.142337599258248

Step4: ChangeFindTopologyの終了

Nimbusインストールサーバにログインし、下記のコマンドを実行してChangeFindTopologyを終了します。

cd /opt/storm  
bin/storm kill ChangeFindTopology

解説

特になし。