Packetbeatでパケットモニタリング

beats-eyecatch

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

藤本です。

昨日、今日と弊社佐々木がBeats PlatformのTopbeat、Filebeatをご紹介しました。私からはPacketbeatをご紹介します。

環境

私はDocker使い(え)ません!

  • OS
    • Amazon Linux 2015.09
  • ミドルウェア :
    • elasticsearch-2.1.0-1.noarch
    • kibana-4.3.0
    • httpd24-2.4.16-1.62.amzn1.x86_64
    • mysql-server-5.5-1.6.amzn1.noarch

やってみた

インストール

パッケージやバイナリは各種ファイル形式(今回はrpmファイル)でelasitc社のページからダウンロードできます。

$ sudo rpm -ivh https://download.elastic.co/beats/packetbeat/packetbeat-1.0.0-x86_64.rpm
Retrieving https://download.elastic.co/beats/packetbeat/packetbeat-1.0.0-x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:packetbeat-1.0.0-1               ################################# [100%]
$ rpm -ql packetbeat
/etc/init.d/packetbeat
/etc/packetbeat/packetbeat.template.json
/etc/packetbeat/packetbeat.yml
/usr/bin/packetbeat
/usr/bin/packetbeat-god

パッケージの中身はこれだけです。

インデックステンプレート作成

パッケージに内包されているJSONファイルを使ってインデックステンプレートを作成します。

$ curl -XPUT localhost:9200/_template/packetbeat -d @/etc/packetbeat/packetbeat.template.json
{"acknowledged":true}

$ curl "localhost:9200/_template/packetbeat?pretty"
{
  "packetbeat" : {
    "order" : 0,
    "template" : "packetbeat-*",
    "settings" : {
      "index" : {
        "refresh_interval" : "5s"
      }
    },
    "mappings" : {
      "_default_" : {
        "dynamic_templates" : [ {
          "template1" : {
            "mapping" : {
              "index" : "not_analyzed",
              "ignore_above" : 1024,
              "doc_values" : true,
              "type" : "{dynamic_type}"
            },
            "match" : "*"
          }
        } ],
        "properties" : {
          "response" : {
            "index" : "analyzed",
            "norms" : {
              "enabled" : false
            },
            "type" : "string"
          },
          "client_location" : {
            "type" : "geo_point"
          },
          "@timestamp" : {
            "type" : "date"
          },
          "query" : {
            "index" : "not_analyzed",
            "doc_values" : true,
            "type" : "string"
          },
          "request" : {
            "index" : "analyzed",
            "norms" : {
              "enabled" : false
            },
            "type" : "string"
          },
          "params" : {
            "index" : "analyzed",
            "norms" : {
              "enabled" : false
            },
            "type" : "string"
          }
        },
        "_all" : {
          "enabled" : true,
          "norms" : {
            "enabled" : false
          }
        }
      }
    },
    "aliases" : { }
  }
}

ダッシュボード生成

Topbeatでも紹介しましたが、elasticはTopbeat、Packetbeat用のダッシュボードを用意しています。

$ git clone https://github.com/elastic/beats-dashboards.git
Cloning into 'beats-dashboards'...
remote: Counting objects: 929, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 929 (delta 24), reused 0 (delta 0), pack-reused 889
Receiving objects: 100% (929/929), 2.31 MiB | 1.10 MiB/s, done.
Resolving deltas: 100% (662/662), done.
Checking connectivity... done.

$ cd beats-dashboards/
$ ./load.sh -url localhost:9200
Loading dashboards to localhost:9200 in .kibana using curl:
Loading search Cache-transactions:

(中略)

Loading index pattern topbeat-*:
{"_index":".kibana","_type":"index-pattern","_id":"topbeat-*","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}

ダッシュボードの登録が完了しました。

httpdのデータ取得

まずはWEBアクセスし、データを収集します。

Kibanaへアクセスします。
Discoverを見てみます。データが収集できていますね。

Discover_-_Kibana

どのようなデータが取れているのでしょうか。

Discover_-_Kibana

接続元IPアドレス、転送Byte数、HTTPステータスコード、レスポンスタイム、パス、ポート番号などなどなど。スゴイ!!こんなにたくさんの情報がこんなに簡単に取れました!

次はDashboardを見てみます。
ロードすると、いくつかの既に用意されています。

Dashboard_-_Kibana

今回はHTTPを選択します。

HTTP_-_Dashboard_-_Kibana
HTTP_-_Dashboard_-_Kibana

これ見てるだけで仕事した気になりそう。

MySQLのデータ取得

まずはSQLを流して、データを収集します。

Kibanaへアクセスします。 まずはDiscover。データを収集できています。

Discover_-_Kibana

データの内容はどうでしょう。

Discover_-_Kibana

接続元IPアドレス、転送Byte数、出力行数・列数、レスポンスタイム、SQLなどなどなど。

次はDashboardを見てみます。
今回はMySQL Performanceを選択します。

MySQL_performance_-_Dashboard_-_Kibana
MySQL_performance_-_Dashboard_-_Kibana

まとめ

いかがでしたでしょうか?
これで現在リリースされている3つのofficially supported Beatsを一通りご紹介しました。次回はFilebeat + Logstashによるログの可視化、そもそもBeats Platformとは、といったところをご紹介できれば、と思います。