このトピックでは、Grafanaを使用して、Simple Log Serviceによって収集されるNGINXログを表示および分析する方法について説明します。
Simple Log Serviceは、ダッシュボードのエクスポートとGrafanaへのインポートをサポートしています。 詳細については、「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.36を使用します。
Grafanaがインストールされています。 詳細については、「Grafanaドキュメント」をご参照ください。
説明このトピックでは、Grafana 11.4.0が使用されます。
コンピュータに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プラグインのインストール
次のいずれかのコマンドを実行して、aliyun-log-grafana-datasource-pluginソフトウェアパッケージをGrafanaのプラグインディレクトリに解凍します。
Yellowdog Updater、Modified (YUM) リポジトリまたはRedHat Package Manager (RPM) パッケージを使用してGrafanaをインストールする場合は、次のコマンドを実行します。
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-11.4.0/data/plugins
Grafanaの設定ファイルを変更します。
設定ファイルを開きます。
YUMリポジトリまたはRPMパッケージを使用してGrafanaをインストールする場合は、/etc/grafana/grafana.iniファイルを開きます。
を使用してGrafanaがインストールされている場合. tar.gzファイルを開き、{PATH_TO}/grafana-11.4.0/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にログインします。
左側のナビゲーションウィンドウで、
を選択します。[データソース] タブで、[データソースの追加] をクリックします。
[データソースの追加] ページで、log-service-datasourceを検索します。 [データソースの追加] ページにlog-service-datasourceが表示されたら、[log-service-datasource] をクリックします。
aliyun-log-service-datasourceページで、パラメーターを設定します。
次の表で、関連パラメーターについて説明します。
パラメーター
説明
Endpoint
Simple Log Serviceプロジェクトのエンドポイント。 例:
http://cn-qingdao.log.aliyuncs.com
。 ビジネス要件に基づいてエンドポイントを入力します。 詳細については、「エンドポイント」をご参照ください。プロジェクト
Simple Log Serviceプロジェクトの名前。
AccessKeyID
AccessKey IDは、ユーザーを識別するために使用されます。 詳細については、「アクセスキーペア」をご参照ください。
最小権限の原則に基づいて、RAMユーザーに必要な権限のみを付与することをお勧めします。 RAMユーザーに権限を付与する方法の詳細については、「RAMユーザーを作成し、RAMユーザーにSimple Log Serviceへのアクセスを許可する」および「カスタムポリシーを使用してRAMユーザーに権限を付与する例」をご参照ください。
AccessKeySecret
AccessKey secretは、署名文字列の暗号化と検証に使用されます。 AccessKeyシークレットは機密保持する必要があります。
次の表に、オプションのパラメーターを示します。
パラメーター
説明
名前
データソースの名前。 デフォルト値: aliyun-log-service-datasource
デフォルト
デフォルトでは、スイッチはオンになっています。
デフォルトのLogstore
ログストアを指定しない場合は、指定したAccessKeyペアが指定したプロジェクトに対するListProject権限を持っていることを確認してください。
RoleArn
STSベースのリダイレクトに指定されているRAMロールのARN。
HTTPヘッダー
カスタムヘッダーを指定できます。 このパラメーターは、データソースの型がMetricStore (PromQL) の場合にのみ有効です。 詳細については、クエリ高速化トピックのFormValueパラメーターのフィールドを参照してください。 次のリストは、Headersパラメーターのフィールドについて説明しています。
x-sls-parallel-enable: 同時コンピューティングを有効にするかどうかを指定します。 デフォルトでは、同時コンピューティングは無効になっています。
x-sls-parallel-time-piece-interval: クエリが分割される時間間隔。 単位は秒です。 有効値: [3600, 86400 × 30] 。 デフォルト値: 21600。6時間に相当します。
x-sls-parallel-time-piece-count: 指定された時間間隔に基づいて分割した後に取得できるサブクエリの数。 有効な値: 1 ~ 16。 デフォルト値: 8。
x-sls-parallel-count: グローバル同時実行タスクの数。 有効値: 2 ~ 64。 デフォルト値: 8。
x-sls-parallel-count-per-host: サーバー上の同時タスクの数。 有効値: 1~8。 デフォルト値:2
x-sls-global-cache-enable: グローバルキャッシュを有効にするかどうかを指定します。 デフォルトでは、グローバルキャッシュは無効になっています。
リージョン
署名のV4は、より高いセキュリティを提供するためにサポートされます。
設定が完了したら、[保存とテスト] をクリックします。
ステップ3: ダッシュボードを追加する
Grafanaのダッシュボードを追加するには、次の手順を実行します。
左側のナビゲーションウィンドウで、[ダッシュボード] をクリックします。
[ダッシュボード] ページで、[作成済みダッシュボード] をクリックします。 次に、[+ ビジュアライゼーションの追加] をクリックします。
[データソースの選択] ページで、[データソース] ドロップダウンリストから [aliyun-log-service-datasource] を選択します。
ビジネス要件に基づいてチャートを追加します。
次の一覧では、グラフを追加するときに設定する必要があるパラメーターについて説明します。
Data source type: データソースのタイプは、構文とストアタイプによって異なります。 構文には、SQLとPromQLが含まれます。 サポートされているデータソースの種類には、ALL(SQL) 、Logstore(SQL) 、MetricStore(SQL) 、MetricStore(PromQL) があります。
SQL構文を使用して、ログストア内のデータをクエリおよび分析できます。 詳細については、「ログクエリと分析の概要」をご参照ください。
SQL構文とPromQL構文を使用して、Metricstoreのデータを照会および分析できます。 詳細については、「ログクエリと分析の概要」をご参照ください。
データソースの構成ページで、MetricStore(PromQL) タイプのデータソースのカスタムヘッダーを追加できます。
Logstores: クエリするログストアの名前。
Query: クエリステートメント。 例:
* | select count(*) as c, __time__-__time__%60 as t group by t
ycol:
どれも
xcol: ドロップダウンリストからTimeSeries / Customを選択し、
t
と入力します。goto SLS: Simple Log Serviceコンソールに移動するリンクです。
[Explore] ページと [Dashboards] ページで [goto SLS] をクリックすると、ビジネス要件に基づいてコンソール間のデータ比較を行うことができます。 Simple log Serviceコンソールでは、より強力な機能と柔軟なログ取得を使用できます。 Simple Log Serviceコンソールに移動すると、Grafanaで指定したクエリと時間情報がSimple Log Serviceコンソールに表示されます。 Simple Log Serviceコンソールで情報を指定する必要はありません。
このリダイレクトに追加の設定は必要ありません。 ブラウザでSimple Log Serviceコンソールにログインしていることを確認してください。 それ以外の場合は、Simple Log Serviceコンソールのログインページに移動します。
説明この機能は、Simple Log ServiceプラグインV2.30以降が使用されている場合に使用できます。
[パネルオプション] セクションで、[タイトル] パラメーターを設定します。 次に、ページの右上隅にある [ダッシュボードの保存] をクリックします。 表示されるダイアログボックスで、[保存] をクリックします。
テンプレート変数の設定
Grafanaでテンプレート変数を設定した後、異なる変数値を選択して、同じグラフで異なる結果を表示できます。
時間間隔のテンプレート変数の設定
[新しいダッシュボード] ページの右上隅で、
を選択します。[変数] をクリックします。
[新しい変数] をクリックします。
テンプレート変数のパラメーターを設定します。 次に、[追加] をクリックします。
次の表は、各パラメーターの説明です。
項目
説明
Name
テンプレート変数の名前。 例: myinterval。 クエリ条件でテンプレート変数を使用する場合は、テンプレート変数の名前の前に2つのドル記号 ($$) を追加する必要があります。 例:
$$myinterval
。Type
[間隔] を選択します。
ラベル
[時間間隔] を入力します。
値
1m、10m、30m、1h、6h、12h、1d、7d、14d、30dを入力します。
自動オプション
自動オプションをオンにします。 他のパラメーターのデフォルト値を保持します。
設定効果を表示します。
ドメインのテンプレート変数の設定
[変数] ページで、[新規] をクリックします。
テンプレート変数のパラメーターを設定します。 次に、[追加] をクリックします。 次の表は、各パラメーターの説明です。
項目
説明
Name
テンプレート変数の名前。 例: hostname。 クエリ条件でテンプレート変数を使用する場合は、テンプレート変数の名前の前にドル記号 ($) を追加する必要があります。 例:
$hostname
。Type
[カスタマイズ] を選択します。
ラベル
ドメイン名を入力します。
Custom Options
* 、example.com、example.org、example.net
を入力します。 すべてのドメインへのアクセスに関する情報を表示できます。example.com
、example.org
、またはexample.net
ドメインへのアクセスに関する情報を表示することもできます。選択オプション
パラメーターのデフォルト値を保持します。
設定効果を表示します。
ログストアのリストのテンプレート変数の設定
[変数] ページで、[変数型の選択] パラメーターを [カスタム] に設定します。 テンプレート変数の名前は一意の識別子です。 Nameパラメーターには、ログストアを含む値を指定する必要があります。 文字列ログストアは大文字と小文字を区別しません。 カスタムオプションパラメーターにオプションの変数を指定し、変数をコンマ (,) で区切る必要があります。
Logstoreのリストのドロップダウンリストからテンプレート変数の指定されたカスタム名を選択し、ダッシュボードを更新して最新の結果を取得します。
標準チャート作成の概要
単一値チャート (統計およびゲージチャート)
xcol: stat
ycol: <Numeric column>, <Numeric column>
ycolに数値以外の列を指定した場合、列には0が表示されます。
例 1
チャートタイプ: Stat
xcol:
stat
ycol:
PV、deltaPercent
query:
* | select diff[1] as "PV" 、round((diff[1] - diff[2])/diff[2] * 100, 2) as deltaPercent from (select compare("PV", 86400) as diff from (select count(*) as "PV" from log))
例 2
チャートタイプ: ゲージ
xcol:
stat
ycol:
c
query:
* | select count(distinct labels['hostname']) as c from (promql_query('${metricName}{cluster =~ "${cluster}"}') をメトリックから選択) limit 100000
円グラフ (パイ)
xcol: パイ
ycol: <集計列>, <集計列>
例 1
チャートタイプ: Pie
xcol:
パイ
ycol:
request_method, c
query:
request_method: "$method" | select count(*) as c, request_method group by request_method
例 2
チャートタイプ: Pie
xcol:
パイ
ycol:
http_user_agent, pv
クエリ:
* | pvとしてcount (1) を選択し、「 % Chrome % 」のようなhttp_user_agentの場合、「Chrome」、「 % Firefox % 」のようなhttp_user_agentの場合、「Firefox」、「 % Safari % 」のようなhttp_user_agentが「 % Chrome % 」のような場合、「Safari' 」、「UnKnown」はhttp_user_agentグループとして終了します。% % http_user_agentが「Firefox」のようになり」のような場合、「のような場合、「 % % 」のような」のような場合
他のシナリオ
Statチャートの書き込みルールは円グラフにも適しており、データも期待どおりに表示できます。
チャートタイプ: Pie
xcol:
stat
ycol:
hostNameNum, ipNum
query:
* | select count(distinct labels['hostname']) as hostNameNum、count(distinct labels['ip']) + 20 as ipNum from (select promql_query('${metricName}{cluster =~ ".*"}) limit 100000
から
折れ線グラフ (時系列)
xcol: <時間列>
ycol: ログの書き込みには <Numeric column> [, <Numeric column>, ...]
、Metricstoreまたはログ集約の書き込みには <labels / Aggregate column >#:#< Numeric column>
例 1
チャートタイプ: 時系列
xcol:
time
ycol:
pv、uv
query:
* | select __time__ - _time__${ myinterval} as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000
例 2
チャートタイプ: 時系列
xcol:
time
ycol:
labels #:# value
query:
* | select time, * from (select promql_query_range('${metricName}') from metrics) limit 1000
例 3
SQL文を使用して、ビジネス要件に基づいて時系列データのラベルを表示できます。
チャートタイプ: 時系列
xcol:
time
ycol:
customLabelsExtract #:# value
query:
* | select concat(labels['ip'], ' -> ', labels['cluster']) as customLabelsExtract, value from (select promql_query_range('${metricName}') from metrics) limit 1000
棒グラフ (バー)
xcol: バー
ycol: <集計列>, <Numeric column> [, <Numeric column>, ...]
例 1
チャートタイプ: Bar
xcol:
バー
ycol:
ホスト、pv、pv2、uv
query:
* | select host, COUNT(*)+ 10 as pv, COUNT(*)+ 20 as pv2, approx_distinct(remote_addr) as uv GROUP BY host ORDER BY uv desc LIMIT 5
テーブル (テーブル)
フィールド値がナノ秒まで正確である場合、時間フィールドの値はナノ秒でソートすることができる。
totalLogsパラメーターを変更できます。 totalLogsパラメーターは、クエリするログの総数を指定します。 デフォルト値:100 最小値:1 最大値: 5000。 このパラメーターは、検索文でのみ有効です。
xcol: <なし>
ycol: <None> or <Display column> [, <Display column>, ...]
例 1
チャートタイプ: 表
xcol:
テーブル /ログ
ycol:
<なし>
クエリ:
* | select __time__ - __time__ % 60 as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000
Logs (Logs)
xcol: <なし>
ycol: <なし>
例:
チャートタイプ: Logs
xcol: <なし>
ycol: <なし>
query: host: www.vt.mock.com
Traces (トレース)
チャートタイプ: Traces
xcol: トレース
ycol: どれも
query: traceID: "f88271003ab7d29ffee1eb8b68c58237"
この例では、ログストアを使用してトレースデータを収集します。 ログストアを使用してトレースデータを収集する前に、Simple Log Serviceのトレースアプリケーションを有効にする必要があります。 OpenTelemetryを使用して、トレースデータをネイティブモードでSimple Log Serviceに収集できます。 他のトレースシステムを使用して、トレースデータをSimple Log Serviceに収集することもできます。 詳細については、「概要」をご参照ください。
10.0以降のバージョンのGrafanaは、トレースデータのスパンをフィルタリングする機能をサポートしています。 Grafana 10.0以前を使用する場合は、クエリステートメントでカスタムスパンフィルタリングを構成できます。 例:
traceID: "f88271003ab7d29ffee1eb8b68c58237" and resource.deployment.environment : "dev" and service : "web_request" and duration > 10
マップ (地図)
xcol: マップ
ycol: <国の列> 、<地理的な場所の列> 、<数値列>
例:
チャートタイプ: GeoMap
xcol: map
ycol: 国、geo、pv
query: * | 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 by geo <>''limit 1000
よくある質問
Grafanaログはどこに保存されますか?
Grafanaログは次のディレクトリに保存されます。
macOS: /usr/local/var/log/grafana
Linux: /var/log/grafana
aliyun-log-plugin_linux_amd64: 権限拒否がログに表示された場合はどうすればよいですか?
プラグインディレクトリのdist/aliyun-log-plugin_linux_amd64ディレクトリにEXECUTE権限を付与します。