EventStore の概要

Note

Service Fabric バージョン 6.4 の時点で、 EventStore API は現在、Azure 上で実行されている Windows クラスターでに対してのみ使用できます。 この機能を Linux およびスタンドアロン クラスターに移植する作業を進めています。

概要

バージョン 6.2 で導入された EventStore サービスは、Service Fabric の監視オプションです。 EventStore では、任意の時点でのクラスターまたはワークロードの状態を理解する手段が提供されます。 EventStore は、クラスターからのイベントを保持するステートフルな Service Fabric サービスです。 イベントは、Service Fabric Explorer や REST API を介して公開されます。 EventStore では、クラスターに対してクエリが直接行われて、クラスター内の任意のエンティティについて診断データが取得されます。EventStore は、以下に役立てるために使用します。

  • 開発またはテストにおける問題の診断や、監視パイプラインを使用できる場所の診断
  • クラスターに対して行っている管理アクションが、正しく処理されていることの確認
  • Service Fabric が特定のエンティティと対話している方法の "スナップショット" の取得

[ノード] ペインの [イベント] タブに NodeDown イベントなどのいくつかのイベントが表示さているスクリーンショット。

EventStore で使用できるイベントの完全な一覧を確認するには、「Service Fabric イベント」を参照してください。

Note

Service Fabric バージョン 6.4 の時点で、 EventStore API と UX は、Azure Windows クラスターに対して一般公開されています。 この機能を Linux およびスタンドアロン クラスターに移植する作業を進めています。

EventStore サービスでは、クラスター内のエンティティとエンティティ型のそれぞれで使用できるイベントのクエリを実行できます。 これは、以下のレベルでイベントのクエリを実行できることを意味します。

  • クラスター: クラスター自体に固有のイベント (クラスターのアップグレードなど)
  • ノード: ノード レベルのすべてのイベント
  • ノード: nodeName によって示される 1 つのノードに固有のイベント
  • アプリケーション: アプリケーション レベルのすべてのイベント
  • アプリケーション: applicationId によって示される 1 つのアプリケーションに固有のイベント
  • サービス: クラスター内のすべてのサービスのイベント
  • サービス: serviceId によって示される特定のサービスのイベント
  • パーティション: すべてのパーティションのイベント
  • パーティション: partitionId によって示される特定のパーティションのイベント
  • パーティション レプリカ: partitionId によって示される特定のパーティション内のすべてのレプリカ/インスタンスからのイベント
  • パーティション レプリカ: replicaId および partitionId によって示される特定のレプリカ/インスタンスのイベント

API について詳しくは、EventStore API のリファレンスに関するページをご覧ください。

EventStore サービスは、クラスター内のイベントを関連付ける機能も備えています。 EventStore サービスは、相互に影響を与えた可能性がある異なるエンティティから同時に書き込まれたイベントを調べてそれらのイベントをリンクし、クラスター内で発生したアクティビティの原因の識別に役立てることができます。 たとえば、いずれかのアプリケーションが、誘発された変更を伴わず正常に動作しなくなった場合、EventStore で、プラットフォームによって公開されている他のイベントも調べて、これを Error または Warning イベントと関連付けることができます。 これは、より迅速な障害の検出と根本原因の分析に役立ちます。

クラスターで EventStore を有効にする

ローカル クラスター

自分のクラスターの fabricSettings.json で、アドオン機能として EventStoreService を追加し、クラスターのアップグレードを実行します。

    "addOnFeatures": [
        "EventStoreService"
    ],

Azure クラスター バージョン 6.5 以降

Azure クラスターをバージョン 6.5 以降にアップグレードした場合、EventStore はクラスター上で自動的に有効になります。 オプトアウトするには、ご利用のクラスター テンプレートを次の手順で更新する必要があります。

  • 2019-03-01 以降の API バージョンを使用する
  • クラスター内の [プロパティ] セクションに次のコードを追加する
      "fabricSettings": [
        …
      ],
      "eventStoreServiceEnabled": false
    

Azure クラスター バージョン 6.4

バージョン 6.4 を使用している場合、Azure Resource Manager テンプレートを編集して、EventStore サービスを有効にすることができます。 これを行うには、クラスター構成のアップグレードを実行して次のコードを追加します。また、PlacementConstraints を使用して EventStore サービスのレプリカを特定の NodeType (システム サービス専用の NodeType など) に置くことができます。 upgradeDescription セクションで、ノードでの再起動をトリガーする構成のアップグレードを構成します。 別の更新ではそのセクションを削除できます。

    "fabricSettings": [
          …
          …
          …,
         {
            "name": "EventStoreService",
            "parameters": [
              {
                "name": "TargetReplicaSetSize",
                "value": "3"
              },
              {
                "name": "MinReplicaSetSize",
                "value": "1"
              },
              {
                "name": "PlacementConstraints",
                "value": "(NodeType==<node_type_name_here>)"
              }
            ]
          }
        ],
        "upgradeDescription": {
          "forceRestart": true,
          "upgradeReplicaSetCheckTimeout": "10675199.02:48:05.4775807",
          "healthCheckWaitDuration": "00:01:00",
          "healthCheckStableDuration": "00:01:00",
          "healthCheckRetryTimeout": "00:5:00",
          "upgradeTimeout": "1:00:00",
          "upgradeDomainTimeout": "00:10:00",
          "healthPolicy": {
            "maxPercentUnhealthyNodes": 100,
            "maxPercentUnhealthyApplications": 100
          },
          "deltaHealthPolicy": {
            "maxPercentDeltaUnhealthyNodes": 0,
            "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0,
            "maxPercentDeltaUnhealthyApplications": 0
          }
        }

次のステップ