Skip to content

Commit

Permalink
add datadog config
Browse files Browse the repository at this point in the history
  • Loading branch information
jsatt committed Aug 25, 2020
1 parent a92e313 commit 97a7978
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,15 @@ DEBUG=True

#CELERY_BROKER_URL=redis://127.0.0.1:6370/2
#CELERY_RESULT_BACKEND=redis://127.0.0.1:6370/3
#DD_ENV=development
#DD_SERVICE=
#DD_TAGS=
#DD_AGENT_SERVICE_HOST=dd-agent
#DD_AGENT_SERVICE_PORT=8126
#DD_STATSD_SERVICE_PORT=8125
#DD_LOGS_INJECTION=True
#DD_VERSION=
#LOG_FORMAT=
#LOG_FORMATTER=plain
#LOG_LEVEL=DEBUG
#USE_DATADOG=True
3 changes: 3 additions & 0 deletions base_app/celery.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import os

from celery import Celery, signals
from ddtrace import patch_all
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'base_app.settings')
if settings.USE_DATADOG and sys.argv[0].endswith('celery'): # pragma: no cover
patch_all()
app = Celery('base_app')
app.config_from_object(settings, namespace='CELERY')
app.autodiscover_tasks()
Expand Down
49 changes: 49 additions & 0 deletions base_app/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import environ
import structlog
from ddtrace import tracer as dd_tracer

from utils.environment import Env

Expand All @@ -11,6 +12,7 @@

BASE_URL = env.str('BASE_URL', default='localhost')
TESTING = env.bool('TESTING', default=False)
USE_DATADOG = env.bool('USE_DATADOG', default=False)

#########
# DJANGO SETTINGS
Expand Down Expand Up @@ -181,6 +183,53 @@
cache_logger_on_first_use=True,
)

#########
# DATADOG
#########
if USE_DATADOG:
import datadog
from ddtrace import config as dd_config

datadog_service = env.str('DD_SERVICE', default='base_app')
datadog_environment = env.str('DD_ENV', default='development')
datadog_version = env.str('DD_VERSION', default='')
datadog_agent_hostname = env.str('DD_AGENT_SERVICE_HOST', default='localhost')
datadog_agent_port = env.str('DD_AGENT_SERVICE_PORT', default='8125')
datadog_statsd_port = env.str('DD_STATSD_SERVICE_PORT', default='8126')
datadog_tags = env.list('DD_TAGS', default=[])

dd_tracer.configure(
enabled=True,
hostname=datadog_agent_hostname,
port=datadog_agent_port,
)
dd_tracer.set_tags({
'env': datadog_environment,
'version': datadog_version,
**dict(t.split(':') for t in datadog_tags),
})
dd_config.analytics_enabled = True
dd_config.health_metrics_enabled = True
dd_config.celery['analytics_enabled'] = True
dd_config.celery['distributed_tracing'] = True
dd_config.celery['producer_service_name'] = f'{datadog_service}-celery-queue'
dd_config.celery['worker_service_name'] = f'{datadog_service}-celery'
dd_config.django['analytics_enabled'] = True
dd_config.django['cache_service_name'] = f'{datadog_service}-cache'
dd_config.django['database_service_name_prefix'] = f'{datadog_service}-'
dd_config.django['service_name'] = datadog_service
dd_config.postgres['analytics_enabled'] = True
dd_config.requests['analytics_enabled'] = True

datadog.initialize(
statsd_host=datadog_agent_hostname,
statsd_port=datadog_statsd_port,
statsd_namespace=datadog_service,
statsd_constant_tags=datadog_tags,
)
else:
dd_tracer.configure(enabled=False)

#########
# REST FRAMEWORK
#########
Expand Down
4 changes: 4 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ psycopg2-binary
redis
uvicorn

# tracking
datadog
ddtrace

# tests, linting, code quality
bandit
django-stubs
Expand Down
6 changes: 6 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ django_settings_module = base_app.settings
[mypy-celery.*]
ignore_missing_imports = true

[mypy-datadog.*]
ignore_missing_imports = true

[mypy-ddtrace.*]
ignore_missing_imports = true

[mypy-django.core.asgi]
ignore_missing_imports = true

Expand Down

0 comments on commit 97a7978

Please sign in to comment.