Log Service は、ログデータのオールインワンサービスです。ユーザーをデータ収集、ストレージの相互接続、インデックス作成といった仕事から解放し、Log Service を照会すれば分析に専念できるようになります。 2017 年 9 月に Log Service のインデックス作成機能がアップグレードされ、query + SQL-92 構文でリアルタイムにログ分析ができるようになりました。

ダッシュボードのほか、DataV、Grafana、Tableau、および Quick と連携して、解析結果を可視化することもできます。本ドキュメントでは、Grafana を例に Log Service で Nginx ログを解析/可視化する方法について説明します。

プロセス構造

ログ収集から分析までの流れは以下のとおりです。

図 1. プロセス構造

手順

  1. ログデータの収集。詳しい手順については、5 分でクイックスタートをご参照ください。
  2. インデックス設定とコンソールで照会するための設定、 詳細な手順については、概要分析 - Nginx アクセスログ、または、ログ分析例をご参照ください。
  3. Grafana プラグインをインストールすと、リアルタイムに SQL クエリ結果がビューに反映されます。

ステップ 1 と 2 を終えると、クエリページで生ログが表示されます。

本ドキュメントでは、手順 3 を詳述します。

手順

  1. Grafana をインストール
  2. Log Service プラグインをインストール
  3. ログデータソースを指定
  4. ダッシュボードを追加
    1. テンプレート変数を設定
    2. PV/UVを設定
    3. 送受信ネットワーク帯域幅を設定
    4. HTTP メソッドの割合
    5. HTTP ステータスコードの割合
    6. トップソースのページ
    7. 最大待ち時間のページ
    8. トップページ
    9. 応答ステータスコード 200 以外の多かったページ
    10. フロントエンドとバックエンドの平均待ち時間
    11. クライアント統計
    12. ダッシュボードの保存と公開
  5. 結果を表示

1.Grafana をインストール

詳細なインストール手順についてはGrafana official documentをご参照ください。

Ubuntu へのインストールコマンドは次のとおりです。

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.5.2_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_4.5.2_amd64.deb

円グラフを使用するには、円グラフのプラグインをインストールします。詳細なインストール手順についてはGrafana official document をご参照ください。

次のコマンドを実行します。

grafana-cli plugins install grafana-piechart-panel

2.Log Service プラグインをインストール

Grafana プラグインのディレクトリを確認します。 Ubuntu プラグインは/var/lib/grafana/plugins/にあります。 プラグインをインストール後に、Grafana サーバーを再起動します。

システムが Ubuntu の場合、プラグインをインストールし、Grafana サーバーを再起動するコマンドは次のとおりです。
cd /var/lib/grafana/plugins/
git clone https://github.com/aliyun/aliyun-log-grafana-datasource-plugin
service grafana-server restart

3.ログデータソースを設定

ローカルマシンにインストールする場合、インストールに使用するポートは 3000 に初期設定されています。ブラウザでポート 3000 を開きます。

  1. 左上隅の Grafana のロゴをクリックします。表示されるダイアログボックスでデータソースを選択します。
  2. Add data sourceをクリックし、ログのグラフ分析に Grafana と Alibaba Cloud の Log Service を選択します。
  3. 新しいデータソースの構成項目を指定します。

    構成には下表の各項目があります。

    設定項目 設定内容
    データソース 名前は指定します。タイプはLogService
    HTTP 設定 URL の例: http://dashboard-demo.cn-hangzhou.log.aliyuncs.com dashboard-demo (プロジェクト名) および cn-hangzhou.log.aliyuncs.com (プロジェクトのリージョン) は、環境に合わせてご変更ください。アクセス方法は、「直接」または「プロキシ」を選択します。
    HTTP 認証 初期値をそのままご使用ください。
    Log Service 詳細 読み取り権限のあるプロジェクト、Logstore、および AccessKey を入力して Log Service の詳細を設定します。プライマリアカウントおよびサブアカウントに AccessKey があります。

    設定例

    図 2. 設定例

設定が完了したら、Addをクリックしてデータソースを追加します。次に、ダッシュボードを追加します。

