Add docker stats view
This commit is contained in:
@@ -77,6 +77,41 @@ async def ds(msg: Message):
|
||||
await cmd_docker_status(msg)
|
||||
|
||||
|
||||
@dp.message(F.text == "📈 Stats")
|
||||
async def dstats(msg: Message):
|
||||
if not is_admin_msg(msg):
|
||||
return
|
||||
if not DOCKER_MAP:
|
||||
await msg.answer(
|
||||
"⚠️ DOCKER_MAP пуст.\n"
|
||||
"Контейнеры не обнаружены.",
|
||||
reply_markup=docker_kb,
|
||||
)
|
||||
return
|
||||
|
||||
names = list(DOCKER_MAP.values())
|
||||
fmt = "{{.Name}}|{{.CPUPerc}}|{{.MemUsage}}|{{.NetIO}}|{{.BlockIO}}"
|
||||
rc, out = await docker_cmd(["stats", "--no-stream", "--format", fmt] + names)
|
||||
if rc != 0:
|
||||
await msg.answer(out, reply_markup=docker_kb)
|
||||
return
|
||||
lines = [line.strip() for line in out.splitlines() if line.strip()]
|
||||
if not lines:
|
||||
await msg.answer("📈 Stats\n\n(no data)", reply_markup=docker_kb)
|
||||
return
|
||||
|
||||
rows = []
|
||||
for line in lines:
|
||||
parts = line.split("|")
|
||||
if len(parts) != 5:
|
||||
continue
|
||||
name, cpu, mem, net, blk = parts
|
||||
rows.append(f"{name}: CPU {cpu}, MEM {mem}, NET {net}, IO {blk}")
|
||||
|
||||
body = "\n".join(rows) if rows else "(no data)"
|
||||
await msg.answer(f"📈 **Docker stats**\n```\n{body}\n```", reply_markup=docker_kb, parse_mode="Markdown")
|
||||
|
||||
|
||||
@dp.message(F.text, F.func(lambda msg: msg.from_user and msg.from_user.id in LOG_FILTER_PENDING))
|
||||
async def log_filter_input(msg: Message):
|
||||
if not is_admin_msg(msg):
|
||||
|
||||
Reference in New Issue
Block a user