Compare commits

...

12 Commits

Author SHA1 Message Date
paveenpaul 272df7fffc Merge pull request 'added telemetry' (#9) from dev/logger-implementation into main
Reviewed-on: #9
2025-06-03 11:40:07 +00:00
Ubuntu 2122d6d496 added telemetry 2025-06-03 11:39:13 +00:00
paveenpaul 14df25e9fe Merge pull request 'changed the service name' (#8) from dev/logger-implementation into main
Reviewed-on: #8
2025-06-03 11:35:37 +00:00
Ubuntu 61d558e3da changed the service name 2025-06-03 11:35:00 +00:00
paveenpaul 5f1c02c3aa Merge pull request 'Add new telemetry app' (#7) from dev/logger-implementation into main
Reviewed-on: #7
2025-06-03 11:33:13 +00:00
Ubuntu defdc88d5c Add new telemetry app 2025-06-03 11:31:41 +00:00
paveenpaul d698166fcb Merge pull request 'custom runsesrver manual file log removal' (#6) from dev/logger-implementation into main
Reviewed-on: #6
2025-06-03 11:27:36 +00:00
Ubuntu bdefe4e2d8 custom runsesrver manual file log removal 2025-06-03 11:24:11 +00:00
paveenpaul a38fa230f2 Merge pull request 'removed openai==1.12.0 from the requirement' (#5) from dev/in-progress into main
Reviewed-on: #5
2025-05-24 07:52:42 +00:00
paveenpaul 291ce5a356 Merge pull request 'some pravesh conversion changes' (#4) from dev/in-progress into main
Reviewed-on: #4
2025-05-23 12:19:18 +00:00
paveenpaul 9b19a8415a Merge pull request 'clockchain changes' (#3) from dev/in-progress into main
Reviewed-on: #3
2025-05-23 12:14:47 +00:00
paveenpaul af37676cc2 Merge pull request 'lpp_task_folder' (#2) from dev/in-progress into main
Reviewed-on: #2
2025-05-23 11:20:14 +00:00
16 changed files with 123 additions and 1 deletions

View File

@ -5,7 +5,7 @@ org_id = "org-ynvY79L4IdQHUXRlK8QZN1IU"
SECRET_KEY = 'django-insecure-l+u)264k9gmd1l9*fh9vcu6#y_oi9k%n3c533&b^7&j%&#!gr1'
DEBUG = 1
ALLOWED_HOSTS=127.0.0.1,1.6.141.108,1.6.141.104,taj.mynextfilm.in,52.66.163.18
INSTALLED_APPS=django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,django.contrib.sites,django_crontab,allauth,allauth.account,allauth.socialaccount,allauth.socialaccount.providers.google,users,mnfapp,auto_email,lpp,centralizePayment,centralisedFileSystem,scriptAudit,conversion,juggernaut,payment,institutional,storages,Blockchain2
INSTALLED_APPS=django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,django.contrib.sites,django_crontab,allauth,allauth.account,allauth.socialaccount,allauth.socialaccount.providers.google,users,mnfapp,auto_email,lpp,centralizePayment,centralisedFileSystem,scriptAudit,conversion,juggernaut,payment,institutional,storages,Blockchain2,telemetry
ENGINE='django.db.backends.postgresql_psycopg2'
DB_NAME='MNF_AWS'

View File

@ -22,6 +22,8 @@ from io import BytesIO
from auto_email.views import sendmail
from lpp.certificate.createCertificate import certificateGenrate
from scriptAudit.utils import update_audit_status
from Blockchain2.models import MNFServersFile
from django.core.files import File as File2
# from django.conf import settings
basePath = BasePath()
@ -299,12 +301,14 @@ def lpp_audit(msg):
print("blockchain script conversion 3", uploaded_script, translated_scripttt)
with open(uploaded_script, 'rb') as f:
hash = uploadDataToIPFSNode(f)
savefiles(f, uploaded_script, obj.translation_id,"original_scriptFile_hash")
scriptconversion["original_scriptFile_hash"] = hash
scriptconversion["original_scriptFile_path"] = uploaded_script
scriptconversion["date_at"] = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("blockchain script conversion 4")
with open(translated_scripttt, 'rb') as f1:
hash = uploadDataToIPFSNode(f1)
savefiles(f1, translated_scripttt, obj.translation_id,"translated_scriptFile_hash")
scriptconversion["translated_scriptFile_hash"] = hash
scriptconversion["translated_scriptFile_path"] = translated_scripttt
print("blockchain script conversion 5")
@ -339,6 +343,7 @@ def lpp_audit(msg):
# script_size = file_to_audit_docx.file.size
with open(script_path1, 'rb') as _file:
hash2 = uploadDataToIPFSNode(_file)
savefiles(_file, script_path1, obj.translation_id,"script-json")
print(f"hash2 is ---> {hash2}")
script_json["script_file_path"] = script_path1
script_json["script_file"] = hash2
@ -514,3 +519,13 @@ class Command(BaseCommand):
break
print("Completed All Execution")
def savefiles(file, path, script_id,File_type):
filename = os.path.basename(path)
django_file = File2(file)
files, _ = MNFServersFile.objects.get_or_create(
project_id= script_id,
file_type=File_type,
)
files.public_file.save(filename, django_file)

View File

@ -0,0 +1 @@
#default_app_config = "telemetry.apps.TelemetryConfig"

View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

View File

@ -0,0 +1,78 @@
from django.apps import AppConfig
import os
import logging
import multiprocessing
from uuid import uuid4
from opentelemetry import trace, metrics
from opentelemetry._logs import set_logger_provider
from opentelemetry.sdk.resources import Resource, SERVICE_INSTANCE_ID
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.grpc._log_exporter import OTLPLogExporter
from opentelemetry.instrumentation.django import DjangoInstrumentor
class TelemetryConfig(AppConfig):
name = "telemetry"
def ready(self):
# Resource Definition
resource = Resource.create({
"service.name": "production-kitchen",
SERVICE_INSTANCE_ID: str(uuid4()),
"worker": os.getpid(), # os.getpid() works outside Gunicorn too
})
endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT", "http://129.159.229.69:4317")
# TRACE SETUP
if not isinstance(trace.get_tracer_provider(), TracerProvider):
tracer_provider = TracerProvider(resource=resource)
span_exporter = OTLPSpanExporter(endpoint=endpoint)
tracer_provider.add_span_processor(BatchSpanProcessor(span_exporter))
trace.set_tracer_provider(tracer_provider)
# METRIC SETUP
if not isinstance(metrics.get_meter_provider(), MeterProvider):
metric_reader = PeriodicExportingMetricReader(OTLPMetricExporter(endpoint=endpoint))
meter_provider = MeterProvider(resource=resource, metric_readers=[metric_reader])
metrics.set_meter_provider(meter_provider)
# LOGGING SETUP
# 1. Create and set the logger provider FIRST
logger_provider = LoggerProvider(resource=resource)
set_logger_provider(logger_provider) # MUST be set before using LoggingHandler
# 2. Add processor and exporter
log_exporter = OTLPLogExporter(endpoint=endpoint)
logger_provider.add_log_record_processor(BatchLogRecordProcessor(log_exporter))
# 3. Now safely create the handler (uses global logger provider)
otel_handler = LoggingHandler(level=logging.INFO)
# 4. Attach to Django and root loggers
logging.getLogger("django").addHandler(otel_handler)
logging.getLogger("django").setLevel(logging.INFO)
logging.getLogger().addHandler(otel_handler)
logging.getLogger().setLevel(logging.INFO)
from opentelemetry.instrumentation.django import DjangoInstrumentor
DjangoInstrumentor().instrument()
import sys
from .utils import PrintLogger # assuming PrintLogger is defined in telemetry/utils.py
# Redirect print() and errors to logger so they appear in SigNoz
sys.stdout = PrintLogger(logging.INFO)
sys.stderr = PrintLogger(logging.ERROR)

View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,16 @@
import logging
import sys
class PrintLogger:
def __init__(self, level=logging.INFO):
self.logger = logging.getLogger("stdout_redirect")
self.level = level
self.terminal = sys.__stdout__ # Save original stdout
def write(self, message):
message = message.strip()
if message: # avoid empty lines
self.logger.log(self.level, message)
self.terminal.write(message + '\n') # Echo to terminal
def flush(self):
self.terminal.flush()

View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.