You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
8.5 KiB

6 months ago
from dash import html, dcc
import feffery_antd_components as fac
import callbacks.monitor_c.cache_c.control_c
from api.cache import get_cache_statistical_info_api
def render(*args, **kwargs):
button_perms = kwargs.get('button_perms')
command_stats = []
db_size = ''
info = {}
cache_info_res = get_cache_statistical_info_api()
if cache_info_res.get('code') == 200:
cache_info = cache_info_res.get('data')
command_stats = cache_info.get('command_stats')
db_size = cache_info.get('db_size')
info = cache_info.get('info')
return [
dcc.Store(id='control-button-perms-container', data=button_perms),
dcc.Store(id='init-echarts-data-container', data=dict(command_stats=command_stats, used_memory_human=info.get('used_memory_human'))),
dcc.Store(id='echarts-data-container'),
dcc.Interval(
id='init-echarts-interval',
n_intervals=0,
interval=500,
disabled=False
),
html.Div(
[
fac.AntdRow(
[
fac.AntdCol(
fac.AntdCard(
[
fac.AntdDescriptions(
[
fac.AntdDescriptionItem(
info.get('redis_version'),
label='Redis版本'
),
fac.AntdDescriptionItem(
'单机'if info.get('redis_mode') == 'standalone' else '集群',
label='运行模式'
),
fac.AntdDescriptionItem(
info.get('tcp_port'),
label='端口'
),
fac.AntdDescriptionItem(
info.get('connected_clients'),
label='客户端数'
),
fac.AntdDescriptionItem(
info.get('uptime_in_days'),
label='运行时间(天)'
),
fac.AntdDescriptionItem(
info.get('used_memory_human'),
label='使用内存'
),
fac.AntdDescriptionItem(
info.get('used_cpu_user_children'),
label='使用CPU'
),
fac.AntdDescriptionItem(
info.get('maxmemory_human'),
label='内存配置'
),
fac.AntdDescriptionItem(
'' if info.get('aof_enabled') == 0 else '',
label='AOF是否开启'
),
fac.AntdDescriptionItem(
info.get('rdb_last_bgsave_status'),
label='RDB是否成功'
),
fac.AntdDescriptionItem(
db_size,
label='Key数量'
),
fac.AntdDescriptionItem(
f"{info.get('instantaneous_input_kbps')}kps/{info.get('instantaneous_output_kbps')}kps",
label='网络入口/出口'
),
],
bordered=True,
column=4,
labelStyle={
'fontWeight': 600,
'textAlign': 'center'
},
style={
'width': '100%',
'textAlign': 'center',
'marginLeft': '20px',
'marginRight': '20px'
}
)
],
title=html.Div(
[
fac.AntdIcon(icon='antd-desktop'),
fac.AntdText('基本信息', style={'marginLeft': '10px'})
]
),
size='small',
style={
'boxShadow': 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'
}
),
span=24
),
],
gutter=20
),
fac.AntdRow(
[
fac.AntdCol(
fac.AntdCard(
[
html.Div(
id='command-stats-charts-container',
style={
'height': '420px',
'width': '100%'
}
),
],
title=html.Div(
[
fac.AntdIcon(icon='antd-pie-chart'),
fac.AntdText('命令统计', style={'marginLeft': '10px'})
]
),
size='small',
style={
'boxShadow': 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'
}
),
span=12
),
fac.AntdCol(
fac.AntdCard(
[
html.Div(
id='memory-charts-container',
style={
'height': '420px',
'width': '100%'
}
),
],
title=html.Div(
[
fac.AntdIcon(icon='antd-compass'),
fac.AntdText('内存信息', style={'marginLeft': '10px'})
]
),
size='small',
style={
'boxShadow': 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'
}
),
span=12
),
],
gutter=20,
style={
'marginTop': '20px',
'marginBottom': '20px'
}
),
],
)
]