Datadog

監視プラットフォーム可観測性インフラ監視APMログ管理セキュリティ監視クラウド監視

監視プラットフォーム

Datadog

概要

Datadogは包括的な可観測性プラットフォームで、メトリクス、ログ、トレースを統合し、インフラストラクチャ監視、APM(Application Performance Monitoring)、セキュリティ監視を一元化するエンタープライズ向けのスケーラブルなソリューションです。

詳細

Datadogは企業向け可観測性プラットフォームのリーダーとして、豊富な統合機能、先進的なダッシュボード、強力なアラート機能を提供しています。

主要機能

  • 統合監視: インフラ、アプリケーション、ログ、セキュリティを統一プラットフォームで監視
  • 600以上の統合: AWS、Azure、GCP、Kubernetes、Docker等の主要技術との豊富な統合
  • リアルタイムダッシュボード: カスタマイズ可能なダッシュボードと可視化
  • 高度なアラート: インテリジェントなアラート集約とノイズ削減
  • 分散トレーシング: マイクロサービス環境での詳細なパフォーマンス分析
  • ログ管理: 高速検索とリアルタイム分析
  • セキュリティ監視: クラウドセキュリティポスチャ管理(CSPM)

技術的特徴

  • スケーラビリティ: エンタープライズ規模のデータ処理に対応
  • API豊富: 監視設定、データ取得、自動化のための包括的API
  • 機械学習: 異常検知とアラートノイズ削減
  • データストリーム監視: Kafka、Kinesis等のストリーミングデータの可視化

メリット・デメリット

メリット

  • 統合性の高い一元化された監視プラットフォーム
  • 豊富な統合とカスタマイズ可能なダッシュボード
  • エンタープライズレベルのスケーラビリティと信頼性
  • 強力なAPI群と自動化機能
  • クラウドネイティブアーキテクチャに最適化
  • 24/7のサポート体制

デメリット

  • 複雑な価格体系で予想外のコスト増加リスク
  • 多機能すぎて初期設定の学習コストが高い
  • 小規模プロジェクトには過剰な機能
  • データ保持期間が限定的
  • ベンダーロックインのリスク

参考ページ

設定・監視例

基本セットアップ

# datadog-agent 設定例
init_config:
instances:
  - host: localhost
    port: 5432
    username: datadog
    password: YOUR_PASSWORD

logs:
  - type: file
    path: /var/log/application.log
    source: myapp
    service: production

メトリクス収集

# Python での Datadog メトリクス送信
from datadog import DogStatsDClient

statsd = DogStatsDClient(host="localhost", port=8125)

# カウンター
statsd.increment('web.page_views', tags=["page:home"])

# ゲージ
statsd.gauge('database.connections', 20, tags=["db:primary"])

# ヒストグラム
statsd.histogram('api.response_time', 142.3, tags=["endpoint:/users"])

アラート設定

{
  "name": "High CPU Usage Alert",
  "type": "metric alert",
  "query": "avg(last_5m):avg:system.cpu.user{*} > 80",
  "message": "CPU usage is high on {{host.name}}",
  "options": {
    "thresholds": {
      "critical": 80,
      "warning": 65
    },
    "notify_audit": false,
    "notify_no_data": true,
    "no_data_timeframe": 10
  }
}

ダッシュボード作成

// Datadog API でダッシュボード作成
const dashboard = {
  title: 'Application Performance Dashboard',
  widgets: [
    {
      definition: {
        type: 'timeseries',
        requests: [
          {
            q: 'avg:myapp.response_time{*}',
            display_type: 'line'
          }
        ],
        title: 'Response Time'
      }
    },
    {
      definition: {
        type: 'query_value',
        requests: [
          {
            q: 'sum:myapp.errors{*}',
            aggregator: 'sum'
          }
        ],
        title: 'Total Errors'
      }
    }
  ]
};

ログ分析

# ログパイプライン設定例
logs:
  - type: file
    path: /var/log/nginx/access.log
    source: nginx
    service: web-server
    tags:
      - env:production
      - team:backend
    
  # JSON ログの場合
  - type: file
    path: /var/log/app/application.json
    source: application
    service: myapp
    log_processing_rules:
      - type: multi_line
        name: json_logs
        pattern: ^\{

インテグレーション設定

# PostgreSQL インテグレーション例
init_config:
instances:
  - host: localhost
    port: 5432
    username: datadog
    password: YOUR_PASSWORD
    dbname: production
    tags:
      - env:prod
      - team:backend
      
# カスタムメトリクス設定
custom_queries:
  - metric_prefix: postgresql.custom
    query: |
      SELECT 'user_count' as metric_name,
             count(*) as value
      FROM users
      WHERE created_at > NOW() - INTERVAL '1 hour'
    columns:
      - name: metric_name
        type: tag
      - name: value
        type: gauge