目次
当社では、Datadogの導入支援から運用サポートまでをトータルでご支援するサービスを提供しています。
初期設計・エージェント展開・モニタリング設定・ダッシュボード構築まで、お客様のニーズに合わせた支援が可能です。
「自社だけでの導入が不安」「もっと効率的に監視環境を整えたい」という方は、ぜひお気軽にご相談ください。
はじめに
社内でDatadogの推進をしていると検証環境のユーザーを作成を依頼されることが多くあります。
「Googleフォームで情報を入力したら、自動でDatadogユーザーが作成される仕組みがあったらいいなあ」と思い、実際に作ってみた話です。
課題設定
現状の問題点:
- 依頼が来るたびに手動でDatadogユーザー作成
- メールアドレスや名前の入力ミス
- ロール設定の統一性がない
- 担当者が技術的な作業をする必要がある
理想の状態:
- Googleフォームに入力するだけで自動でユーザー作成
- 統一されたロール(Datadog Standard Role)を自動付与
- 非エンジニアでも簡単に操作可能
アプローチ検討
最初は「スプレッドシートでユーザー一覧を管理して、削除検知もして...」という複雑なシステムを考えていました。
しかし、要件を整理すると実はシンプルでした:
「フォーム送信 → Datadog API叩く」だけ
過度な設計は不要と判断し、最小限の機能に絞りました。
前提条件
ユーザ作成が可能なAPIKey、ApplicationKeyがあること
実装方法
1. システム構成
Googleフォーム → Google Apps Script → Datadog API
使用技術:
- Googleフォーム: UI
- Google Apps Script: サーバーレス実行環境
- Datadog Users API v2: ユーザー作成
2. Googleフォームの準備
必要なフィールドを作成:
- メールアドレス(必須)
- 名前(必須)
- 役職・部署(任意)
回答先をGoogleスプレッドシートに設定します。
3. Google Apps Scriptの実装
メインのロジック:
function onFormSubmit(e) { const responses = e.values; const name = responses[1]; // 名前 const email = responses[2]; // メールアドレス const role = responses[3]; // 役職 createDatadogUser(email, name, role); } function createDatadogUser(email, name, role) { const API_KEY = PropertiesService.getScriptProperties().getProperty('DATADOG_API_KEY'); const APP_KEY = PropertiesService.getScriptProperties().getProperty('DATADOG_APP_KEY'); const SITE = PropertiesService.getScriptProperties().getProperty('DATADOG_SITE') || 'datadoghq.com'; const STANDARD_ROLE_ID = PropertiesService.getScriptProperties().getProperty('DATADOG_STANDARD_ROLE_ID'); const url = `https://api.${SITE}/api/v2/users`; const payload = { data: { type: 'users', attributes: { email: email, name: name, title: role }, relationships: { roles: { data: [ { type: 'roles', id: STANDARD_ROLE_ID // Datadog Standard Role } ] } } } }; const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'DD-API-KEY': API_KEY, 'DD-APPLICATION-KEY': APP_KEY }, payload: JSON.stringify(payload) }; try { const response = UrlFetchApp.fetch(url, options); const responseCode = response.getResponseCode(); if (responseCode === 201) { const userData = JSON.parse(response.getContentText()); console.log(`✅ User created: ${email} (ID: ${userData.data.id})`); } else { console.error(`❌ Failed: ${responseCode} - ${response.getContentText()}`); } } catch (error) { console.error(`❌ Error: ${error.toString()}`); } }
4. セキュリティ設定
APIキーはスクリプトプロパティで管理:
Google Apps Script → プロジェクトの設定 → スクリプト プロパティ
DATADOG_API_KEY
: DatadogのAPIキーDATADOG_APP_KEY
: DatadogのApplication KeyDATADOG_SITE
:datadoghq.com
DATADOG_STANDARD_ROLE_ID
: Standard RoleのUUID
5. トリガー設定
Google Apps Script → トリガー → 新規作成
- 関数: onFormSubmit
- イベントソース: スプレッドシートから
- イベントタイプ: フォーム送信時
つまずいたポイント
1. 403 Forbidden エラー
原因: APIキーの権限不足
解決策:
- Datadog Admin権限を持つユーザーでApplication Keyを作成
- user_access_invite
権限が必要
2. ロールの指定方法
最初はロール名で指定しようとしましたが、UUIDが必要でした。
間違い:
relationships: { roles: { data: [{ type: 'roles', id: 'Datadog Standard Role' }] // NG } }
正解:
relationships: { roles: { data: [{ type: 'roles', id: '4cde62c4-6e85-11ef-ad41-da7ad0900002' }] // OK } }
ロールUUIDはDatadog UI、またはRoles APIで取得できます。
3. エラーハンドリング
muteHttpExceptions: true
を使って詳細なエラー情報を取得:
const options = { method: 'POST', headers: { /* ... */ }, payload: JSON.stringify(payload), muteHttpExceptions: true // これ重要! };
デバッグ機能の実装
本番運用前に設定をテストする機能も作りました:
function testConfiguration() { // APIキー有効性チェック // Application Key権限チェック // ロールID存在確認 // 詳細ログ出力 }
これで403エラーなどの原因を特定しやすくなりました。
最終的なワークフロー
- 担当者: Googleフォームに情報を入力
- システム: 自動でDatadogユーザー作成(Standard Role付き)
- 依頼者: Datadogから招待メールが届く
- 完了: すぐにDatadogを利用開始
効果と改善点
効果
- 作業時間: 5分 → 30秒(90%削減)
- ミス減少: 手動入力ミスがゼロに
- 標準化: 全員が同じロールで統一
- 自動化: 担当者だけで完結
今後の改善案
- 通知機能: 作成成功・失敗の自動通知
- バッチ処理: 複数ユーザーの一括作成
- ログ管理: 作成履歴の記録
- エラー復旧: 失敗時の自動リトライ
まとめ
「複雑な機能を作ろう」と思いがちですが、要件を整理すると意外とシンプルでした。
Google Apps Scriptの手軽さと、Datadog APIの充実により、わずか50行程度のコードで実用的な自動化が実現できました。
学んだこと:
- 過度な設計より、まずは動くものを作る
- APIキーの権限確認は最初にやる
- エラーハンドリングとデバッグ機能は必須
- セキュリティ(スクリプトプロパティ)は妥協しない
似たような課題を抱えている方の参考になれば幸いです!
関連リンク:
- Datadog Users API Documentation
- Google Apps Script Documentation
お知らせ
当社では、Datadogの導入支援から運用サポートまでをトータルでご支援するサービスを提供しています。
初期設計・エージェント展開・モニタリング設定・ダッシュボード構築まで、お客様のニーズに合わせた支援が可能です。
「自社だけでの導入が不安」「もっと効率的に監視環境を整えたい」という方は、ぜひお気軽にご相談ください。
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。