feat: 添加组件监控;TerminalModel添加type字段; (#5206)

* feat: 添加组件监控;TerminalModel添加type字段;

* feat: Terminal序列类添加type字段

* feat: Terminal序列类添加type字段为只读

* feat: 修改组件status文案

* feat: 取消上传组件状态序列类count字段

* reactor: 修改termina/models目录结构

* feat: 修改ComponentTypeChoices

* feat: 取消考虑CoreComponent类型

* feat: 修改Terminal status判断逻辑

* feat: 终端列表添加status过滤; 组件状态序列类添加default值

* feat: 添加PrometheusMetricsAPI

* feat: 修改PrometheusMetricsAPI

Co-authored-by: Bai <bugatti_it@163.com>
This commit is contained in:
fit2bot
2020-12-10 20:50:22 +08:00
committed by GitHub
parent d4feaf1e08
commit 856e7c16e5
20 changed files with 902 additions and 495 deletions

View File

@@ -4,3 +4,4 @@ from .terminal import *
from .session import *
from .storage import *
from .command import *
from .components import *

View File

@@ -0,0 +1,25 @@
from rest_framework import serializers
from django.utils.translation import ugettext_lazy as _
class ComponentsStateSerializer(serializers.Serializer):
# system
system_cpu_load_1 = serializers.FloatField(
required=False, default=0, label=_("System cpu load 1 minutes")
)
system_memory_used_percent = serializers.FloatField(
required=False, default=0, label=_('System memory used percent')
)
system_disk_used_percent = serializers.FloatField(
required=False, default=0, label=_('System disk used percent')
)
# sessions
session_active_count = serializers.IntegerField(
required=False, default=0, label=_("Session active count")
)
def save(self, **kwargs):
request = self.context['request']
terminal = request.user.terminal
terminal.state = self.validated_data

View File

@@ -6,19 +6,25 @@ from common.utils import is_uuid
from ..models import (
Terminal, Status, Session, Task, CommandStorage, ReplayStorage
)
from .components import ComponentsStateSerializer
class TerminalSerializer(BulkModelSerializer):
session_online = serializers.SerializerMethodField()
is_alive = serializers.BooleanField(read_only=True)
status = serializers.CharField(read_only=True)
status_display = serializers.CharField(read_only=True)
state = ComponentsStateSerializer(read_only=True)
class Meta:
model = Terminal
fields = [
'id', 'name', 'remote_addr', 'http_port', 'ssh_port',
'id', 'name', 'type', 'remote_addr', 'http_port', 'ssh_port',
'comment', 'is_accepted', "is_active", 'session_online',
'is_alive', 'date_created', 'command_storage', 'replay_storage'
'is_alive', 'date_created', 'command_storage', 'replay_storage',
'status', 'status_display', 'state'
]
read_only_fields = ['type', 'date_created']
@staticmethod
def get_kwargs_may_be_uuid(value):