レポート機能
Babel Licensing は、ライセンス対象のアプリケーションに関する重要な情報を収集、分析、監視するための包括的なレポートフレームワークを備えています。自動化されたレポート機能によって、アプリケーションの健全性、ライセンスの使用パターン、セキュリティイベント、独自のビジネス指標を把握できます。
レポート機能が重要な理由
レポート機能は、ソフトウェアが本番環境でどのように使われているかを把握するうえで欠かせません。
- 問題の予防的な解決:アプリケーションのクラッシュを、ユーザー体験に影響する前に特定して対処します
- ライセンスコンプライアンス:機能の使用状況を監視し、ライセンスが意図したとおりに使われていることを検証します
- セキュリティ監視:潜在的なセキュリティ上の脅威や不正アクセスの試みを検出して対応します
- 使用状況の分析:機能開発とライセンス戦略について、データに基づいて判断します
- カスタマーサポート:詳細な診断情報を参照して、顧客の問題をすばやく解決します
レポートの種類
Babel Licensing には 3 種類のレポートがあり、それぞれ特定の監視と分析のニーズに合わせて設計されています。
例外レポート
例外レポートは、アプリケーションのクラッシュとエラーに関する詳細な情報を取得し、バグを効率よく再現して修正するために必要なコンテキストを提供します。
主な機能:
- 完全なスタックトレースを含む例外の自動取得
- 環境情報(読み込まれたアセンブリ、プロセス、環境変数)
- システム情報(ハードウェア、OS、ネットワーク構成)
- 追加のコンテキストを伝えるカスタムプロパティ
- レポートサイズを抑えるための、設定可能なデータ収集
一般的なユースケース:
- 本番環境でのクラッシュの監視と分析
- バグの再現とデバッグ
- 品質保証とテスト
- カスタマーサポートでの診断
ライセンス使用状況レポート
ライセンス使用状況レポートは、アプリケーション内でライセンスの構成要素がどのようにアクセスされ、使用されているかを詳しく示します。
主な機能:
- 機能、フィールド、制限へのアクセスの自動追跡
- 使用状況の統計(アクセス回数、タイムスタンプ、期間)
- ライセンスのメタデータと検証の状態
- 履歴分析のための、サーバー側でのスマートマージ
- 設定可能な追跡範囲
一般的なユースケース:
- 機能の採用状況の分析
- ライセンスコンプライアンスの監視
- 使われていない機能の特定
- 使用パターンの追跡
- データに基づくライセンス戦略
カスタムレポート
カスタムレポートを使うと、アプリケーション固有のニーズに合わせた任意の構造化データを Babel Licensing Service に送信できます。
主な機能:
- 基底クラス
Reportを使った柔軟なレポート構造 - 任意のカスタムプロパティとデータのサポート
- 環境情報とシステム情報の組み込み
- 機密データのためのレポートの暗号化
- 送信前のイベントによるカスタマイズ
一般的なユースケース:
- セキュリティイベントの報告(ハッキングの検出、侵入の試み)
- アプリケーションのパフォーマンス指標
- ビジネスイベントの追跡
- 独自の診断データ
- 監査証跡の作成
レポート機能の仕組み
Babel Licensing のレポートシステムは、シンプルで強力なワークフローに従います。
- 追跡を有効にする(ライセンス使用状況レポートの場合):ライセンスを検証する前に、使用状況の追跡を有効にします
- アプリケーションを使用する:通常どおりアプリケーションを使用すると、データが自動的に収集されます
- レポートを作成する:送信するデータを含むレポートのインスタンスを作成します
- カスタマイズする:イベントを通じて、カスタムプロパティを追加したり、レポートの内容を変更したりします
- レポートを送信する:レポートを Babel Licensing Service に送信します
- 分析する:サービスの API または管理インターフェイスで、レポートを表示して分析します
レポート機能のアーキテクチャ
レポートフレームワークは、いくつかの主要なコンポーネントで構成されています。
クライアント側のコンポーネント
- レポートクラス:例外レポート、ライセンス使用状況レポート、カスタムレポートの基底クラス
- BabelReporting サービス:レポートをサーバーに送信するためのクライアントライブラリ
- 使用状況の追跡:ライセンスの構成要素へのアクセスの自動監視
- データコレクター:環境情報とシステム情報のための専用コレクター
サーバー側の処理
- レポートの検証:レポートの形式が正しく、認可されていることを確認します
- 復号:暗号化されたレポートの内容を処理します
- レポートの解析:インデックス作成と検索のためにプロパティを抽出します
- スマートマージ:ライセンス使用状況レポートを結合し、包括的な履歴分析を可能にします
- Webhook 連携:外部システムと連携するためのイベントを送出します
構成とカスタマイズ
すべての種類のレポートは幅広い構成に対応しており、データの充実度と、プライバシーおよびパフォーマンスとのバランスを取れます。
データ収集のオプション
レポートに含める情報を細かく制御します。
reporting.Configuration.ExceptionReportOptions = new ExceptionReportOptions
{
CollectApplicationInformation = true,
CollectEnvironmentVariables = false, // Privacy-sensitive
CollectSystemInformation = true,
CollectProcessorInformation = true,
CollectMemoryInformation = true
};レポートの暗号化
送信中の機密データを保護します。
reporting.Configuration.EncryptionKey = "your-secret-key";カスタムプロパティ
任意のレポートに、アプリケーション固有のコンテキストを追加します。
reporting.BeforeSendReport += (s, e) =>
{
e.Report.Properties.Add("environment", "production");
e.Report.Properties.Add("deployment_id", deploymentId);
e.Report.Properties.Add("user_tier", "enterprise");
};エラー処理
レポートの送信に失敗した場合に、適切に対処します。
reporting.AfterSendReport += (s, e) =>
{
if (e.Error != null)
{
Logger.Error($"Failed to send report: {e.Error.Message}");
StoreForRetry(e.Report);
}
};レポート機能の利用開始
レポートサービスを初期化する
using Babel.Licensing.Services;
var reporting = new BabelReporting();
reporting.Configuration.ServiceUrl = "https://licensing.example.com";
reporting.Configuration.ClientId = "MyApplication v1.0";例外レポートを送信する
try
{
// Your application code
}
catch (Exception ex)
{
await reporting.SendExceptionReportAsync(userKey, ex);
}ライセンスの追跡を有効にする
using Babel.Licensing.Reports;
// Enable before validation
LicenseUsageTracking.Enable();
// Validate license
var license = licenseManager.Validate(userKey, keyType);
// Use licensed features (automatically tracked)
var data = license.Features["Reporting"].Data;
// Send tracking report
await reporting.SendLicenseReportAsync(userKey);カスタムレポートを作成する
public class SecurityEventReport : Report
{
public string EventType { get; set; }
public string Severity { get; set; }
public SecurityEventReport() : base("SecurityEvent") { }
public override void Build()
{
Properties.Add("event_type", EventType);
Properties.Add("severity", Severity);
base.Build();
}
}
// Send custom report
var report = new SecurityEventReport
{
EventType = "UnauthorizedAccess",
Severity = "High"
};
await reporting.SendAsync(userKey, report);ベストプラクティス
データ収集を最小限にする
レポートサイズを抑え、プライバシーを保護するために、実際に必要なデータだけを収集します。
reporting.Configuration.ExceptionReportOptions = new ExceptionReportOptions
{
CollectSystemInformation = true, // Essential
CollectDisplayInformation = false, // Usually not needed
CollectProcessInformation = false // Privacy-sensitive
};レポートを定期的に送信する
ライセンス使用状況レポートは、継続的にではなく、一定の間隔で送信します。
var timer = new Timer(async _ =>
{
await reporting.SendLicenseReportAsync(userKey);
LicenseUsageTracking.Clear(); // Reset for next period
}, null, TimeSpan.FromHours(24), TimeSpan.FromHours(24));オフラインの状況に対応する
サーバーに到達できないときは、レポートをローカルに保存します。
var result = await reporting.SendLicenseReportAsync(userKey);
if (!result.Success)
{
SaveReportForLater(result.Report);
}機密データをサニタイズする
パスワード、API キー、個人を特定できる情報は、決して含めないでください。
reporting.BeforeSendReport += (s, e) =>
{
// Remove or hash sensitive data
e.Report.Properties["username"] = HashUsername(username);
// Don't include passwords, credit cards, etc.
};機密性の高いレポートに暗号化を使用する
機密情報を含むレポートでは、暗号化を有効にします。
reporting.Configuration.EncryptionKey = Configuration["Reporting:EncryptionKey"];レポートの分析と監視
レポートが Babel Licensing Service に届いたら、次のことができます。
- レポートのクエリ:サービスの API でレポートを検索し、絞り込みます
- 詳細の表示:レポートの完全な内容とメタデータを確認します
- 傾向の追跡:クラッシュ率、使用パターン、セキュリティイベントの変化を監視します
- データのエクスポート:外部ツールで分析するためにレポートデータを取り出します
- アラートの設定:重大なイベントを外部システムに通知する Webhook を設定します
ライセンスモードとの連携
レポート機能は、Babel Licensing のすべてのライセンスモードでそのまま利用できます。
- ライセンスファイル:ライセンスのデータをレポートの認可に使用します
- ライセンスアクティベーション:アクティベーションに基づくライセンスを追跡します
- フローティングライセンス:同時使用のパターンを監視します
アクティベーションまたはフローティングライセンスのワークフローで生成されたユーザーキーは、レポートを送信するための認可の資格情報として機能します。
パフォーマンスに関する考慮事項
レポートシステムは、パフォーマンスへの影響が最小限になるように設計されています。
- 非同期処理:レポートの送信はすべてノンブロッキングです
- 設定可能な収集:負荷が高く、必要のないコレクターは無効にできます
- 効率的な追跡:使用状況の追跡はオブザーバーパターンを使用し、オーバーヘッドは最小限です
- スマートキャッシュ:環境とシステムのデータはキャッシュされ、繰り返し収集されることはありません
- 圧縮:レポートは送信時に圧縮されます
このセクションのページ
このセクションでは、レポートの種類ごとに詳しく説明しています。
- 例外レポート:クラッシュとエラーのレポートに関する包括的なガイド
- ライセンス使用状況レポート:ライセンスの使用状況の追跡に関する完全なドキュメント
- カスタムレポート:カスタムレポートの種類の作成と送信
各ページには、アプリケーションに効果的なレポート機能を実装するのに役立つ、実用的な例、構成オプション、ベストプラクティス、実際のユースケースが含まれています。