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