4.ダッシュボードを追加

クリックして左上隅のメニューを開き、Dashboardsを選択し、 Newをクリックします。 左上のメニューに新しいダッシュボードが追加されます。

4.1 テンプレート変数を設定

Grafana にテンプレート変数を設定して、変数の値に応じてビューを表示できるようにします。本ドキュメントでは、時間間隔と各ドメインの設定方法について説明します。

  1. ページ上部のsetアイコン、templateを順にクリックします。
  2. 同ページに、設定されたテンプレート変数が表示されます。 新しいテンプレートを作成するには、newをクリックします。 まず、時間間隔を設定します。

    変数名は設定したものにします。例では「$myinterval」とします。クエリ条件には$ myintervalを記述します。設定については下表をご参照ください。

    構成項目 構成内容
    名前 変数名 (例: 「myinterval」)
    タイプ 間隔を選択
    ラベル 時間間隔を入力
    選択肢 値に1m,10m,30m,1h,6h,12h,1d,7d,14d,30dと入力
  3. ドメイン名テンプレートを設定します。

    通常、1 つの VPS に複数のドメインがマウントされています。各ドメインの状況をひとつひとつ確認しなければなりません。 テンプレート値を、*、www.host.com、www.host0.com、www.host1.comと入力すればすべてのドメインが表示され、www.host.com , www.host0.comまたはwww.host1.comとそれぞれ入力すればそれぞれのアクセス状況が表示されます。

    ドメイン名テンプレートの設定項目は、下表のとおりです。

    構成項目 構成内容
    名前 変数名 (例: 「hostname」)
    タイプ カスタムを選択
    ラベル ドメイン名を入力
    選択肢 値に*,www.host.com,www.host0.com,www.host1.comを入力

    設定が完了すると、設定されたテンプレート変数がダッシュボードページの上部に表示されます。ドロップダウンボックスから任意の値を選択します。 例えば、時間間隔として以下の値を選択できます。

4.2 PV/UV を設定

  1. 左側のAdd ROWをクリックして、新たな行を作成します。すでに行があれば、左側のメニューよりAdd Panelを選択します。
  2. Grafana にはさまざまなビューが用意されています。PV および UV データの場合は、Graphビューを作成します。
  3. Panel Titleをクリックして表示されるメニューよりEditをクリックします。
  4. メトリック設定の、データソースにはlogserviceを選択し、クエリ、Y 軸、X 軸を設定します。
    図 3. PV/UV の設定
  5. データソースのドロップダウンボックスより、logServiceを選択します。
    構成項目 構成内容
    Query
    $hostname| select approx_distinct(remote_addr) as uv ,count(1) as pv , __time__ -
                      __time__ % $$myinterval as time group by time order by time limit
                    1,000
    $hostname は、任意のドメイン名に置き換えます。$$myinterval は時間間隔に置き換えられます。「myinterval」の前には「$」が 2 つあり、「hostname」の場合は 1 つしかないことにご注意ください。
    X-Column 時間
    Y-Column UV、PV

    UV と PV の値はかけ離れているため、Y 軸を 2 つ表示します。UV の左側の色付きの線をクリックし、UV を左右のいずれの Y 軸にするかを指定します。

    図 4. Y 軸の表示

    タイトルは「Panel Title」に初期設定されています。変更するには、「基本」タブに移動し、タイトル設定に新しいタイトル (例: PV&UV)を入力します。

4.3 送受信ネットワーク帯域幅を設定

送受信のネットワーク帯域幅は4.2 PV/UV を設定と同様に追加します。

主な設定項目は次のとおりです。

構成項目 構成内容
Query
$hostname | select sum(body_byte_sent) as net_out, sum(request_length) as net_in
              ,__time__ - __time__ % $$myinterval as time group by __time__ - __time__ %
              $$myinterval limit 10000
X-Column 時間
Y-Column net_in、net_out

4.4 HTTP メソッドの割合

4.2 PV/UV を設定同様に HTTPメソッドの割合を設定します。

