最近我尝试了一下 Grafana 作为探针,发现它还是非常不错的。
所以,我想和大家分享一下如何制作一个ICMP+TCP+流媒体解锁的一个面板.
Demo:https://grafana.vki.im/d/aers58nt4q48wb/uki0x-s-vps-overview
我使用的部署方案是 Grafana 和 Victoriametrics 的组合。如果你对搭建基础面板感兴趣,我推荐参考这位佬的帖子:
https://www.nodeseek.com/post-311687-1
注意:
针对其中安装 agent 的部分,不用 Loki 也是可以的。面板部分依照这篇文章也是可以的。
仪表盘部分
json很长 所以放到了github里 自行复制
监控端设置
如果按照的是上面帖子中的安装方法下
需要改的位置在/usr/local/bin 目录下
有些需要换名字的 可以用word的替换 全部替换掉 方便一点
/usr/local/bin/vmagent/prometheus.yml
scrape_configs: - job_name: node scrape_interval: 5s static_configs: - targets: ['localhost:9100'] labels: instance: Netcup.1o # 改成自己的机器名 - job_name: blackbox scrape_interval: 5s metrics_path: /probe params: module: [tcping] file_sd_configs: - files: - /usr/local/bin/vmagent/endpoint.yml relabel_configs: - source_labels: [__address__] target_label: __param_target - target_label: __address__ replacement: localhost:9115 - job_name: blackbox_icmp scrape_interval: 5s metrics_path: /probe params: module: [icmp] file_sd_configs: - files: - /usr/local/bin/vmagent/icmp.yml relabel_configs: - source_labels: [__address__] target_label: __param_target - target_label: __address__ replacement: localhost:9115/usr/local/bin/vmagent/endpoint.yml
- targets: - 'sh-ct-v4.ip.zstaticcdn.com:80' labels: name: '上海电信' code: 'SH' city: 'Shanghai' isp: 'China Telecom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'sh-cu-v4.ip.zstaticcdn.com:80' labels: name: '上海联通' code: 'SH' city: 'Shanghai' isp: 'China Unicom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'sh-cm-v4.ip.zstaticcdn.com:80' labels: name: '上海移动' code: 'SH' city: 'Shanghai' isp: 'China Mobile' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'bj-ct-v4.ip.zstaticcdn.com:80' labels: name: '北京电信' code: 'BJ' city: 'Beijing' isp: 'China Telecom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'bj-cu-v4.ip.zstaticcdn.com:80' labels: name: '北京联通' code: 'BJ' city: 'Beijing' isp: 'China Unicom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'bj-cm-v4.ip.zstaticcdn.com:80' labels: name: '北京移动' code: 'BJ' city: 'Beijing' isp: 'China Mobile' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'gd-ct-v4.ip.zstaticcdn.com:80' labels: name: '广东电信' code: 'GD' city: 'Guangdong' isp: 'China Telecom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'gd-cu-v4.ip.zstaticcdn.com:80' labels: name: '广东联通' code: 'GD' city: 'Guangdong' isp: 'China Unicom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - 'gd-cm-v4.ip.zstaticcdn.com:80' labels: name: '广东移动' code: 'GD' city: 'Guangdong' isp: 'China Mobile' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名/usr/local/bin/vmagent/icmp.yml
- targets: - '202.96.209.133' labels: name: '上海电信' code: 'SH' city: 'Shanghai' isp: 'China Telecom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '210.22.97.1' labels: name: '上海联通' code: 'SH' city: 'Shanghai' isp: 'China Unicom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '221.183.90.237' labels: name: '上海移动' code: 'SH' city: 'Shanghai' isp: 'China Mobile' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '49.7.37.74' labels: name: '北京电信' code: 'BJ' city: 'Beijing' isp: 'China Telecom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '111.206.209.44' labels: name: '北京联通' code: 'BJ' city: 'Beijing' isp: 'China Unicom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '112.34.111.194' labels: name: '北京移动' code: 'BJ' city: 'Beijing' isp: 'China Mobile' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '183.36.23.111' labels: name: '广东电信' code: 'GD' city: 'Guangdong' isp: 'China Telecom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '112.90.211.100' labels: name: '广东联通' code: 'GD' city: 'Guangdong' isp: 'China Unicom' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名- targets: - '183.240.65.191' labels: name: '广东移动' code: 'GD' city: 'Guangdong' isp: 'China Mobile' ip: 'IPv4' domestic: 'true' instance: 'Netcup.1o' # 改成自己的机器名这些是icmp和tcp的部分
流媒体解锁部分
这边使用的方法是通过定期跑脚本来实现
然后把得出的流媒体结果在通过一个脚本转化成victoriametrics能看得懂的格式
在/usr/local/bin/目录下创建一个metrics.sh
#!/bin/bashTEXTFILE_COLLECTOR_DIR="/var/lib/node_exporter/textfile_collector"mkdir -p "$TEXTFILE_COLLECTOR_DIR"TMP_METRICS_FILE="${TEXTFILE_COLLECTOR_DIR}/streaming_unlock.prom.$$"METRICS_FILE="${TEXTFILE_COLLECTOR_DIR}/streaming_unlock.prom"check_output=$(bash <(curl -sL https://raw.githubusercontent.com/uki0xc/ukix/main/streaming.sh))echo '# HELP streaming_unlock_status Service unlock status (1 = Unlocked, 0 = Locked)' > "$TMP_METRICS_FILE"echo '# TYPE streaming_unlock_status gauge' >> "$TMP_METRICS_FILE"services=( "Disney+" "Netflix" "YouTube Premium" "Amazon Prime Video" "ChatGPT" "Claude")for service in "${services[@]}"; do status=0 if echo "$check_output" | grep -F "${service}:" | grep -q "Yes"; then status=1 fi service_label=$(echo "$service" | tr -d ' +:') echo "streaming_unlock_status{service=\"${service_label}\"} ${status}" >> "$TMP_METRICS_FILE"donemv "$TMP_METRICS_FILE" "$METRICS_FILE"echo "Streaming unlock metrics generated. Please verify."然后去给它赋予权限
chmod +x /usr/local/bin/metrics.sh接下来还要去修改一下node_exporter的启动方式
nano /etc/systemd/system/node_exporter.service[Unit]Description=node_exporterAfter=network.target[Service]Type=simpleExecStart=/usr/local/bin/node/node_exporter --web.listen-address=127.0.0.1:9100 --collector.textfile --collector.textfile.directory="/var/lib/node_exporter/textfile_collector" --collector.cpu.info[Install]WantedBy=multi-user.target先去运行一下脚本
/usr/local/bin/metrics.sh之后去重启node_exporter
systemctl daemon-reloadsystemctl restart node_exporter有问题的话检查一下日志
systemctl status node_exporter设置定时任务
crontab -e再起一行输入
* * 1 * * /usr/local/bin/metrics.sh > /dev/null 2>&1这样所有的设置部分全都结束了
最后得到这样一个探针
结语
有的人可能会问这个探针可能有点重了
答:面板鸡使用的是Netcup.1o grafana+victoriametrics加起来一共300MB agent一共使用60~70MB 我甚至还放了一个pagermaid 也是绰绰有余 如果担心可以加一点swap
相比起nezha来说 这个探针权限没那么大 可玩性很强 还有很多东西可以发掘
别问为什么这么麻烦 就是为了折腾!!
这个配置也兼容了一些佬的面板
参考
1.[增加中文版]🔹 Node Information - 更美观的 Grafana 性能监控面板 (Prometheus + Node Exporter) & Grafana 安装教程
Bene
2.BBxPING Gen2 面板 - 在黑盒中拾星光 / 各版块介绍及使用指引
评论 (0)