海运的博客

smokeping master不检测使用slave网页排序图表问题

发布时间:October 11, 2026 // 分类: // No Comments

smokeping master所有节点都开启nomasterpoll = yes时访问web查看排序图表时不正常,nginx显示错误日志:
fastcgi://unix:/run/fcgiwrap.socket, host: "192.168.1.1", referrer: https://www.haiyun.me/?target=_charts
smokeping.cgi [client 192.168.1.2]: Warning: Dropping median/Ping/ALIDNS-V4~pve from sortercache

把下面补丁应用到smokeping/lib/Smokeping.pm

--- Smokeping.pm.20261011       2021-12-03 15:38:25.000000000 +0800
+++ Smokeping.pm        2026-10-11 10:51:19.103637469 +0800
@@ -1119,7 +1119,9 @@
     $tree = $phys_tree;
 
     my @slaves;
-    if (not $tree->{nomasterpoll} or $tree->{nomasterpoll} eq 'no' or $mode eq 'a' or $mode eq 'n'){
+    # <-- 在末尾加上 or $mode eq 'c',防止 nomasterpoll=yes 时直接返回空
+    if (not $tree->{nomasterpoll} or $tree->{nomasterpoll} eq 'no' or $mode eq 'a' or $mode eq 'n' or $mode eq 'c'){
+    #if (not $tree->{nomasterpoll} or $tree->{nomasterpoll} eq 'no' or $mode eq 'a' or $mode eq 'n'){
         @slaves  = ("");
     };
 
@@ -1129,7 +1131,9 @@
  
     return "" if not defined $tree->{host} or 0 == @slaves;
 
-    my $file = $mode eq 'c' ? (split(/~/, $open->[-1]))[0] : $open->[-1];
+    # <-- 去掉三元运算截断,直接保留 $open->[-1](即保留 ~pve 以读取正确的 RRD 文件)
+    my $file = $open->[-1];
+    #my $file = $mode eq 'c' ? (split(/~/, $open->[-1]))[0] : $open->[-1];
     my @dirs = @{$phys_open};
     pop @dirs;
     my $dir = "";
@@ -1531,14 +1535,16 @@
                 }
                 $page .= "<div class=\"panel-body\">";
                 $page .= ( qq{<a href="}.cgiurl($q,$cfg)."?".hierarchy($q).qq{displaymode=n;start=$startstr;end=now;}."target=".$t.$s.'">'
-                      . qq{<IMG ALT="" SRC="${imghref}${s}_${end}_${start}.png">}."</a>" ); #"
+                      #. qq{<IMG ALT="" SRC="${imghref}${s}_${end}_${start}.png">}."</a>" ); #"
+                      . qq{<IMG ALT="" WIDTH="$xs{$s}" HEIGHT="$ys{$s}" SRC="${imghref}${s}_${end}_${start}.png">}."</a>" ); #" 修复刚打开网页时空白图片挤压在一块
                 $page .= "</div></div>\n";
             }
         } else { # chart mode
             $page .= qq{<div class="panel-body">};
             my $href= (split /~/, (join ".", @$open))[0]; #/ # the link is 'slave free'            
             $page .= (  qq{<a href="}.lnk($q, $href).qq{">}
-                      . qq{<IMG ALT="" SRC="${imghref}_${end}_${start}.png">}."</a>" ); #"
+                      #. qq{<IMG ALT="" SRC="${imghref}_${end}_${start}.png">}."</a>" ); #"
+                      . qq{<IMG ALT="" WIDTH="$xs{''}" HEIGHT="$ys{''}" SRC="${imghref}_${end}_${start}.png">}."</a>" ); #" 同上
             $page .= "</div>";
             
         }
@@ -1628,6 +1634,7 @@
                 warn "Warning: Duplicate entry $chart/$path in sortercache\n" if defined $cache{$chart}{$path};
                 my $root = $cfg->{Targets};
                 for my $element (split /\//, $path){
+                    $element =~ s/~.+//; # <-- 剥离 ~pve 等后缀再去匹配配置树
                     if (ref $root eq 'HASH' and defined $root->{$element}){
                         $root = $root->{$element}
                     }

标签:none

发表评论

分类
最新文章
最近回复
  • 海运: 可能版本问题
  • 海运: 如果运营商限制型号
  • 海运: 没有
  • Mruru: 烽火猫切换rootfs的方法有么大佬?
  • nono: 修改光猫型号是做啥子用的
  • 960: root账号默认密码hg2x0 不对哇
  • rer: 感谢分享!~
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。