django - 如何在 django Rest Framework 和 docker 中设置 prometheus

标签 django docker django-rest-framework prometheus grafana

我想使用 prometheus、django Rest Framework 和 docker 监控我的数据库,

都是我本地机器,错误如下:

enter image description here

错误是 url http://127.0.0.1:9000/metricshttp://127.0.0.1:9000是乞求我的API,我不知道问题是什么,我的配置如下

我的要求.txt

  • django-prometheus

我的文件docker:docker-compose-monitoring.yml

version: '2'
services:
    prometheus:
        image: prom/prometheus:v2.14.0
        volumes:
           - ./prometheus/:/etc/prometheus/
        command:
           - '--config.file=/etc/prometheus/prometheus.yml'
        ports:
           - 9090:9090
    grafana:
        image: grafana/grafana:6.5.2
        ports:
           - 3060:3060

我的文件夹和文件 prometheus/prometheus.yml

global:
   scrape_interval: 15s
rule_files:
scrape_configs:
- job_name: prometheus
  static_configs:
      - targets:
          - 127.0.0.1:9090
- job_name: monitoring_api
  static_configs:
      - targets:
          - 127.0.0.1:9000

我的文件settings.py

INSTALLED_APPS=[
    ...........
    'django_prometheus',]

MIDDLEWARE:[
    'django_prometheus.middleware.PrometheusBeforeMiddleware',
    ......
    'django_prometheus.middleware.PrometheusAfterMiddleware']

我的模型.py

from django_promethues.models import ExportMOdelOperationMixin

class MyModel(ExportMOdelOperationMixin('mymodel'), models.Model):
     """all my fields in here"""

我的 urls.py

url('', include('django_prometheus.urls')),

应用程序在 127.0.0.1:9090/metrics 中运行良好,但只是监视相同的 url,而我需要监视不同的 url,我认为问题不在于配置,除了文件 prometheus.yml 中,因为我不知道如何调用我的表或我的api,请帮助我。

再见。

最佳答案

您需要更改 prometheus 的配置并在 docker-compose 中添加 python 镜像,如下所示:

  1. prometheus 配置(prometheus.yaml):
global:
  scrape_interval: 15s # when Prometheus is pulling data from exporters etc
  evaluation_interval: 30s # time between each evaluation of Prometheus' alerting rules

scrape_configs:
  - job_name: django_project   # your project name
    metrics_path: /metrics
    static_configs:
      - targets:
        - web:8000

  • prometheus 和 django 的 docker-compose 文件,还可以包含 grafana 镜像,我已经在本地安装了 grafana:
  • 
    version: '3.7'
    
    services:
    web:
      build:
      context: .  # context represent path of your dockerfile(dockerfile present in the root dir)
    command: sh -c "python3 manage.py migrate &&
            gunicorn webapp.route.wsgi:application --pythonpath webapp --bind 0.0.0.0:8000"
    volumes:
      - .:/app
    
    ports:
      - "8000:8000"
    
    prometheus:
      image: prom/prometheus
      ports:
        - "9090:9090"
      volumes:
        - ./prometheus.yml:/etc/prometheus/prometheus.yml #prometheus.yaml present in the root dir
    
    

  • Dockerfile:
  • FROM python:3.8
    
    COPY ./webapp/django /app
    COPY ./requirements.txt /app/requirements.txt
    WORKDIR /app
    RUN pip3 install -r requirements.txt*strong text*
    
  • 对于 django 中的 prometheus 设置: https://pypi.org/project/django-prometheus/

  • 点击 django 应用程序 API。
  • 点击 localhost:8000/metrics api。
  • 点击 localhost:9090/并从下拉列表中搜索所需的指标,然后单击“执行”,它将在控制台中生成结果并创建图表
  • 要在 grafana 中显示图表,请点击 localhost:3000 并创建新的仪表板。
  • 关于django - 如何在 django Rest Framework 和 docker 中设置 prometheus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62461363/

    相关文章:

    python - Django 休息框架唯一一起错误消息不再显示

    python - 带有来自 validated_data 的 kwargs 的 Django Rest Framework update()

    django - 拒绝在 django 3.0 和 chrome 中显示 iframe 或嵌入标签

    python - 如何扩展 Django Group 模型?

    python - django-filter order_by "Cannot resolve keyword ' 名称'进入字段“

    Docker-compose:仅在第一个容器中安装卷

    python - 检查 python 中的 Json 数据是否为 ​​none

    python - django 存储 - 配置不正确 : Could not load amazon's s3 bindings

    docker - 在不旋转容器的情况下挤压 docker 镜像

    docker - Docker是否包含Heardbleed漏洞?