










啊哈,那就完全不一样了——Zabbix 是"必须登录"的架构,它不像 Grafana 有个能一键开启的匿名访问开关。但办法有,而且有好几个层次,我按可用性从低到高说。
| 方案 | 领导操作 | 你的工作量 | 推荐度 |
|---|---|---|---|
| 共用账号 + 记住密码 | 需登录一次 | 5 分钟 | ⭐⭐ |
| 给领导发链接前自动登录 | 免登录,但要装脚本 | 30 分钟 | ⭐⭐⭐⭐ |
| 接 Grafana 显示 Zabbix 数据 | 完全免登录 | 1 小时 | ⭐⭐⭐⭐⭐ |
我推荐方案三,一劳永逸——你之前已经装了 Grafana,直接接 Zabbix 数据源就行,能把这个仪表盘完整搬过去,还能免登录给领导。
先看简单的两条路。
Zabbix 最简单粗暴的做法,5 分钟能搞定。
leader-view 之类的http://172.16.0.8/zabbix)leader-viewxxxxx告诉领导:"第一次登录时勾选保持登录,浏览器会记住,以后直接打开这个链接就是这个页面。"
Zabbix 里,找到你截图这个仪表盘的 URL,一般是:
http://你的zabbix地址/zabbix.php?action=dashboard.view&dashboardid=XXX
领导记录这个 URL,登录一次后浏览器加书签,以后每次点书签直接进这个页面。
局限:换电脑、清缓存、Cookie 过期后要重新输密码。领导觉得麻烦的话看方案二。
在你们内网建一个简单的中转页面,领导点击 → 页面自动帮他登录 → 跳转到仪表盘。领导整个过程无感。
Zabbix 网页登录本质是提交一个 POST 表单(username、password、enter=Sign in),登录成功后服务器返回一个 zbx_session Cookie。有这个 Cookie 就是登录状态。
我们做一个小的 PHP/Python 中转页,在服务器端替领导登录、把 Cookie 塞给领导浏览器,再跳转到仪表盘。
如果你有 PHP 环境(宝塔面板一装就有),最简单:### 部署(宝塔 PHP 环境)
dashboard.local,绑到内网 IPzabbix-leader-login.php 传到站点根目录,改成 leader.php$ZBX_URL 你 Zabbix 的地址$USERNAME / $PASSWORD 只读账号$DASHBOARD_URL 那个仪表盘的路径http://172.16.0.8/leader.phpPHP 中转页和 Zabbix 必须在同一个域名/IP 下(比如都用 172.16.0.8,路径不同),否则 Cookie 跨域会失败,领导跳过去还是要登录。
如果你的 Zabbix 和中转页不在同一个域名,只能走方案三或用 Nginx 反代把它们放到同一个域名下。
你截图右上角有轮播控制按钮,说明你已经玩 Zabbix 玩得挺熟了。但给领导看这件事,Grafana 天生更合适——Zabbix 是运维工具,Grafana 是展示工具。而且你之前已经装了 Grafana,成本很低。
Grafana 官方的 Zabbix 插件 是免费的、开源的、维护得很好。
# Grafana 命令行装插件
grafana-cli plugins install alexanderzobnin-zabbix-app
# 或 Docker 环境
docker exec grafana grafana-cli plugins install alexanderzobnin-zabbix-app
docker restart grafana
http://172.16.0.8/zabbix/api_jsonrpc.php)Grafana 官网有几百个现成的 Zabbix 仪表盘,导入就用:
18345)现在这个 Grafana 仪表盘就可以按我上一条消息说的:
grafana.ini 开 [auth.anonymous] enabled = true?kiosk&refresh=30s完美闭环:数据源还是 Zabbix,展示层是 Grafana,领导免登录看。
给你的 PHP 中转页文件:选哪条路你说一声,我可以帮你把具体细节调到位。方案三我强烈推荐——你之前已经在 Grafana 上部署过东西了,配置成本最低,效果最好。
<?php
/**
* Zabbix 自动登录中转页 —— 让领导免登录看仪表盘
*
* 部署:
* 1. 把这个文件放到你 Web 服务器根目录,比如 /www/wwwroot/dashboard/leader.php
* 2. 修改下面 CONFIG 里的 4 个变量
* 3. 发给领导的链接:http://你的服务器/dashboard/leader.php
*
* 安全提醒:
* - 只在内网使用!不要暴露到公网
* - 建议 Nginx 加 IP 白名单,只放行领导办公室的 IP
* - 这个文件里存的是明文密码,权限设 600,只有 root 能读:chmod 600 leader.php
*/
// ==================== CONFIG ====================
$ZBX_URL = 'http://172.16.0.8/zabbix'; // 你的 Zabbix 地址,末尾不要 /
$USERNAME = 'leader-view'; // 只读账号
$PASSWORD = 'ChangeMe123!'; // 密码
$DASHBOARD_URL = '/zabbix.php?action=dashboard.view&dashboardid=1'; // 领导要看的仪表盘 URL 后半段
// ================================================
// 用 cURL 模拟表单登录,拿 Cookie
$ch = curl_init();
$cookieJar = tempnam(sys_get_temp_dir(), 'zbx_');
curl_setopt_array($ch, [
CURLOPT_URL => $ZBX_URL . '/index.php',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'name' => $USERNAME,
'password' => $PASSWORD,
'autologin' => '1',
'enter' => 'Sign in',
]),
CURLOPT_COOKIEJAR => $cookieJar,
CURLOPT_COOKIEFILE => $cookieJar,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false, // 内网自签证书时用
]);
curl_exec($ch);
curl_close($ch);
// 读取 cookie 文件,找到 zbx_session
$cookies = file_get_contents($cookieJar);
unlink($cookieJar);
if (preg_match('/zbx_session\s+(\S+)/', $cookies, $m)) {
$sessionCookie = trim($m[1]);
// 把 Cookie 种到领导浏览器上(同域名下有效)
// 注意:中转页和 Zabbix 必须在同一个域名/IP 下,否则 Cookie 跨域无效
setcookie('zbx_session', $sessionCookie, [
'expires' => time() + 3600 * 24 * 7, // 7 天
'path' => '/',
'httponly' => true,
]);
// 跳转到仪表盘
header('Location: ' . $ZBX_URL . $DASHBOARD_URL);
exit;
} else {
// 登录失败
http_response_code(500);
echo "自动登录失败,请联系管理员。<br>";
echo "如需调试,检查 Zabbix 账号密码是否正确。";
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。