Thanos

Thanosを使用したメトリック・データへのアクセスおよび格納

Thanosは、Prometheusとシームレスに統合してアプリケーションをモニターするコンポーネントのグループです。ThanosコンポーネントをVerrazzanoで有効化および構成し、長期ストレージを使用してメトリックを格納できます。Thanosコンソールを使用すると、すべてのPrometheusインスタンスおよび長期ストレージにわたってメトリックを問い合せることができます。Thanosはまた、Prometheusを水平方向に拡張し、複数のPrometheusサーバーからデータのグローバル・ビューを取得することを容易にします。

Thanosを使用する利点:

  • 長期的なメトリックの保持
  • 高可用性
  • メトリックの簡単なバックアップ
  • 効率的なデータ・アクセス

Thanosの詳細は、ThanosのWebサイトを参照してください。

Thanosコンポーネント

Verrazzanoは現在、次のThanosコンポーネントをサポートしています:

コンポーネント 説明
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

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の有効化

次の例では、ストレージを有効にし、必要なシークレットを作成し、Verrazzanoカスタム・リソースでThanos Store Gatewayを有効にします。また、Thanos Sidecarがオブジェクト・ストレージに書き込むように構成し、Store Gatewayがオブジェクト・ストレージから読み取るように構成します。

ノート: 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

Thanos Queryコンソールへのアクセス

「コンソールURLの取得」の手順を使用して、Thanos Queryコンソールにアクセスできます。