Skip to content

Commit

Permalink
Added OpenTelemetry
Browse files Browse the repository at this point in the history
  • Loading branch information
pnvnd committed Apr 17, 2022
1 parent 8b72834 commit c5bec3e
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 5 deletions.
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
ll_env
__pycache__/
*.sqlite3
venv
2 changes: 1 addition & 1 deletion Procfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
web: newrelic-admin run-program gunicorn learning_log.wsgi --log-file -
web: gunicorn learning_log.wsgi --log-file -
Binary file modified db.sqlite3
Binary file not shown.
5 changes: 4 additions & 1 deletion learning_log/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
SECRET_KEY = 'u8&o=tuwmu%9lq=&!!4wxncyxdr3q$*&xs5hpjtxvy+v4%#n*+'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
DEBUG = False

ALLOWED_HOSTS = []

Expand Down Expand Up @@ -138,3 +138,6 @@
DEBUG = True
elif os.environ.get('DEBUG') == 'FALSE':
DEBUG = False

# New Settings
DEFAULT_AUTO_FIELD='django.db.models.AutoField'
43 changes: 43 additions & 0 deletions learning_logs/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,49 @@
from .models import Topic, Entry
from .forms import TopicForm, EntryForm

# OpenTelemetry Settings Imports
from opentelemetry.instrumentation.django import DjangoInstrumentor
from opentelemetry.instrumentation.requests import RequestsInstrumentor
from opentelemetry.instrumentation.urllib3 import URLLib3Instrumentor
from opentelemetry.instrumentation.logging import LoggingInstrumentor

from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor

import logging
from opentelemetry.exporter.otlp.proto.grpc._log_exporter import OTLPLogExporter
from opentelemetry.sdk._logs import LogEmitterProvider
from opentelemetry.sdk._logs import set_log_emitter_provider
from opentelemetry.sdk._logs import OTLPHandler
from opentelemetry.sdk._logs.export import BatchLogProcessor

from opentelemetry.sdk.resources import Resource

# OpenTelemetry Settings
import uuid
serviceId = str(uuid.uuid1())

trace.set_tracer_provider(TracerProvider(resource=Resource.create({"service.name": "python-django.local", "service.instance.id": serviceId, "environment": "local"})))
trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))

log_emitter_provider = LogEmitterProvider(resource=Resource.create({"service.name": "python-django.local", "service.instance.id": serviceId, "environment": "local"}))
set_log_emitter_provider(log_emitter_provider)

exporter = OTLPLogExporter(insecure=True)
log_emitter_provider.add_log_processor(BatchLogProcessor(exporter))
log_emitter = log_emitter_provider.get_log_emitter(__name__, "0.1")
handler = OTLPHandler(level=logging.INFO, log_emitter=log_emitter)

# Attach OTLP handler to root logger
logging.getLogger().addHandler(handler)

DjangoInstrumentor().instrument()
RequestsInstrumentor().instrument()
URLLib3Instrumentor().instrument()
LoggingInstrumentor().instrument()

# Create your views here.

def check_topic_owner(owner, request):
Expand Down
Binary file modified requirements.txt
Binary file not shown.
2 changes: 1 addition & 1 deletion runtime.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
python-3.10.2
python-3.10.3

0 comments on commit c5bec3e

Please sign in to comment.