MetricsTraitカスタム・リソース定義

MetricsTraitカスタム・リソースには、アプリケーション・コンポーネントのメトリックの有効化に必要な構成情報が含まれています。MetricsTraitを使用して構成されたコンポーネント・ワークロードは、特定のPrometheusデプロイメントによってスクレイピングされたメトリックをエンドポイントを介して送信するように設定されます。MetricsTraitを指定するサンプルApplicationConfigurationを次に示します。MetricsTraitを示すサンプル・アプリケーションをデプロイするには、Hello World Helidonを参照してください。

ApplicationConfigurationでMetricsTraitが指定されていない場合、デフォルトのMetricsTraitがワークロード・タイプに適した値で生成されます。

apiVersion: core.oam.dev/v1alpha2
kind: ApplicationConfiguration
metadata:
  name: hello-helidon-appconf
  namespace: hello-helidon
  annotations:
    version: v1.0.0
    description: "Hello Helidon application"
spec:
  components:
    - componentName: hello-helidon-component
      traits:
        - trait:
            apiVersion: oam.verrazzano.io/v1alpha1
            kind: MetricsTrait
            spec:
                scraper: verrazzano-system/vmi-system-prometheus-0
        - trait:
            apiVersion: oam.verrazzano.io/v1alpha1
            kind: IngressTrait
            metadata:
              name: hello-helidon-ingress
            spec:
              rules:
                - paths:
                    - path: "/greet"
                      pathType: Prefix

サンプル構成では、hello-helidon-componentアプリケーション・コンポーネントにMetricsTraitが指定されています。

サンプル・アプリケーション構成が正常にデプロイされると、アプリケーション・コンポーネントからメトリックを問い合せることができます。

$ HOST=$(kubectl get ingress \
     -n verrazzano-system vmi-system-prometheus \
     -o jsonpath={.spec.rules[0].host})
$ echo $HOST

prometheus.vmi.system.default.<ip>.nip.io

$ VZPASS=$(kubectl get secret \
     --namespace verrazzano-system verrazzano \
     -o jsonpath={.data.password} | base64 \
     --decode; echo)
$ curl -sk \
    --user verrazzano:${VZPASS} \
    -X GET https://${HOST}/api/v1/query?query=vendor_requests_count_total

{"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"vendor_requests_count_total","app":"hello-helidon","app_oam_dev_component":"hello-helidon-component","app_oam_dev_name":"hello-helidon-appconf","app_oam_dev_resourceType":"WORKLOAD","app_oam_dev_revision":"hello-helidon-component-v1","containerizedworkload_oam_crossplane_io":"496df78f-ef8b-4753-97fd-d9218d2f38f1","job":"hello-helidon-appconf_default_helidon-logging_hello-helidon-component","namespace":"helidon-logging","pod_name":"hello-helidon-workload-b7d9d95d8-ht7gb","pod_template_hash":"b7d9d95d8"},"value":[1616535232.487,"4800"]}]}}

MetricsTrait

フィールド 説明 必須
apiVersion 文字列 oam.verrazzano.io/v1alpha1 はい
kind 文字列 MetricsTrait はい
metadata ObjectMeta メタデータのフィールドについては、Kubernetes APIのドキュメントを参照してください。 いいえ
spec MetricsTraitSpec メトリック・トレイトの希望の状態。 はい

MetricsTraitSpec

MetricsTraitSpecは、メトリック・トレイトの希望の状態を指定します。

フィールド 説明 必須
port 整数 関連メトリック・エンドポイントのHTTPポート。デフォルトは8080です。 いいえ
path 文字列 関連メトリック・エンドポイントのHTTPパス。デフォルトは/metricsです。 いいえ
secret 文字列 メトリック・エンドポイント・アクセス用のワークロードのネームスペース内の不透明なシークレット(ユーザー名やパスワードなど)の名前。 いいえ
scraper 文字列 関連するメトリック・エンドポイントをスクレイピングするために使用されるPrometheusデプロイメント。デフォルトはverrazzano-system/vmi-system-prometheus-0です。 いいえ