Thanos
Thanosは、Prometheusとシームレスに統合してアプリケーションをモニターするコンポーネントのグループです。ThanosコンポーネントをVerrazzanoで有効化および構成し、長期ストレージを使用してメトリックを格納できます。Thanos Queryコンソールを使用すると、すべてのPrometheusインスタンスおよび長期ストレージ全体のメトリックを問い合せることができます。Thanosはまた、Prometheusを水平方向に拡張し、複数のPrometheusサーバーからデータのグローバル・ビューを取得することを容易にします。
Thanosを使用する利点:
- 長期的なメトリックの保持
- 高可用性
- メトリックの簡単なバックアップ
- 効率的なデータ・アクセス
Thanosの詳細は、ThanosのWebサイトを参照してください。
Thanosコンポーネント
Verrazzanoは現在、次のThanosコンポーネントをサポートしています:
コンポーネント | 説明 |
---|---|
Compactor | 長期ストレージを定期的にスキャンし、問合せ効率向上に必要な場合に圧縮を実行します。 |
Ruler | 指定されたThanos Queryインスタンスで、ルールおよびアラートの評価を行います。 |
Sidecar | Prometheusポッドに存在するコンテナ。Prometheusに接続し、問合せのためにデータを読み取り、長期ストレージにアップロードします。 |
Store Gateway | 長期ストレージからメトリックを提供します。 |
Query | Prometheus APIを実装して、基礎となるコンポーネントからデータを集約し、すべてのPrometheusストアにわたって問合せを実行するためのユーザー・インタフェースを提供します。 |
Query Frontend | Prometheus APIを実装し、レスポンスをキャッシュし、オプションで問合せを分割しながら、そのAPIをQueryにプロキシします。 |
Verrazzanoは、Helmチャートを使用してこれらのThanosコンポーネントをインストールします。Verrazzanoカスタム・リソースで指定されたHelmオーバーライドを使用して、インストール構成をカスタマイズできます。
Thanosの有効化
VerrazzanoでThanosを有効にするには、次を追加します:
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
name: example-verrazzano
spec:
components:
prometheusOperator:
enabled: true
overrides:
- values:
prometheus:
thanos:
integration: sidecar
thanos:
enabled: true
QueryおよびQuery Frontendは、デフォルトで有効になっている唯一のThanosコンポーネントです。
OCIオブジェクト・ストレージを使用した長期ストレージの有効化
オプションで、メトリックの長期ストレージにOCIオブジェクト・ストレージを使用するようにThanosを構成できます。
この動作を有効にするには、次のステップを実行します:
ステップ1: YAML構成ファイルの作成
storage.yaml
という名前のローカル・ファイルを作成します。これは、OCIオブジェクト・ストレージ・バケット名、それがOCIテナンシ内で配置されるリージョンとコンパートメント、およびアクセス時にThanosが使用する有効な資格証明のセットを識別します。
type: OCI
config:
provider: "raw"
bucket: "thanos"
compartment_ocid: "ocid1.compartment.oc1....."
region: "us-ashburn-1"
tenancy_ocid: "ocid1.tenancy.oc1....."
user_ocid: "ocid1.user.oc1....."
fingerprint: "12:d3:4c:..."
privatekey: |
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Thanosオブジェクト・ストレージのOCIプロバイダは、API署名キー、インスタンス・プリンシパルおよびOKEワークロード・アイデンティティ認証をサポートしています。ThanosでのOCIオブジェクト・ストレージの構成の詳細は、「Oracle Cloud Infrastructure Object Storage」を参照してください。
ステップ2: シークレットの作成
ステップ1で作成したstorage.yaml
ファイルを使用して、オブジェクト・ストレージ構成のシークレットを作成します。
Thanos Store Gatewayでは、シークレット内のキーがobjstore.yml
である必要があります。
$ kubectl create namespace verrazzano-monitoring
$ kubectl create secret generic objstore-config -n verrazzano-monitoring --from-file=objstore.yml=storage.yaml
ステップ3: ストレージ、Thanos Store GatewayおよびCompactorの有効化
次の例では、ストレージを有効にし、必要なシークレットを作成して、Verrazzanoカスタム・リソースでThanos Store GatewayとCompactorを有効にします。また、Thanos Sidecarがオブジェクト・ストレージに書き込むように構成し、Store Gatewayがオブジェクト・ストレージから読み取るように構成します。さらに、同じオブジェクト・ストレージで圧縮を実行するよう、Thanos Compactorを構成します。
ノート: objstore-config
は、ステップ2で作成したシークレットです。
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
name: example-verrazzano
spec:
components:
prometheusOperator:
enabled: true
overrides:
- values:
prometheus:
thanos:
integration: sidecar
prometheusSpec:
thanos:
objectStorageConfig:
name: objstore-config
key: objstore.yml
thanos:
enabled: true
overrides:
- values:
existingObjstoreSecret: objstore-config
storegateway:
enabled: true
compactor:
enabled: true
Thanos Rulerによるアラート
次の例では、VerrazzanoリソースでThanos RulerとAlertmanagerを有効にする方法を示します。また、アラートをAlertmanagerに送信するよう、Thanos Rulerが構成されます。
ノート: Thanos Rulerが機能するには、ストレージの有効化の説明に従ってストレージを構成し、Alertmanagerも有効にする必要があります。
この構成では、PrometheusからはAlertmanagerにアラートが送信されず、Thanos Rulerから送信されます。
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
name: example-verrazzano
spec:
components:
prometheusOperator:
enabled: true
overrides:
- values:
alertmanager:
enabled: true
thanos:
enabled: true
overrides:
- values:
existingObjstoreSecret: objstore-config
ruler:
enabled: true
Verrazzanoではデフォルトで、複数のアラート・ルールが構成され、Thanos Rulerコンソールで確認できます。独自のPrometheusRulesを作成して、追加のアラートを構成できます。詳細は、「Alertmanager」を参照してください。
Thanosコンソールへのアクセス
Thanos QueryおよびRulerのコンソールへは、「コンソールURLの取得」の手順を使用してアクセスできます。