はじめに
Fabric データパイプラインの監視方法について紹介します
基本
Microsoft Fabric でパイプラインを使用してデータを取り込む のチュートリアルを例に説明します。
実行結果の確認
パイプラインを実行すると、出力タブにて各アクティビティの実行結果が確認できます。
実行中:
実行後:
制御フロー系のアクティビティでは、単純な出力結果が json で確認できます。
データのコピーなどのデータ処理系アクティビティでは、処理のパフォーマンス情報にアクセスできます。
また、ノートブック呼び出しなどは、その時実行されたノートブックのスナップショットにアクセス可能です。
スケジュールと実行履歴
スケジュール設定では、毎日何時、毎週何曜日、毎月何日、などの実行タイミングの設定が可能です。
また、実行履歴からはそのパイプラインの過去の実行を確認できます。
監視ハブ
監視ハブでは、14日間のパイプラインその他のジョブすべての実行結果が確認可能です。
パイプラインの実行をクリックすると、上述の実行履歴と同様に当時の実行結果が確認できます。
エラー通知方法について
では、エラー通知について記載します。
パイプラインアクティビティによる通知
通知系のアクティビティを使用してメッセージを作成して送信が可能です。
Outlook アクティビティ
エラー分岐から Office 365 Outlook アクティビティを追加します。
サインインして、メール送信先と内容を決定します。
この時、動的なコンテンツ(システム変数などの情報)を使用して、URLの記載などが可能です。
参考:Microsoft Fabric データパイプラインのエラー通知機能に監視ハブURLなどの情報を記載する
失敗の分岐によりメール通知のアクティビティが実行されると、サインインしたアカウントによりメールが自動送信されます。
Teams アクティビティ
エラー分岐から Teams アクティビティを追加します。
サインインして、投稿先と内容を決定します。
失敗の分岐によりTeamsのアクティビティが実行されると、サインインしたアカウントにより自動投稿されます。
パイプラインアクティビティによるエラー通知の問題点
1. アクティビティをセットアップしたアカウントから送信される
前述でご覧の通り、アクティビティを設定したアカウントから送信されるので、退職後などに問題が発生します。
単純に個人からジョブの通知が送信されるのも気持ち悪いですね。
これについては、専用のアカウントを作成すればよいかもしれませんが、Officeのライセンスが必要となってしまいます。
2. エラー通知はすべての検出したいアクティビティから個別で接続が必要
エラー通知の分岐にたどり着く前にエラーが発生すると、通知されません。
発想的には、以下のような設定が考えられますが、実はこれは動作しません。接続されたアクティビティがAND条件で判定されてしまい、すべてエラーのときにTeamsアクテビティが実行される、というような状況になってしまいます。
なので、以下のようにアクテビティごとに設定が必要となってしまいます。
対処方法トリガー専用のパイプラインを作成する
この問題に対処するために、メイン処理の呼び出しとエラー通知、スケジュール設定のみを行うトリガー専用のパイプラインを構成することが考えられます。
対象方法すべての処理を完了でスルーし、エラーカウントによる判定で最後のエラー通知を制御する
またはメインパイプライン上の処理をすべて完了で進行するようにしていき、If分岐などでエラーカウントを設定することも考えられます※実装は面倒すぎるので割愛
新しい Fabric Job イベントを利用した通知
Fabric Real-Time Hubの新しいイベントカテゴリーの発表 にて、監視ハブで確認できるジョブについてリアルタイム監視ができるようになりました。
これからの推奨方法はこちらになるかと考えられます。
リアルタイムハブによる Fabric job イベントデータ取得
リアルタイムハブ は、 ストリームデータ(Kafka トピックなどのストリームデータソース、データベース CDC ,Fabric イベントなど )を取得するためのカタログです。
リアルタイムハブにアクセスすると、現在アクセス可能なストリームデータソースや、ストリームデータソースに接続するためのウィザードにアクセスできます。
今回の発表で、Fabric ジョブイベント と、OneLake イベントが対象のソースとして追加されました。
ジョブイベントの詳細
OneLake イベントの詳細
アクティベーターによるエラー通知のセットアップ
どうも手順か機能自体に問題がありそうなので追って修正します。
Fabric ジョブイベントを使用して、エラー通知を構成してみます。
リアルタイムハブから、ジョブイベントのアラート設定にアクセスします。
ソースとなるイベントを設定します。
対象イベントは4つありますが、一旦すべて取得でいいと思います。
現在のところ、ワークスペースで発生するジョブ全体を取得できず、指定したアイテムでのジョブイベントが取得可能です。
フィルタ設定はここではやめておきます。
設定を確認したら保存します。
対象のイベントが発生するたびにアクションとしてメール通知されるようにしましょう。
また、この設定が定義されるアイテムである、 アクティベーター の名前と保存先を決めてやります。
作成すると、アクティベーターアイテムとアクティベーターに接続されたストリームデータソースが表示されます。
アクティベーターを開くと、先ほど定義したルールが設定されていることがわかります。まだ条件設定をしていないので一旦停止しておきます。
取得したイベントの内容
アラートを設定した対象のイベントをクリックすると以下の情報にアクセスできます。
ライブフィード:
最初は空の状態になるので、パイプラインを実行してイベントを起こしてやると、10分ほど時間経過後にフィードが表示されるようになります。
重要な項目としては 対象のアイテムとジョブの実行IDが入った Type ,invokeType、jobStatus などでしょうか
分析:
イベントがどれだけの数発生しているかが表示されます。
ソースの管理:
リアルタイムハブで行った設定が入っていますね
アラート設定の評価結果
アラート設定に移動すると、作成時に指定した内容が表示されています。
条件内容を変更していくと評価結果に応じて定義での評価結果が変化します。
すべての値ではなく、ここでJobStatus=Failed、invokedType=Scheduledを条件として設定してやることで、スケジュール実行が失敗したときのみの条件となります。
最初の取得でjobFailedのソースとしたイベントで検証時に、重複カウントが発生し、すべての値ではなく条件をつけてやると評価が正しくなるという事象がありました。(想定された動作かは後々確認予定)
アクションの編集をクリックするとメッセージのプレビューが確認できます
メッセージを編集します。
ここでメッセージに監視ハブの検索で使えるjobInstanceIdをコンテキストとして追加しておきましょう。(監視ハブに飛ぶURLでも作ろうと思いましたが、空白が入ってしまい作れませんでした。)
テストアクションを送信してやると、以下のようになります。
アラートの評価が正しいことを確認できたら保存して開始するとパイプラインのエラー通知が有効となります。
なお、アクションはメールのほかにも Teams や、 Power Automate (プレミアムコネクタが必要)が利用できます。
従来のパイプラインアクテビティと比べてまだイマイチな点
- メールメッセージの中に直接リンクなどを埋め込めない
※気づき次第追記予定
制限事項:https://learn.microsoft.com/ja-jp/fabric/real-time-intelligence/data-activator/activator-limitations
補足:ジョブイベントの内容
アクティベーター内では他のイベントを追加することも可能です。
リアルタイムハブのようなものが表示されます。