Datadog
監視プラットフォーム
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