Updates
This commit is contained in:
200
ETB-API/monitoring/serializers.py
Normal file
200
ETB-API/monitoring/serializers.py
Normal file
@@ -0,0 +1,200 @@
|
||||
"""
|
||||
Serializers for monitoring models
|
||||
"""
|
||||
from rest_framework import serializers
|
||||
from monitoring.models import (
|
||||
MonitoringTarget, HealthCheck, SystemMetric, MetricMeasurement,
|
||||
AlertRule, Alert, MonitoringDashboard, SystemStatus
|
||||
)
|
||||
|
||||
|
||||
class MonitoringTargetSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for MonitoringTarget model"""
|
||||
|
||||
last_status_display = serializers.CharField(source='get_last_status_display', read_only=True)
|
||||
target_type_display = serializers.CharField(source='get_target_type_display', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = MonitoringTarget
|
||||
fields = [
|
||||
'id', 'name', 'description', 'target_type', 'target_type_display',
|
||||
'endpoint_url', 'connection_config', 'check_interval_seconds',
|
||||
'timeout_seconds', 'retry_count', 'health_check_enabled',
|
||||
'health_check_endpoint', 'expected_status_codes', 'status',
|
||||
'last_checked', 'last_status', 'last_status_display',
|
||||
'related_module', 'created_by', 'created_at', 'updated_at'
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at', 'last_checked']
|
||||
|
||||
|
||||
class HealthCheckSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for HealthCheck model"""
|
||||
|
||||
target_name = serializers.CharField(source='target.name', read_only=True)
|
||||
status_display = serializers.CharField(source='get_status_display', read_only=True)
|
||||
check_type_display = serializers.CharField(source='get_check_type_display', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = HealthCheck
|
||||
fields = [
|
||||
'id', 'target', 'target_name', 'check_type', 'check_type_display',
|
||||
'status', 'status_display', 'response_time_ms', 'status_code',
|
||||
'response_body', 'error_message', 'cpu_usage_percent',
|
||||
'memory_usage_percent', 'disk_usage_percent', 'checked_at'
|
||||
]
|
||||
read_only_fields = ['id', 'checked_at']
|
||||
|
||||
|
||||
class SystemMetricSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for SystemMetric model"""
|
||||
|
||||
metric_type_display = serializers.CharField(source='get_metric_type_display', read_only=True)
|
||||
category_display = serializers.CharField(source='get_category_display', read_only=True)
|
||||
aggregation_method_display = serializers.CharField(source='get_aggregation_method_display', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = SystemMetric
|
||||
fields = [
|
||||
'id', 'name', 'description', 'metric_type', 'metric_type_display',
|
||||
'category', 'category_display', 'unit', 'aggregation_method',
|
||||
'aggregation_method_display', 'collection_interval_seconds',
|
||||
'retention_days', 'warning_threshold', 'critical_threshold',
|
||||
'is_active', 'is_system_metric', 'related_module',
|
||||
'created_by', 'created_at', 'updated_at'
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at']
|
||||
|
||||
|
||||
class MetricMeasurementSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for MetricMeasurement model"""
|
||||
|
||||
metric_name = serializers.CharField(source='metric.name', read_only=True)
|
||||
metric_unit = serializers.CharField(source='metric.unit', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = MetricMeasurement
|
||||
fields = [
|
||||
'id', 'metric', 'metric_name', 'metric_unit', 'value',
|
||||
'timestamp', 'tags', 'metadata'
|
||||
]
|
||||
read_only_fields = ['id', 'timestamp']
|
||||
|
||||
|
||||
class AlertRuleSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for AlertRule model"""
|
||||
|
||||
alert_type_display = serializers.CharField(source='get_alert_type_display', read_only=True)
|
||||
severity_display = serializers.CharField(source='get_severity_display', read_only=True)
|
||||
status_display = serializers.CharField(source='get_status_display', read_only=True)
|
||||
metric_name = serializers.CharField(source='metric.name', read_only=True)
|
||||
target_name = serializers.CharField(source='target.name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = AlertRule
|
||||
fields = [
|
||||
'id', 'name', 'description', 'alert_type', 'alert_type_display',
|
||||
'severity', 'severity_display', 'condition', 'evaluation_interval_seconds',
|
||||
'metric', 'metric_name', 'target', 'target_name',
|
||||
'notification_channels', 'notification_template', 'status',
|
||||
'status_display', 'is_enabled', 'created_by', 'created_at', 'updated_at'
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at']
|
||||
|
||||
|
||||
class AlertSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for Alert model"""
|
||||
|
||||
rule_name = serializers.CharField(source='rule.name', read_only=True)
|
||||
severity_display = serializers.CharField(source='get_severity_display', read_only=True)
|
||||
status_display = serializers.CharField(source='get_status_display', read_only=True)
|
||||
acknowledged_by_username = serializers.CharField(source='acknowledged_by.username', read_only=True)
|
||||
resolved_by_username = serializers.CharField(source='resolved_by.username', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Alert
|
||||
fields = [
|
||||
'id', 'rule', 'rule_name', 'title', 'description', 'severity',
|
||||
'severity_display', 'status', 'status_display', 'triggered_value',
|
||||
'threshold_value', 'context_data', 'triggered_at', 'acknowledged_at',
|
||||
'resolved_at', 'acknowledged_by', 'acknowledged_by_username',
|
||||
'resolved_by', 'resolved_by_username'
|
||||
]
|
||||
read_only_fields = ['id', 'triggered_at']
|
||||
|
||||
|
||||
class MonitoringDashboardSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for MonitoringDashboard model"""
|
||||
|
||||
dashboard_type_display = serializers.CharField(source='get_dashboard_type_display', read_only=True)
|
||||
created_by_username = serializers.CharField(source='created_by.username', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = MonitoringDashboard
|
||||
fields = [
|
||||
'id', 'name', 'description', 'dashboard_type', 'dashboard_type_display',
|
||||
'layout_config', 'widget_configs', 'is_public', 'allowed_users',
|
||||
'allowed_roles', 'auto_refresh_enabled', 'refresh_interval_seconds',
|
||||
'is_active', 'created_by', 'created_by_username', 'created_at', 'updated_at'
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at']
|
||||
|
||||
|
||||
class SystemStatusSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for SystemStatus model"""
|
||||
|
||||
status_display = serializers.CharField(source='get_status_display', read_only=True)
|
||||
created_by_username = serializers.CharField(source='created_by.username', read_only=True)
|
||||
is_resolved = serializers.BooleanField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = SystemStatus
|
||||
fields = [
|
||||
'id', 'status', 'status_display', 'message', 'affected_services',
|
||||
'estimated_resolution', 'started_at', 'updated_at', 'resolved_at',
|
||||
'created_by', 'created_by_username', 'is_resolved'
|
||||
]
|
||||
read_only_fields = ['id', 'started_at', 'updated_at']
|
||||
|
||||
|
||||
class HealthCheckSummarySerializer(serializers.Serializer):
|
||||
"""Serializer for health check summary"""
|
||||
|
||||
overall_status = serializers.CharField()
|
||||
total_targets = serializers.IntegerField()
|
||||
healthy_targets = serializers.IntegerField()
|
||||
warning_targets = serializers.IntegerField()
|
||||
critical_targets = serializers.IntegerField()
|
||||
health_percentage = serializers.FloatField()
|
||||
last_updated = serializers.DateTimeField()
|
||||
|
||||
|
||||
class MetricTrendSerializer(serializers.Serializer):
|
||||
"""Serializer for metric trends"""
|
||||
|
||||
metric_name = serializers.CharField()
|
||||
period_days = serializers.IntegerField()
|
||||
daily_data = serializers.ListField()
|
||||
trend = serializers.CharField()
|
||||
|
||||
|
||||
class AlertSummarySerializer(serializers.Serializer):
|
||||
"""Serializer for alert summary"""
|
||||
|
||||
total_alerts = serializers.IntegerField()
|
||||
critical_alerts = serializers.IntegerField()
|
||||
high_alerts = serializers.IntegerField()
|
||||
medium_alerts = serializers.IntegerField()
|
||||
low_alerts = serializers.IntegerField()
|
||||
acknowledged_alerts = serializers.IntegerField()
|
||||
resolved_alerts = serializers.IntegerField()
|
||||
|
||||
|
||||
class SystemOverviewSerializer(serializers.Serializer):
|
||||
"""Serializer for system overview"""
|
||||
|
||||
system_status = SystemStatusSerializer()
|
||||
health_summary = HealthCheckSummarySerializer()
|
||||
alert_summary = AlertSummarySerializer()
|
||||
recent_incidents = serializers.ListField()
|
||||
top_metrics = serializers.ListField()
|
||||
system_resources = serializers.DictField()
|
||||
Reference in New Issue
Block a user