设为首页 收藏本站
查看: 1129|回复: 0

[经验分享] dashboard.php----zabbix总览界面分析

[复制链接]

尚未签到

发表于 2015-11-23 12:32:45 | 显示全部楼层 |阅读模式
今天分析dashboard.php文件,这个是zabbix的中心

照例,开始的时候是引入文件,定义页面变量

filter,刚开始不知道这个玩意是干嘛滴,分析dashconf.php后才理解,这个就是读取配置的数据,也就是需要过滤的东西。dashboard.php是总览面板,其中是有个配置总览面板的操作,而配置的时候是向相应的数据表中写入东西,而展示总览面板的时候,应当是从相应表中读取数据,这个读取操作,正是这里的filter,在fliter中发现有个调用:    $dashconf['filterEnable'] = CProfile::get('web.dashconf.filter.enable', 0);这个就是先来读取配置的过滤是否启用,如果没有启用,就不用去过滤,分析这个语句可以知道,调用的CProfilter类中的get函数,去找到这个函数的定义:
public static function get($idx, $default_value = null, $idx2 = 0) ;
可以发现,这个get函数是个静态的函数,返回相应的数据设置,其中的又调用内部的init函数,再找到这个init函数:    public static function init();发现其中正是对配置表中数据的读取:    $db_profiles = DBselect(               'SELECT p.*'.
               ' FROM profiles p'.
               ' WHERE p.userid='.self::$userDetails['userid'].
                    andDbNode('p.profileid', false).
               ' ORDER BY p.userid,p.profileid'
          );
然后返回相应的数据
获取到配置项后,就是页面的展示
首先是action,这里是根据请求的类型执行相应的脚步,request['favobj'],比如有菜单的折叠,有rate的选择
最后是页面的展示
首先是创建画布,将所有的框框在一个抽象层面上的画布上展示:   $dashboardWidget = new CWidget('dashboard_wdgt');分析判断,这里是实例化类个CWidget类,去找到这个类:     www/include/classes/class.cwidget.php分析构造函数,里面设置的是body的id和页面的样式
然后,展示页面的图标,比如全屏的图标
接下来是生产菜单的语句,比如:    make_graph_menu($menu, $submenu);//生成图表的菜单分别生成所有单元的菜单,我们分析这一个,找到这个函数make_graph_menu所在文件:    www/include/blocks.inc.php找到函数的定义:     function make_graph_menu(&$menu, &$submenu) ;可以看到这个函数中的参数是取值符,妈蛋,这个玩意自从在c/c++中遇到后就再没遇到过,不过这里也能理解,可以推断出这个函数没有返回值,这里是添加一些选项,然后需要弹框的地方是有链接popup.php文件的,比如:    $menu['menu_graphs'][] = array(          _('Add').' '._('Simple graph'),
          'javascript: PopUp(\'popup.php?srctbl=items&srcfld1=itemid&reference=itemid&real_hosts=1'.
               '&multiselect=1&numeric=1&templated=0&with_simple_graph_items=1\',800,450); void(0);',
          null,
          array('outer' => 'pum_o_submenu', 'inner' => array('pum_i_submenu'))
     );后面就是生成刷新的菜单:    make_refresh_men();这个就没必要分析了
再下面就是单元的输出了,挑选一个来分析://生成单元菜单的图标$refresh_menu = get_icon('menu', array('menu' => 'hat_hoststat'));//展示正在加载,然后去数据库中读取信息
$hoststat = new CUIWidget('hat_hoststat', new CSpan(_('Loading...'), 'textcolorstyles'), CProfile::get('web.dashboard.widget.hoststat.state', 1));//单元的菜单
$hoststat->setHeader(_('Host status'), array($refresh_menu));//生成单元底部
$hoststat->setFooter(new CDiv(SPACE, 'textwhite', 'hat_hoststat_footer'));//这个不知道用什么语言来形容,在后面显示的时候这个是放在一个数组中的,按次序显示
$col = CProfile::get('web.dashboard.widget.hoststat.col', '1');
$row = CProfile::get('web.dashboard.widget.hoststat.row', '2');
//存放在数组中,等后面全部展示的的时候传递给dashboardTable
if (!isset($columns[$col][$row])) {
     $columns[$col][$row] = $hoststat;
}
else {
     $columns[$col][] = $hoststat;
}

需要去探究下CUIWidget,找到这个文件:     www/include/classes/class.cuiwidget.php


全部的展示:$dashboardTable = new CTable();
$dashboardTable->addRow(array(new CDiv($columns[0], 'column'), new CDiv($columns[1], 'column'), new CDiv($columns[2], 'column')), 'top');

$dashboardWidget->addItem($dashboardTable);
$dashboardWidget->show();     

OK,基本思路已理顺,稍事休息,后续动工~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-142620-1-1.html 上篇帖子: zabbix—安装agent客户端(linux版) 下篇帖子: zabbix api python auth
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表