From c5bec3e375be863114feafb3f9be467552a03748 Mon Sep 17 00:00:00 2001 From: pnvnd Date: Sun, 17 Apr 2022 14:37:35 -0400 Subject: [PATCH] Added OpenTelemetry --- .gitignore | 2 -- Procfile | 2 +- db.sqlite3 | Bin 147456 -> 155648 bytes learning_log/settings.py | 5 ++++- learning_logs/views.py | 43 +++++++++++++++++++++++++++++++++++++++ requirements.txt | Bin 219 -> 2396 bytes runtime.txt | 2 +- 7 files changed, 49 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index b74e9e2..fceec94 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ -ll_env __pycache__/ -*.sqlite3 venv \ No newline at end of file diff --git a/Procfile b/Procfile index b68bbef..62ae87f 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: newrelic-admin run-program gunicorn learning_log.wsgi --log-file - \ No newline at end of file +web: gunicorn learning_log.wsgi --log-file - \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index e9aeba44c0e6cd4ddf65cf8725a36a9cf72a95d8..4432a1f1794e6b541b2484f9430b842e3876b899 100644 GIT binary patch delta 3617 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 delta 1061 zcmah{U1(cn7(U-QOPZeMoVPz2sdcXD$jVBW?Ny?hSlxyoryv5FZ-9@e670-+&yt1ayVHSs;NzT5MZ zq6>o^@WA^}gd1=fjBo+kYvLYVZ8zDp3JpORQ1nGU6;FrxXmTMHPNd^x^@6DzDXT@( z$&(MT&I6&xH>D7OlECj1<0C6t3#m%ewk*ss||%G%;w_J67&Py}5j7`uV7=oqup%sM%X z(ZX6;)*j*W^JSK)dagaOtik`^0w0W}9g`t0n4enGvt>u#SGLcFo-NPiUH;i%)EhBJ zrm|xb#o2@-H+?=>E-eO3rnEJ1$O7Z!%ud#3v@QJ41XK?Ew|=_4}f(~9^>t- z+fii2&79;(Af~PD(g53{?d?Uc_DRPDq(!9EaTaw+UIBf0G`5h<<-;jHDV)$1`D|pK z&z|C>V=;6|y3ZqB<8}^&nrlR`aGGl8^?8woVcb(64$!JqJ(oNNcS zVH3W9d+-^o$r-PMw00AX$dGjm{(|4(SNI8jkU?L;LwEq|GNcaD`bWsxO;TzM*5D%e zKu3Q=zePK!Hdu8BXZ8|u60j}vmIw=md}IbVXb^*1uguO>)80^Ut4)Ci;Z)QE~x xdiCX+_^7Rcj^QGXmMUVdv3DG&5v_pj$3D0Boyz2UAZ?p)Lrt6lNf^Pe`~&sVE!O}5 diff --git a/learning_log/settings.py b/learning_log/settings.py index 4144120..bd757e2 100644 --- a/learning_log/settings.py +++ b/learning_log/settings.py @@ -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 = [] @@ -138,3 +138,6 @@ DEBUG = True elif os.environ.get('DEBUG') == 'FALSE': DEBUG = False + +# New Settings +DEFAULT_AUTO_FIELD='django.db.models.AutoField' \ No newline at end of file diff --git a/learning_logs/views.py b/learning_logs/views.py index 4c4600b..c84d408 100644 --- a/learning_logs/views.py +++ b/learning_logs/views.py @@ -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): diff --git a/requirements.txt b/requirements.txt index 95b5ad31f4802279b3036cdb404c69c7b0e92c24..8da212cb99fdff33159d2e1302755b1e4558c495 100644 GIT binary patch literal 2396 zcmb`JYj4_M42Au9(tZk6N$EB|^jrVO6d*t#kd(`~{P=C>vGWq9RjrUvL@%-59_(44NBe4D4Es*jT0RrEXR`J6JXq!)Bl(PNDUWH3fUU3d z31cMe-1fpL<*~O)n6-X4HgLqj1+njlWBG4d@3M{gsAwJTkJfK4+>Ou*dG~BB)Qzq5 zu2Q74qmU7dVbgCJkL6dnZ|>gsV28)RkzaMT5muqha$y&3?vXV}PwqESoJvnZK)XPg z*g}jZemXZaf@M!xZ?611onPgjD}$MMfd-f0L=`|w)}GL6J-fCt`9;UfGYt*@Juz2o zYPeMVYp&r-%vzBvd4X06xu?u)sk740wf;j5V%D;OfD+I4%~`^5CVQhZr96^-&}I?# zy>LoL-RLiTvbHLzPw23<7+^!m&=@wLkSL9{=c6VMk#`4%7jzJ7G5$p6J@U zXm~4rDYkJ-_s$mXbS8=-(diTO!i1XU}h0Tqh=^?`G z?&!>lH{GtnD-n0(o~p;(V6KgHFYc}TL99{cR@`nX+}g8S_0iJfbyNNG-eiU{-|28> zNldA={nGn*N5|i;e(a`7cyl4|bTi*mqS2k@UQN|W>=~v%+Xr8EOw1-GOsC68J<;ve zn0S$Aqmw7)z~q?ed_oxtDJEYdI~6ChWM%UZDWaTYIkz@8Wb9^a@AV_r%qLyU&aJSI zemZKU$M#C!5}0r+`6Nrs&iDqAY-!i0ZA~6K zX~0I}&i)jaqux+!n02*|ZxC#TICEBQs8s9{RKM2d|GN}>o&1N6a8MtVZ6v<=(04Eo Th0>-tNM$xcR3|iyy$y@Mqse{; literal 219 zcmXYrL5{;P3FdN^3S~y)!?;R8_p@kUf6&h=Ehgd(m<#_i{8>AhGeY-@<1WEXW#(g= F1U?vwQM~{F diff --git a/runtime.txt b/runtime.txt index 85ac14f..a18669d 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -python-3.10.2 \ No newline at end of file +python-3.10.3 \ No newline at end of file