4.2. ストレージの場所

StorageLocation は、データが reporting-operator によって保存される場所を設定するカスタムリソースです。これには、Prometheus から収集されるデータと Report カスタムリソースを生成して生成される結果が含まれます。

複数の S3 バケットや S3 と HDFS の両方などの複数の場所にデータを保存する必要がある場合や、メータリングによって作成されていない Hive/Presto のデータベースにアクセスする必要がある場合は、StorageLocation を設定する必要があります。ほとんどのユーザーの場合、この設定は不要であり、必要なすべてのストレージコンポーネントを設定するには、メータリングの設定についてのドキュメントを参照するだけで十分です。

4.2.1. StorageLocation の例

この最初の例は、組み込みローカルストレージオプションを示しています。これは Hive を使用するよう設定されており、デフォルトで、データは Hive がストレージ (HDFS、S3、または ReadWriteMany PVC) を使用するように設定される場合には常に保存されます。

ローカルストレージの例

apiVersion: metering.openshift.io/v1
kind: StorageLocation
metadata:
  name: hive
  labels:
    operator-metering: "true"
spec:
  hive: 1
    databaseName: metering 2
    unmanagedDatabase: false 3

1
hive セクションが存在する場合、Hive サーバーを使用してテーブルを作成し、StorageLocation はデータを Presto に保管するように設定されます。DatabaseName および unmanagedDatabase のみは必須フィールドです。
2
Hive 内のデータベースの名前。
3
true の場合、この StorageLocation は能動的に管理されず、databaseName がすでに Hive に存在することが予想されます。false の場合、reporting-operator はデータベースを Hive に作成します。

以下の例では、ストレージに AWS S3 バケットを使用します。使用するパスを作成する際に、プレフィックスがバケット名に追加されます。

リモートストレージの例

apiVersion: metering.openshift.io/v1
kind: StorageLocation
metadata:
  name: example-s3-storage
  labels:
    operator-metering: "true"
spec:
  hive:
    databaseName: example_s3_storage
    unmanagedDatabase: false
    location: "s3a://bucket-name/path/within/bucket" 1

1
(オプション) データベースに使用する Presto および Hive のファイルシステムの URL。これには、hdfs:// または s3a:// ファイルシステム URL を使用できます。

hive セクションに指定できるいくつかの追加のオプションフィールドがあります。

  • (オプション) defaultTableProperties: Hive を使用してテーブルを作成する設定オプションが含まれます。
  • (オプション) fileFormat:ファイルシステムにファイルを保存するために使用するファイル形式です。オプションの一覧や詳細については、File Storage Format の Hive ドキュメント を参照してください。
  • (オプション) rowFormat: Hive row フォーマット を制御します。これは、Hive が行をシリアライズ/デシリアライズする方法を制御します。詳細は、「 Hive Documentation on Row Formats and SerDe」 を参照してください。

4.2.2. デフォルトの StorageLocation

アノテーションの storagelocation.metering.openshift.io/is-default が存在し、StorageLocation リソースで true に設定されている場合、そのリソースはデフォルトのストレージリソースになります。StorageLocation が指定されていないストレージ設定オプションを持つすべてのコンポーネントはデフォルトのストレージリソースを使用します。デフォルトのストレージリソースは 1 つのみです。アノテーションを持つ複数のリソースが存在する場合、Operator がデフォルトを判別できないためエラーがログに記録されます。

デフォルトのストレージの例

apiVersion: metering.openshift.io/v1
kind: StorageLocation
metadata:
  name: example-s3-storage
  labels:
    operator-metering: "true"
  annotations:
    storagelocation.metering.openshift.io/is-default: "true"
spec:
  hive:
    databaseName: example_s3_storage
    unmanagedDatabase: false
    location: "s3a://bucket-name/path/within/bucket"