|
|
@@ -7,12 +7,14 @@
|
|
|
#### 1. Resource Attributes
|
|
|
- **OS情報**: `src/features/opentelemetry/server/custom-resource-attributes/os-resource-attributes.ts`
|
|
|
- OS種別、プラットフォーム、アーキテクチャ、総メモリ量
|
|
|
+ - 起動時に設定
|
|
|
- **アプリケーション固定情報**: `src/features/opentelemetry/server/custom-resource-attributes/application-resource-attributes.ts`
|
|
|
- サービス・デプロイメントタイプ、添付ファイルタイプ、インストール情報
|
|
|
+ - データベース初期化後に設定
|
|
|
|
|
|
-#### 2. Info Metrics
|
|
|
+#### 2. Config Metrics
|
|
|
- **実装場所**: `src/features/opentelemetry/server/custom-metrics/application-metrics.ts`
|
|
|
-- **メトリクス**: `growi.info` (値は常に1、情報はラベルに格納)
|
|
|
+- **メトリクス**: `growi.configs` (値は常に1、情報はラベルに格納)
|
|
|
- **収集情報**: サービスインスタンスID、サイトURL、Wiki種別、外部認証タイプ
|
|
|
|
|
|
#### 3. Custom Metrics
|
|
|
@@ -21,36 +23,40 @@
|
|
|
- `growi.users.total` - 総ユーザー数
|
|
|
- `growi.users.active` - アクティブユーザー数
|
|
|
|
|
|
-### 📋 次のステップ
|
|
|
+#### 4. 統合作業
|
|
|
+- **node-sdk-configuration.ts**: OS情報のResource Attributes統合済み
|
|
|
+- **node-sdk.ts**: データベース初期化後のアプリケーション情報設定統合済み
|
|
|
+- **メトリクス初期化**: Config MetricsとCustom Metricsの初期化統合済み
|
|
|
|
|
|
-#### Resource Attributesの統合
|
|
|
-1. `node-sdk-configuration.ts` でResource Attributesを統合する
|
|
|
-2. 既存のResource設定に新しいAttributesを追加する
|
|
|
+### 📋 実装済みの統合
|
|
|
|
|
|
-```typescript
|
|
|
-// 統合例
|
|
|
-import { getOsResourceAttributes, getApplicationResourceAttributes } from './custom-resource-attributes';
|
|
|
+#### Resource Attributesの2段階設定
|
|
|
|
|
|
+**1段階目 (起動時)**: `generateNodeSDKConfiguration`
|
|
|
+```typescript
|
|
|
+// OS情報のみでResourceを作成
|
|
|
const osAttributes = getOsResourceAttributes();
|
|
|
-const appAttributes = await getApplicationResourceAttributes();
|
|
|
-
|
|
|
resource = resourceFromAttributes({
|
|
|
[ATTR_SERVICE_NAME]: 'growi',
|
|
|
[ATTR_SERVICE_VERSION]: version,
|
|
|
...osAttributes,
|
|
|
- ...appAttributes,
|
|
|
});
|
|
|
```
|
|
|
|
|
|
-#### メトリクス収集の統合
|
|
|
-1. 既存のメトリクス初期化処理にユーザー数メトリクスを追加する
|
|
|
-
|
|
|
+**2段階目 (DB初期化後)**: `setupAdditionalResourceAttributes`
|
|
|
```typescript
|
|
|
-// 統合例
|
|
|
-import { addApplicationMetrics } from './custom-metrics/application-metrics';
|
|
|
-import { addUserCountsMetrics } from './custom-metrics/user-counts-metrics';
|
|
|
+// アプリケーション情報とサービスインスタンスIDを追加
|
|
|
+const appAttributes = await getApplicationResourceAttributes();
|
|
|
+if (serviceInstanceId != null) {
|
|
|
+ appAttributes[ATTR_SERVICE_INSTANCE_ID] = serviceInstanceId;
|
|
|
+}
|
|
|
+const updatedResource = await generateAdditionalResourceAttributes(appAttributes);
|
|
|
+setResource(sdkInstance, updatedResource);
|
|
|
+```
|
|
|
|
|
|
-// メトリクス初期化時に両方を呼び出す
|
|
|
+#### メトリクス収集の統合
|
|
|
+```typescript
|
|
|
+// generateNodeSDKConfiguration内で初期化
|
|
|
addApplicationMetrics();
|
|
|
addUserCountsMetrics();
|
|
|
```
|
|
|
@@ -64,7 +70,7 @@ src/features/opentelemetry/server/
|
|
|
│ ├── os-resource-attributes.ts # OS情報
|
|
|
│ └── application-resource-attributes.ts # アプリケーション情報
|
|
|
├── custom-metrics/
|
|
|
-│ ├── application-metrics.ts # Info Metrics (更新済み)
|
|
|
+│ ├── application-metrics.ts # Config Metrics (更新済み)
|
|
|
│ └── user-counts-metrics.ts # ユーザー数メトリクス (新規)
|
|
|
└── docs/
|
|
|
├── custom-metrics-architecture.md # アーキテクチャ文書
|
|
|
@@ -73,7 +79,9 @@ src/features/opentelemetry/server/
|
|
|
|
|
|
## 設計のポイント
|
|
|
|
|
|
-1. **循環依存の回避**: 動的importを使用してgrowiInfoServiceを読み込み
|
|
|
-2. **エラーハンドリング**: 各メトリクス収集でtry-catchを実装
|
|
|
-3. **型安全性**: Optional chainingを使用してundefinedを適切に処理
|
|
|
-4. **ログ出力**: デバッグ用のログを各段階で出力
|
|
|
+1. **2段階Resource設定**: データベース依存の情報は初期化後に設定して循環依存を回避
|
|
|
+2. **循環依存の回避**: 動的importを使用してgrowiInfoServiceを読み込み
|
|
|
+3. **エラーハンドリング**: 各メトリクス収集でtry-catchを実装
|
|
|
+4. **型安全性**: Optional chainingを使用してundefinedを適切に処理
|
|
|
+5. **ログ出力**: デバッグ用のログを各段階で出力
|
|
|
+6. **起動時間の最適化**: データベース接続を待たずにOpenTelemetryの基本機能を開始
|