このトピックでは、Grafanaを使用して、Simple Log Serviceによって収集されるNGINXログを表示および分析する方法について説明します。
前提条件
NGINXログが収集されます。 詳細については、「サーバーからのテキストログの収集」をご参照ください。
インデックス作成機能が有効になり、インデックスが作成されます。 詳細については、「NGINXアクセスログの収集と分析」をご参照ください。
aliyun-log-grafana-datasource-pluginソフトウェアパッケージがダウンロードされます。 理解を容易にするために、プラグインはこのトピックではSimple Log Serviceプラグインとも呼ばれます。
downloadコマンドは
wget https://github.com/aliyun/aliyun-log-grafana-datasource-plugin/archive/refs/heads/master.zip
です。説明このトピックでは、aliyun-log-grafana-datasource-plugin V2.9を使用します。
Grafanaがインストールされています。 詳細については、「Grafanaドキュメント」をご参照ください。
説明このトピックでは、Grafana 8.0.6が使用されます。
コンピュータにGrafanaをインストールする場合は、ブラウザの設定でポート3000を有効にする必要があります。
円グラフを使用する場合は、次のコマンドを実行して円グラフプラグインをインストールする必要があります。
grafana-cli plugins install grafana-piechart-panel
Grafanaとaliyun-log-grafana-datasource-pluginのバージョン互換性
Grafanaとaliyun-log-grafana-datasource-pluginのバージョン互換性を次の表に示します。
Grafana | aliyun-log-grafana-datasource-plugin |
8.0.0以降 | |
8.0.0より前 |
使用上の注意
Security Token Service (STS) ベースのリダイレクトを設定してセキュリティを確保する場合は、次の点に注意してください。
● Grafanaでデータソースを追加するときにAccessKeyペアが使用されるResource Access Management (RAM) ユーザーの場合、AliyunRAMReadOnlyAccess
ポリシーをRAMユーザーにアタッチする必要があります。
● データソースにAlibaba Cloud Resource Name (ARN) が指定されているRAMロールの場合、AliyunLogReadOnlyAccess
ポリシーのみをRAMロールにアタッチする必要があります。 詳細については、「コンソールページの埋め込みとログデータの共有」をご参照ください。
パスワードフリーモードでSTSベースのリダイレクトを設定した後、データソースに基づいて生成されたGrafanaダッシュボードに対してパブリックアクセスと共有が許可されているかどうかを確認します。 パブリックアクセスは、トラフィックコストの増加とログコンテンツの公開につながる可能性があります。
システムポリシーの詳細については、「Simple Log Serviceのシステムポリシー」をご参照ください。
手順1: Simple Log Serviceプラグインのインストール
次の手順では、Grafana用のSimple Log Serviceプラグインをインストールする方法について説明します。
次のコマンドを実行して、プロジェクトパッケージをGrafanaのプラグインディレクトリに解凍します。
GrafanaがYUMリポジトリまたはRPMパッケージを使用してインストールされている場合は、次のコマンドを実行します。
unzip aliyun-log-grafana-datasource-plugin-master.zip -d /var/lib/grafana/plugins
を使用してGrafanaがインストールされている場合. tar.gzファイルで、次のコマンドを実行します。
{PATH_TO} はGrafanaのインストールディレクトリを指定します。
unzip aliyun-log-grafana-datasource-plugin-master.zip -d {PATH_TO}/grafana-8.0.6/data/plugins
Grafanaの設定ファイルを変更します。
設定ファイルを開きます。
YUMリポジトリまたはRPMパッケージを使用してGrafanaをインストールする場合は、/etc/grafana/grafana.iniファイルを開きます。
を使用してGrafanaがインストールされている場合. tar.gzファイルを開き、{PATH_TO}/grafana-8.0.6/conf/defaults.iniファイルを作成します。
設定ファイルで [plugins] を検索し、allow_loading_unsigned_pluginsパラメーターを設定します。
allow_loading_unsigned_plugins = aliyun-log-service-datasource
Grafanaサービスを再起動します。
killコマンドを実行し、Grafanaプロセスを終了します。
次のコマンドを実行してGrafanaサービスを開始します。
GrafanaがYUMリポジトリまたはRPMパッケージを使用してインストールされている場合は、次のコマンドを実行します。
systemctl restart grafana-server
を使用してGrafanaがインストールされている場合. tar.gzファイルで、次のコマンドを実行します。
./bin/grafana-server web
ステップ2: Grafanaのデータソースを追加する
次の手順では、GrafanaのデータソースとしてSimple Log Serviceプラグインを追加する方法について説明します。
Grafanaにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[データソース] タブで、[データソースの追加] をクリックします。
[データソースの追加] ページで、LogServiceカードの [選択] をクリックします。
データソースを設定します。
下表に、各パラメーターを説明します。
パラメーター
説明
名前
データソースの名前。
デフォルト
デフォルトスイッチ。 この例では、スイッチをオンにします。
Endpoint
Simple Log Serviceプロジェクトのエンドポイント。 例:
http://cn-qingdao.log.aliyuncs.com
。 ビジネス要件に基づいてエンドポイントを入力します。 詳細については、「エンドポイント」をご参照ください。プロジェクト
プロジェクトの名前。
ログストア
ログストアの名前
AccessKeyId
Alibaba Cloudが提供するAccessKey ID。 AccessKey IDは、ユーザーを識別するために使用されます。 アカウントのセキュリティを確保するために、RAMユーザーのAccessKeyペアを使用することを推奨します。 AccessKeyペアを取得する方法の詳細については、「AccessKeyペア」をご参照ください。
AccessKeySecret
Alibaba Cloudが提供するAccessKeyシークレット。 AccessKeyシークレットは、ユーザーのキーを認証するために使用されます。 アカウントのセキュリティを確保するために、RAMユーザーのAccessKeyペアを使用することを推奨します。 AccessKeyペアを取得する方法の詳細については、「AccessKeyペア」をご参照ください。
[保存とテスト] をクリックします。
ステップ3: ダッシュボードを追加する
Grafanaのダッシュボードを追加するには、次の手順を実行します。
左側のナビゲーションウィンドウで、 .
新しいパネルパネル、クリック視覚化の選択.
テンプレート変数を設定します。
Grafanaでテンプレート変数を設定した後、異なる変数値を選択して、同じパネルで異なる結果を表示できます。
時間間隔のテンプレート変数を設定します。
[新しいダッシュボード] ページの右上隅で、時間間隔を選択してアイコンをクリックします。
[変数] をクリックします。
[変数の追加] をクリックします。
テンプレート変数のパラメーターを設定します。 次に、[追加] をクリックします。
下表に、各パラメーターを説明します。
パラメーター
説明
名前
テンプレート変数の名前を入力します。 例: myinterval。 クエリ条件でテンプレート変数を使用する場合は、テンプレート変数の名前の前に2つのドル記号 ($$) を追加する必要があります。 例:
$$myinterval
。タイプ
[間隔] を選択します。
ラベル
[時間間隔] を入力します。
値
1m、10m、30m、1h、6h、12h、1d、7d、14d、30dを入力します。
自動オプション
自動オプションをオンにします。 他のパラメーターのデフォルト値を保持します。
ドメインのテンプレート変数を設定します。
[変数] ページで、[新規] をクリックします。
テンプレート変数のパラメーターを設定します。 次に、[追加] をクリックします。 下表に、各パラメーターを説明します。
パラメーター
説明
名前
テンプレート変数の名前を入力します。 例: hostname。 クエリ条件でテンプレート変数を使用する場合は、テンプレート変数の名前の前にドル記号 ($) を追加する必要があります。 例:
$hostname
。タイプ
[カスタマイズ] を選択します。
ラベル
ドメイン名を入力します。
Custom Options
* 、example.com、example.org、example.net
を入力します。 すべてのドメインへのアクセスに関する情報を表示できます。example.com
、example.org
、またはexample.net
ドメインへのアクセスに関する情報を表示することもできます。選択オプション
パラメーターのデフォルト値を保持します。
左側のナビゲーションウィンドウで、保存.
ビジネス要件に基づいてパネルを追加します。
グラフパネルを追加して、ページビュー (PV) とユニークビジター (UV) を表示します。
ページの右上隅にあるアイコンをクリックします。
[新しいパネル] パネルで、[クエリの追加] をクリックします。
アイコンをクリックし、[可視化] ドロップダウンリストから [グラフ] を選択します。
アイコンをクリックします。 次に、タイトルフィールドにUV&PVと入力します。
アイコンをクリックし、クエリドロップダウンリストからLogserviceを選択し、パラメーターを設定します。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname| select approx_distinct(remote_addr) as uv ,count(1) as pv , __time__ - __time__ % $$myinterval as time group by time order by time limit 1000
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられ、$$myinterval
は指定した時間間隔に置き換えられます。重要myintervalの前に2つのドル記号 ($$) が必要であり、ホスト名の前に1つのドル記号 ($) が必要です。
X-Column
timeを入力します。 この値は、秒単位の正確なUNIXタイムスタンプです。
Y-Column
uv、pvを入力します。
UVの値とPVの値の差が大きい場合は、2つのY軸パネルを使用してUVとPVの統計を表示します。
アイコンをクリックして設定を保存します。
インバウンドトラフィックとアウトバウンドトラフィックを表示するグラフパネルを追加します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$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
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられ、$$myinterval
は指定した時間間隔に置き換えられます。重要myintervalの前に2つのドル記号 ($$) が必要であり、ホスト名の前に1つのドル記号 ($) が必要です。
X-Column
timeを入力します。 この値は、秒単位の正確なUNIXタイムスタンプです。
Y-Column
net_in,net_outと入力します。
円グラフパネルを追加して、HTTPリクエストメソッドによるリクエストの分布を表示します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname | select count(1) as pv ,method group by method
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
pieを入力します。
Y-Column
method,pvを入力します。
HTTPステータスコードによるリクエストの分布を表示する円グラフパネルを追加します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname | select count(1) as pv ,status group by status
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
pieを入力します。
Y-Column
status,pvを入力します。
頻繁にアクセスされるページのリクエストソースを表示する円グラフパネルを追加します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname | select count(1) as pv , referer group by referer order by pv desc
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
pieを入力します。
Y-Column
referer、pvを入力します。
テーブルパネルを追加して、最も高いレイテンシーでロードされたページを表示します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname | select URL as top_latency_URL ,request_time order by request_time desc limit 10
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
このパラメーターを設定する必要はありません。
Y-Column
top_latency_url,request_timeを入力します。
頻繁にアクセスされるページを表示するテーブルパネルを追加します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname | select count(1) as pv, split_part(URL,'?',1) as path group by split_part(URL,'?',1) order by pv desc limit 20
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
このパラメーターを設定する必要はありません。
Y-Column
path,pvを入力します。
テーブルパネルを追加して、HTTPステータスコード200が返されないアクセス要求が最も多いページを表示します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname not status:200| select count(1) as pv , url group by url order by pv desc
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
このパラメーターを設定する必要はありません。
Y-Column
url、pvを入力します。
singlestatパネルを追加して、平均レイテンシを表示します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$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
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられ、$$myinterval
は指定した時間間隔に置き換えられます。重要myintervalの前に2つのドル記号 ($$) が必要であり、ホスト名の前に1つのドル記号 ($) が必要です。
X-Column
timeを入力します。
Y-Column
upstream_response_time,response_timeと入力します。
ログに関する詳細を表示するログパネルを追加します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
説明各ページには最大100個のログを表示できます。 したがって、[ページごとのログ] パラメーターの最大値は100です。
クライアント統計を表示する円グラフパネルを追加します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$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
'end as _httpuser_agent
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
pieを入力します。
Y-Column
http_user_agent,pvと入力します。
グラフパネルを追加して、1分の時間範囲で各HTTPステータスコードが返されるリクエストの数を表示します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname | select to_unixtime(time) as time,status,count from (select time_series(__time__, '1m', '%Y-%m-%d %H:%i', '0') as time,status,count(*) as count from log group by status,time order by time limit 10000)
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
時間を入力します。
Y-Column
col1 #:# col2と入力します。 col1は集約列で、col2は他の列の1つです。
worldmapパネルを追加して、送信元IPアドレスの分布を表示します。
パネルの追加方法の詳細については、このトピックの「グラフパネルを追加してページビュー (PV) とユニークビジター (UV) を表示する」を参照してください。 下表に、各パラメーターを説明します。
パラメーター
説明
クエリ
実行するクエリ文を入力します。 例:
$hostname | select count(1) as pv ,geohash(ip_to_geo(arbitrary(remote_addr))) as geo,ip_to_country(remote_addr) as country from log group by country having geo <>'' limit 1000
クエリと分析の結果では、
$hostname
は指定したドメインの名前に置き換えられます。X-Column
mapを入力します。
Y-Column
country、geo、pvを入力します。
パラメーター
説明
位置データ
geohashを選択します。
[場所名] フィールド
countryを入力します。
geo_point/geohashフィールド
geoを入力します。
Metricフィールド
pvを入力します。
結果を表示します。
ダッシュボードページの上部セクションで、時間間隔を選択できます。 [時間間隔] および [ホスト名] クエリ条件を使用して、結果をフィルタリングすることもできます。
よくある質問
Grafanaログはどこに保存されますか?
Grafanaログは次のディレクトリに保存されます。
macOS: /usr/local/var/log/grafana
Linux: /var/log/grafana
aliyun-log-plugin_linux_amd64: 権限拒否がログに表示された場合はどうすればよいですか?
プラグインディレクトリのdist/aliyun-log-plugin_linux_amd64ディレクトリにEXECUTE権限を付与します。