使用komari的延迟数据 + grafana自定义延迟看板
1. 安装grafana
1.1 安装依赖
sudo apt-get update
sudo apt-get install -y apt-transport-https software-properties-common wget gnupg
wget -q -O - https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/grafana.gpg
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" \
| sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
systemctl status grafana-server
2. 处理数据
2.1 安装sqlite3
sudo apt install sqlite3
sqlite3 /opt/komari/data/komari.db
CREATE VIEW v_ping_stats AS
SELECT
pr.time AS time,
pr.value AS value,
c.uuid AS client_uuid,
c.name AS client_name,
t.id AS task_id,
t.name AS task_name,
t.target AS target
FROM ping_records pr
JOIN clients c ON pr.client = c.uuid
JOIN ping_tasks t ON pr.task_id = t.id;
3. 创建图表
3.1 安装Grafana插件
grafana-cli plugins install frser-sqlite-datasource
systemctl restart grafana-server
SELECT
(strftime('%s', time)) AS time, -- 转换为毫秒,
value,
task_name
FROM v_ping_stats
WHERE client_name = 'xx' -- komari后台设置的vps名称
ORDER BY time;
SELECT
(strftime('%s', time) / 300) * 300 AS time, -- 按5分钟对齐
task_name,
SUM(CASE WHEN value = -1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS loss_rate -- komari中延迟-1代表丢包
FROM v_ping_stats
WHERE client_name = 'xx' -- komari后台设置的vps名称
GROUP BY
strftime('%s', time) / 300,
task_name
ORDER BY time;
4. 开放给游客访问
4.1 修改/etc/grafana/grafana.ini文件
[auth.anonymous]
# 启用匿名访问
enabled = true
# 指定匿名用户的组织(通常是 1)
org_name = Main Org.
# 指定匿名用户的角色 (Viewer, Editor, Admin)
org_role = Viewer
# 可选: 隐藏版本信息
hide_version = false
sudo systemctl restart grafana-server
https://grafana.qixin.ch