新たに行を作成し、円グラフを選択し、Query、X 軸、Y 軸を設定します。

主な設定項目は次のとおりです:

構成項目 構成内容
Query
$hostname | select count(1) as pv ,method group by method
X-Column pie
Y-Column method、pv

4.5 HTTP ステータスコードの割合

4.2 PV/UV を設定と同様に HTTP ステータスコードの割合を設定します。

新しい作成された行に、ビューの円グラフビューを選択します。

主な設定項目は次のとおりです:

構成項目 構成内容
Query
$hostname | select count(1) as pv ,status group by status
X-Column pie
Y-Column status、pv

4.6 トップソースのページ

4.2 PV/UV を設定と同じ方法でトップソースのページを設定することができます。

新しい作成された Row の中に、ビューのPie Chartを選択します:

主な設定項目は次のとおりです:

構成項目 構成内容
Query
$hostname | select count(1) as pv , referer group by referer order by pv
            desc
X-Column pie
Y-Column referer、pv

4.7 最大待ち時間のページ

4.2 PV/UV を設定と同様に最大待ち時間のページを設定します。

URL とテーブル内の待ち時間を表で表示するには、作成時にその表をに指定します。

主な設定項目は次のとおりです。

構成項目 構成内容
Query
$hostname | select url as top_latency_url ,request_time order by request_time desc
              limit 10
X-Column 空欄のまま
Y-Column top_latency_url、request_time

4.8 アクセス頻度の高いページ

4.2 PV/UV を設定と同様にアクセス頻度の高いページを追加します。

新しいテーブルビューを作成します。 データソースに Log Service を選択し、クエリ、X軸、およびY軸を指定します。下表をご参照ください。

構成項目 構成内容
Query
$hostname | select count(1) as pv, split_part(url,'?',1) as path group by
              split_part(url,'?',1) order by pv desc limit 20
X-Column 空欄
Y-Column path、pv

4.9 応答ステータスコード 200 以外の多かったページ

4.2 PV/UV を設定と同様に応答ステータスコード 200 以外の多かったページを追加します。

新しいテーブルビューを作成します。 データソースに Log Service を選択し、クエリ、X軸、およびY軸を指定します。下表をご参照ください。

構成項目 構成内容
Query
$hostname not status:200| select count(1) as pv , url group by url order by pv
              desc
X-Column 空欄
Y-Column url、pv

4.10 フロントエンドとバックエンドの平均待ち時間

4.2 PV/UV を設定と同様に平均フロントエンドを追加します。

新しいグラフビューを作成します。データソースに Log Service を選択し、クエリ、X軸、およびY軸を指定します。下表をご参照ください。

構成項目 構成内容
Query
$hostname | select avg(request_time) as response_time, avg(upstream_response_time) as
              upstream_response_time ,__time__ - __time__ % $$myinterval as time group by __time__ -
              __time__ % $$myinterval limit 10000
X-Column time
Y-Column upstream_response_time,response_time

4.11 クライアント統計

4.2 PV/UV を設定と同様にクライアント統計を追加します。

新しい円グラフを作成します。データソースに Log Service を選択し、クエリ、X軸、およびY軸を指定します。下表をご参照ください。

構成項目 構成内容
Query
$hostname | select count(1) as pv, case when regexp_like(http_user_agent , 'okhttp') then 'okhttp' when regexp_like(http_user_agent , 'iPhone') then 'iPhone' when regexp_like(http_user_agent , 'Android') then 'Android' else 'unKnown' end as http_user_agent group by http_user_agent order by pv desc limit 10
X-Column pie
Y-Column http_user_agent,pv

4.12 ダッシュボードの保存と公開

ページ上部の保存ボタンをクリックして、ダッシュボードを公開します。

5.結果を表示

ダッシュボードのホームページを開き、結果を表示します。参照デモ: デモ

ページの上部で、統計の期間または間隔、または、別のドメイン名を選択します。

以上で Dashboard for Nginx のアクセス統計の設定は完了です。分析にお役立てください。

図 5. 結果を表示