Nov 12, 2024
pip install django-prometheusINSTALLED_APPS = [...'django_prometheus',...]MIDDLEWARE = ['django_prometheus.middleware.PrometheusBeforeMiddleware',# All your other middlewares go here, including the default# middlewares like SessionMiddleware, CommonMiddleware,# CsrfViewmiddleware, SecurityMiddleware, etc.'django_prometheus.middleware.PrometheusAfterMiddleware',]
urlpatterns = [...path('', include('django_prometheus.urls')),]
DATABASES = {'default': {'ENGINE': 'django_prometheus.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),},}
CACHES = {'default': {'BACKEND': 'django_prometheus.cache.backends.filebased.FileBasedCache','LOCATION': '/var/tmp/django_cache',},}
class Dog(models.Model):name = models.CharField(max_length=100, unique=True)breed = models.CharField(max_length=100, blank=True, null=True)age = models.PositiveIntegerField(blank=True, null=True)
from django_prometheus.models import ExportModelOperationsMixinclass Dog(ExportModelOperationsMixin('dog'), models.Model):name = models.CharField(max_length=100, unique=True)breed = models.CharField(max_length=100, blank=True, null=True)age = models.PositiveIntegerField(blank=True, null=True)
loki:image: grafana/loki:2.9.2ports:- "3100:3100"command: -config.file=/etc/loki/local-config.yamlnetworks:- lokipromtail:image: grafana/promtail:2.9.2volumes:- /var/log:/var/log- /var/run/docker.sock:/var/run/docker.sock- ./promtail/config/promtail-config.yml:/etc/promtail/config.ymlcommand: -config.file=/etc/promtail/config.ymlnetworks:- loki
server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://loki:3100/loki/api/v1/pushscrape_configs:- job_name: systemstatic_configs:- targets:- localhostlabels:job: varlogs__path__: /var/log/*log- job_name: dockerdocker_sd_configs:- host: unix:///var/run/docker.sockrelabel_configs:- source_labels: [__meta_docker_container_name]target_label: container- source_labels:[__meta_docker_container_label_com_docker_compose_service]target_label: service- source_labels:[__meta_docker_container_label_com_docker_compose_project]target_label: compose_project- source_labels: [__meta_docker_container_label_com_docker_compose_oneoff]target_label: compose_oneoff- source_labels:[__meta_docker_container_label_com_docker_compose_config_hash]target_label: compose_config_hash- source_labels:[__meta_docker_container_label_com_docker_compose_version]target_label: compose_version
grafana:environment:- GF_PATHS_PROVISIONING=/etc/grafana/provisioningentrypoint:- sh- -euc- |mkdir -p /etc/grafana/provisioning/datasourcescat <<EOF > /etc/grafana/provisioning/datasources/ds.yamlapiVersion: 1datasources:- name: Lokitype: lokiaccess: proxyorgId: 1url: http://loki:3100basicAuth: falseisDefault: trueversion: 1editable: false- name: Prometheustype: prometheusaccess: proxyorgId: 1url: http://prometheus:9090basicAuth: falseisDefault: falseversion: 1editable: falseEOF/run.shimage: grafana/grafana:latestvolumes:- grafana_data:/var/lib/grafanaports:- "3060:3000"networks:- lokiprometheus:image: prom/prometheus:latestports:- "9090:9090"entrypoint:- sh- -c- |/bin/prometheus --config.file=/etc/prometheus/prometheus/config/prometheus.yml --web.enable-lifecyclevolumes:- ./prometheus/config/prometheus.yml:/etc/prometheus/prometheus/config/prometheus.yml- prometheus_data:/prometheusnetworks:- loki
global:scrape_interval: 15sscrape_timeout: 10sscrape_protocols:- OpenMetricsText1.0.0- OpenMetricsText0.0.1- PrometheusText0.0.4evaluation_interval: 15sruntime:gogc: 75scrape_configs:- job_name: prometheushonor_timestamps: truetrack_timestamps_staleness: falsescrape_interval: 15sscrape_timeout: 10sscrape_protocols:- OpenMetricsText1.0.0- OpenMetricsText0.0.1- PrometheusText0.0.4metrics_path: /metricsscheme: httpenable_compression: truefollow_redirects: trueenable_http2: truestatic_configs:- targets:- <YOUR IP>:8000
networks:loki:volumes:grafana_data:prometheus_data: