このドキュメントでは、ft_transcendenceプロジェクトのDjangoアプリケーションのモニタリングセットアップ方法について説明します。
django-prometheusは、Djangoアプリケーションの監視メトリクスをPrometheusにエクスポートするためのPythonライブラリです。
pip install django-prometheus
settings.py
に以下を追加:
INSTALLED_APPS = [
...
"django_prometheus",
]
MIDDLEWARE = (
["django_prometheus.middleware.PrometheusBeforeMiddleware"]
+ MIDDLEWARE
+ ["django_prometheus.middleware.PrometheusAfterMiddleware"]
)
urls.py
に以下を追加:
urlpatterns = [
...
path("prometheus/", include("django_prometheus.urls")),
]
これにより、/prometheus/metrics
エンドポイントでメトリクスにアクセスできるようになります。
docker-compose.monitoring.yml
ファイルを作成し、以下の内容を追加:
version: "3.8"
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
grafana-data: {}
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--web.console.libraries=/etc/prometheus/console_libraries"
- "--web.console.templates=/etc/prometheus/consoles"
- "--web.enable-lifecycle"
ports:
- 9090:9090
networks:
- monitoring
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
restart: unless-stopped
networks:
- monitoring
prometheus.yml
ファイルを作成し、以下の内容を追加:
global:
scrape_interval: 15s
scrape_configs:
- job_name: "django_app"
metrics_path: "/prometheus/metrics"
static_configs:
- targets: ["host.docker.internal:8080"]
注意: targets
の値は、Djangoアプリケーションの実際のホストとポートに合わせて調整してください。
docker-compose -f docker-compose.monitoring.yml up --build
これにより、以下のサービスが利用可能になります:
- Grafana:
http://localhost:3000
- Prometheus:
http://localhost:9090
- Grafanaにログイン(デフォルトの認証情報: admin/admin)
- 左側のメニューから「Configuration」→「Data sources」を選択
- 「Add data source」をクリック
- Prometheusを選択
- 以下の設定を行う:
- Name: Prometheus
- URL:
http://prometheus:9090
- 「Save & Test」をクリック
- 左側のメニューから「Create」→「Import」を選択
- 「Import via grafana.com」にDjango PrometheusダッシュボードのURLを入力
- 「Load」をクリック
- データソースとしてPrometheusを選択
- 「Import」をクリック
これで、Djangoアプリケーションのメトリクスを表示するダッシュボードが利用可能になります。
- メトリクスが表示されない場合は、Djangoアプリケーションが正しく実行されていること、およびPrometheusの設定が正しいことを確認してください。
- Grafanaでデータソースの接続に失敗する場合は、ネットワーク設定を確認し、PrometheusコンテナがGrafanaコンテナから到達可能であることを確認してください。