24 lines
1.4 KiB
Python
24 lines
1.4 KiB
Python
import uuid
|
|
from datetime import timedelta
|
|
from django.core.management.base import BaseCommand,CommandError
|
|
from django.utils import timezone
|
|
from monitoring.models import Segment,Server,Event
|
|
from monitoring.ingest import ingest
|
|
from monitoring.tasks import evaluate_alarms
|
|
class Command(BaseCommand):
|
|
help='Create isolated, explicitly named demo servers. Never deletes real data.'
|
|
def handle(self,*args,**kwargs):
|
|
seg,_=Segment.objects.get_or_create(name='DEMO · Produktion',defaults={'cidr':'Demo-Netz'})
|
|
for i,name in enumerate(['DEMO-django-01','DEMO-celery-01','DEMO-ai-01']):
|
|
s,created=Server.objects.get_or_create(name=name,defaults={'segment':seg,'address':'Demodaten'})
|
|
if not created: continue
|
|
now=timezone.now();batch=[]
|
|
for h in range(24):
|
|
at=now-timedelta(hours=23-h)
|
|
def event(kind,p):return {'id':uuid.uuid4(),'kind':kind,'occurred_at':at,'payload':p}
|
|
batch.append(event('metric',{'cpu':89 if i==1 else 25+h%15,'ram':52+i*8,'disk':40+i*5,'services':{'django':True}}))
|
|
batch.append(event('task-succeeded',{'uuid':str(uuid.uuid4()),'name':'demo.documents.index','hostname':name,'runtime':1.5+i}))
|
|
ingest(s.pk,batch)
|
|
evaluate_alarms()
|
|
self.stdout.write('Demo servers created. Login with a separately created user.')
|