操作シナリオ
CLS(Cloud Log Service)とGrafanaを連携させることで、Grafanaを通じてログトピックおよびメトリックトピックのデータを表示し、アラートポリシーを設定できます。このドキュメントでは、CentOSオペレーティングシステムを例に、Grafanaのインストールと設定方法を説明します。
Tencent CloudアカウントにログインせずにCLSを利用する方法の概要
|
| CLSのログ検索、ダッシュボード、アラート機能をサポートします。 | サポートされます。独立デプロイが可能で、パスワードなしログインまたはパスワード認証ログインに対応しています。 | 無 | 認証なし/パスワード認証に対応し、複数ロールをサポートします。 |
| Grafanaのダッシュボードとアラート機能のみをサポートします。 | サポートされます。データはGrafanaに接続して使用します。 | CLS プラグインをインストールする必要があります。 | Grafanaの権限管理システムは、複数ロールをサポートします。 |
その他のソリューション
前提条件
ログトピックデータを表示する場合、Grafanaは8.0以降のバージョンが必要です。バージョンをアップグレードする必要がある場合は、Grafanaアップグレードガイドをご参照ください。メトリックトピックデータの表示にはこの制限はありません。 操作手順
ステップ1:CLSプラグインをGrafanaにインストールする(オプション)
説明:
Grafanaでログトピックデータを表示する場合は、このプラグインをインストールする必要があります。メトリックトピックデータのみを表示する場合は、プラグインをインストールする必要はなく、この手順をスキップできます。
Tencent Cloud可観測プラットフォーム Grafanaサービス
1. Grafanaのプラグインディレクトリの場所を確認してください。Centosのプラグインディレクトリ/var/lib/grafana/plugins/にプラグインをインストールします。
cd /var/lib/grafana/plugins/
wget https://github.com/TencentCloud/cls-grafana-datasource/releases/latest/download/tencent-cls-grafana-datasource.zip
unzip tencent-cls-grafana-datasource
または、ワンクリックインストールスクリプトを使用します(末尾のパラメータはプラグインのインストールディレクトリです):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/TencentCloud/cls-grafana-datasource/master/toolkit/update.sh)" bash /var/lib/grafana/plugins/
2. Grafana設定ファイルを変更し、CLSデータソースIDを設定します。設定ファイルのパスについては、設定ドキュメントを参照してください。 Linuxシステム設定ファイルのパス:/etc/grafana/grafana.ini
macOSシステム設定ファイルのパス:/usr/local/etc/grafana/grafana.ini
pluginsでallow_loading_unsigned_pluginsパラメータを設定します:
allow_loading_unsigned_plugins = tencent-cls-grafana-datasource
dataproxyでtimeout、dialTimeout、keep_alive_secondsパラメータを設定します:
[dataproxy]
timeout = 60
dialTimeout = 60
keep_alive_seconds = 60
3. Grafanaサービスを再起動します:
service grafana-server restart
docker runコマンド:
docker run -d -p 3000:3000 --name=grafana \\
-e "GF_INSTALL_PLUGINS=https://github.com/TencentCloud/cls-grafana-datasource/releases/latest/download/tencent-cls-grafana-datasource.zip;tencent-cls-grafana-datasource" \\
-e "GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=tencent-cls-grafana-datasource" \\
-e "GF_DATAPROXY_TIMEOUT=60" \\
-e "GF_DATAPROXY_DIALTIMEOUT=60" \\
-e "GF_DATAPROXY_KEEP_ALIVE_SECONDS=60" \\
grafana/grafana
docker compose:
version: '3'
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- '3000:3000'
environment:
- GF_INSTALL_PLUGINS=https://github.com/TencentCloud/cls-grafana-datasource/releases/latest/download/tencent-cls-grafana-datasource.zip;tencent-cls-grafana-datasource
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=tencent-cls-grafana-datasource
- GF_DATAPROXY_TIMEOUT=60
- GF_DATAPROXY_DIALTIMEOUT=60
- GF_DATAPROXY_KEEP_ALIVE_SECONDS=60
1. Grafana設定に以下の設定を追加します。詳細については、設定管理をご参照ください: [plugins]
allow_loading_unsigned_plugins = tencent-cls-grafana-datasource
[dataproxy]
timeout = 60
dialTimeout = 60
keep_alive_seconds = 60
2. tencent-cls-grafana-datasourceを選択してインストールします。詳細については、プラグインインストールガイドをご参照ください。 ステップ2:データソースを設定する
Data Sourcesページで、Add data sourceをクリックします。Tencent CLS Datasourceを選択し、以下の説明に従ってデータソースを設定します:
|
Security Credentials | SecretId、SecretKey:APIリクエストキーであり、身元認証に使用されます。 アドレスを取得するには、CAMにアクセスしてください。子アカウントを個別に作成し、そのアカウントのSecretIdとSecretKeyを使用することをお勧めします。権限ポリシーには、推奨権限ポリシー設定を使用できます。 |
メトリックトピックはPrometheusデータモデルおよびインターフェースと互換性があり、Prometheusデータソースとして直接Grafanaに接続できます。これは、各メトリックトピックが1つのPrometheusインスタンスに相当することを意味します。
1. 設定情報を取得します。
1.1 CLSコンソールにログインし、左側のナビゲーションバーでメトリックトピックをクリックします。 1.2 メトリックトピック管理ページで、追加するメトリックトピック名をクリックし、メトリックトピック基本情報ページに進みます。
1.3 ページ内のアクセス方法>データクエリにあるURLと認証方式は、Grafanaでデータソースを追加するために必要な設定情報です。認証方式のSecretIdおよびSecretKeyは、CAMページに移動して取得する必要があります。サブアカウントを個別に作成し、そのアカウントのSecretIdおよびSecretKeyを使用することをお勧めします。権限ポリシーには推奨権限ポリシー設定を使用できます。 2. Data Sourcesページで、Add data sourceをクリックします。
3. Prometheusを選択し、フォームで以下の情報を設定します:
Prometheus server URL:手順1で取得した設定情報のURLです。GrafanaがTencent Cloudのプライベートネットワークにデプロイされている場合(例えばCVMまたはTKEにデプロイされている場合)、プライベートネットワークアドレスを使用できます。その他の場合はパブリックネットワークアドレスを使用してください。
認証方式:Basic認証、UserはSecretId、PasswordはSecretKeyです。
Alerting:その中のスイッチをオフにします。これには、Manage alerts via Alerting UIおよびAllow as recording rules targetが含まれます(旧バージョンのGrafanaにはこの設定項目がない場合があります。その場合は無視してかまいません)。
Prometheus type:Prometheusを選択します。
Prometheus version:> 2.50.x(旧バージョンのGrafanaにはこの設定項目がない場合があります。その場合は無視してかまいません。ただし、データ量が多い場合にクエリパフォーマンスに影響するため、その場合はGrafanaのアップグレードを推奨します)。
4. 下部のSave & Testをクリックして、設定情報が正しいかどうかをテストし、設定を保存します。
ステップ3:Grafanaでデータを確認する
Grafana-Exploreで元のログを表示します
1. Grafana-Exploreに入り、データソースとしてTencent CLS Datasourceプラグインを選択します。
2. プラグインタイプとしてCLSを選択し、対象ログトピックの地域、ログトピック名を選択します。
3. 検索ステートメントにステートメントを入力し、右上のRun queryをクリックすると、ログ検索結果を表示できます。
Grafana-Dashboardで元のログを表示します
1. Grafana-Dashboardに入り、添加图表をクリックします。
2. グラフ編集ページで、グラフタイプとしてLogsを選択します。データソースとして Tencent CLS Datasource プラグインを選択し、対象ログトピックの地域、ログトピック名を選択します。
3. 検索ステートメントにステートメントを入力し、右上の刷新ボタンをクリックすると、ログ検索結果を表示できます。
Grafana v8.3以降のバージョンをご利用の場合、Transform機能のExtract fields機能を使用して、検索結果からフィールドを抽出し、Tableでログを表示することもできます。
Grafanaで統計グラフを設定します
1. Grafana-Dashboardに入り、添加图表。をクリックします。
2. グラフ編集ページで、目的のグラフタイプを選択します。データソースとしてTencent CLS Datasource プラグインを選択し、対象ログトピックの地域、ログトピック名を選択します。
3. 検索ステートメントにSQLステートメントを入力し、右上の刷新をクリックすると、統計グラフの結果を表示できます。
時系列グラフを描画するためのステートメント例
* | select histogram( cast(TIMESTAMP as timestamp),interval 1 minute) as analytic_time, count(*) as log_count group by analytic_time order by analytic_time limit 1000
時系列グラフは適応型の時間粒度を使用します
* | select time_series(__TIMESTAMP__, '${__interval}', '%Y-%m-%dT%H:%i:%s+08:00', '0') as analytic_time,count(*) as log_count group by analytic_time order by analytic_time limit 1000
このステートメントは、時系列グラフを描画するためにTransform機能と組み合わせて使用します。Convert field typeおよびPrepare time series の設定を以下のように追加します:
円グラフを描画するためのステートメント例
右側のグラフ設定項目Value Options - showでAll valuesを選択してください:
* | select try_cast(status as varchar) as status, count(*) as log_count group by statu
1. Grafana-Exploreに入り、データソースとしてステップ2で追加したPrometheusデータソースを選択します。
2. クエリステートメントを入力し、右上のRun queryをクリックすると、メトリックデータを表示できます。
ステップ4:Grafanaで監視アラートを設定する
1. Grafana-Alert rules に入り、新建告警规则をクリックします。
2. アラートルール編集ページに入り、Aで、データソースとしてTencent CLS Datasource プラグインを選択し、監視アラートの統計時間範囲を必要に応じて選択します。
3. Aで、対象ログトピックが存在するリージョン、ログトピック名を選択します。
4. A で、検索ステートメントにSQLステートメントを入力します。その結果は監視アラート指標として使用されます。
5. Bで、Aのアラート指標の値を選択します。例では最新の値を取得します。
6. C で、アラート指標値のアラートトリガー条件を設定します。例では、値が100より大きい場合にアラートがトリガーされます。
7. Preview をクリックしてアラート結果をプレビューします。アラート通知設定を入力し、保存をクリックします。
1. Grafana-Alert rulesに入り、新建告警规则をクリックします。指標主题はPrometheus Alert関連インターフェースと互換性がないため、Grafana managed alertを使用してください。
2. アラートルール編集ページに入り、Aで、データソースとしてステップ2で追加したPrometheusデータソースを選択します。
3. A に、指標クエリステートメントを入力します。
4. Bで、Aのアラート指標の値を選択します。例では最新の値を取得します。
5. C で、アラート指標値のアラートトリガー条件を設定します。例では、値が1024未満の場合にアラートがトリガーされます。
6. Preview をクリックしてアラート結果をプレビューします。アラート通知設定を入力し、保存をクリックします。
Grafanaのよくある質問
Grafanaのグラフでタイムアウトエラーが発生した場合の対処方法は?
[dataproxy]
timeout = 60
dialTimeout = 60
keep_alive_seconds = 60
Grafanaでさらに多くの可視化グラフをインストールする方法は?
さらに多くの可視化チャート(円グラフ、トレンドサマリーチャートなど)をインストールする必要がある場合は、対応するコマンドを実行してGrafana プラグインをインストールしてください。 例えば、円グラフ(pie panel)をインストールする必要がある場合は、以下のコマンドを実行できます:
grafana-cli plugins install grafana-piechart-panel
service grafana-server restart
Grafanaでリージョンとログトピックの変数を設定する方法は?
Grafanaで地域変数とログトピック変数を設定し、グラフで参照します。ダッシュボードグラフの地域とログトピックを置き換えることができます。設定手順は以下の通りです:
1. Grafanaのダッシュボード設定-Variablesメニューに入り、新建 Variablesを選択します。先に地域変数を設定し、次にログトピック変数を設定します。
2. Variables typeでQueryを選択します。
3. Query optionsでDataSourceからTencent CLS Datasourceプラグインを選択します。
4. QueryサービスタイプでTencentCloud APIを選択します。クエリステートメントは以下の通りです:
地域変数:
ServiceType=region&Action=DescribeRegions&payload={"Product":"cls"}
ログトピック変数:
Region=${region}&ServiceType=cls&Action=DescribeTopics&field=Topics&id=TopicId&name=TopicName
ログトピック変数(トピック名に基づいてログトピックをフィルタリングします。フィルタリングはあいまい一致です):
Region=${region}&ServiceType=cls&Action=DescribeTopics&field=Topics&id=TopicId&name=TopicName&payload={"Filters":[{"Key":"topicName","Values":["your topic name"]}]}
5. 設定が完了したら、保存をクリックします。
Grafanaで変数を使用してログデータをフィルタリングする方法は?
Grafanaで変数を設定し、グラフのクエリステートメントに挿入します。異なる変数値を選択することで、グラフデータのフィルタリングを実現します。ここでは、ユーザーIPフィルターの設定を例に説明します:
1. Grafanaのダッシュボード設定-Variablesメニューに入り、新建 Variablesを選択します。
2. Variables typeでQueryを選択します。
3. Query optionsでDataSourceからTencent CLS Datasourceプラグインを選択します。
4. QueryサービスタイプでCLSを選択します。クエリステートメントは以下の通りです(remote_addrを例とします。実際に使用する場合は対象フィールドに置き換えてください):
* | select remote_addr group by remote_addr limit 1000
5. (オプション)Selection optionsで複数選択とすべて選択をチェックします。すべて選択のデフォルト値は*と入力します。
6. ステートメントに変数${IP:raw}を挿入すると、設定は完了です(ここで:rawは変数のサフィックスであり、変数形式をraw形式として指定し、特殊文字のエスケープを防ぎます)。
Grafanaの時系列グラフで「Data is missing a time field」と表示された場合の対処方法は?
解決方法:
1. Transformのタブページに切り替え、Convert field typeを追加します。
2. Convert field typeを設定します。FieldでSQL内の時間フィールドを選択し、asをTimeタイプにします。
その他のテンプレート変数設定