Giter VIP home page Giter VIP logo

itop-extensions's Introduction

ops-itop

基于 iTop 的运维平台发行版

Roadmap

  • auth by OIDC
  • TeemIp integration
  • echarts Dashlet
  • table Dashlet
  • business tree dashboard
  • list CI attribute definition by REST API
  • expose metrics by REST API
  • Ticket robot
  • cost management
  • predefined service catagory
  • use Docker. Model compiler and database migration by CLI
  • Move usefull extensions from itop-extensions
  • Refactor cmdbApi
  • VSCode plugin for XML model develop
  • multi cloud provider support(sync CI from aliyun, tencent etc)

itop-extensions's People

Contributors

annprog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

itop-extensions's Issues

itop导出pdf时中文乱码

itop pdf导出用的是tcpdf,在lib/tcpdf目录下。中文乱码是因为没有中文字体。因此添加中文字体即可。

lib/tcpdf/tools/下有个tcpdf_addfont.php 工具,可以用来添加字体

添加只读角色

SSO登录初始为只读角色。

添加一般角色只能编辑自己的contactid的Person实例

functionalci唯一性检查有bug

以app为例,friendlyname为 业务线.app,如果创建一个app为: op.cmdb,然后在创建一个app: rd.cmdb,可以成功创建,之后修改 rd.cmdb, 业务线改为 op,可以修改成功。

权限控制使用GetAttributeFlags函数

目前使用的DoCheckToWrite函数做写入前校验,用户体验较差(可以看到修改按钮,但是不能提交),参考这个库:vbkunin/custom-ticket-fields-access-for-itop,增加GetAttributeFlags 函数,使没有权限的用户看不到修改按钮(DoCheckToWrite不需要删除,可以用作新建时的校验)

<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
  <classes>
    <class id="UserRequest">
      <methods>
        <method id="GetAttributeFlags" _delta="define">
          <static>false</static>
          <access>public</access>
          <type>Overload-iDisplay</type>
          <code><![CDATA[
            public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
            {
              $aAttributes = array('description');
              if (in_array($sAttCode, $aAttributes) && !UserRights::IsAdministrator())
              {
                $iCallerID = $this->Get('caller_id');
                $iAgentID = $this->Get('agent_id');
                $iUserID = UserRights::GetContactId();
                if ($iCallerID == $iUserID)
                {
                  return OPT_ATT_READONLY;
                }
                elseif ($iAgentID == $iUserID)
                {
                  return OPT_ATT_HIDDEN;
                }
              }
              else
              {
                return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
              }
            }
            ]]>
          </code>
        </method>
      </methods>
    </class>
  </classes>
</itop_design>

新版本计划

可以用trigger+action-shell-exec代替:

  • url监控新建修改状态变更,用触发器去实时更新,urlmon.py放在cmdbApi/actinos/tasks下也方便管理
  • 使用trigger+action-shell-exec来做资源入库,工单指派。使用增强版portal

VIP链接集群自动插入

vip初始时都可以为tmp_cluster,后续如果vip member机器的cluster确定,那么vip链接的集群应该自动确定

抽象类中限制friendlyname不能重复

之前的做法是在FunctionalCI的每一个子类中单独定义DoCheckToWrite(),直接检查需要保证唯一性的属性,比较费劲。

可以在抽象类中统一对friendlyname进行检查,这样既可以重用代码,也能解决类似 APP 能重复,但是 业务名称.APP 这样两个属性连接之后保持唯一性的需求(通过naming定义friendlyname使用的属性)

custom-page提供重置服务器密码

Person类增加公钥和密码(hidden),公钥不为空时,用户在此页面能重置自己的密码,密码用pgp公钥加密后存入密码字段(密码字段隐藏),并发送加密邮件给用户

报警自定义阈值

新增Typology子类,AlertType

新增类 AlertRule,字段列表
name: 选择一个AlertType
method:ratio,qps,qoq_rise(环比上涨), qoq_fall(环比下降)
qoq_cycle: 小时为单位,根据method 显示或隐藏
threshold: 阈值
app_list: 链接的app

新增 lnkApplicationSolutionToAlertRule

除了app list 外,其他字段对非管理员只读,
lnkApplicationSolutionToAlertRule, 删除前需要检查是否有权限

trigger on-delete

由于新增或删除lnk类不会触发_list的更新,需要开发delete触发器

详见 #7

lnkContactToApplicationSolution更新bug

DoCheckToWrite函数

            $myContactId = UserRights::GetContactId();
            $thisContactId = $this->Get('contact_id');

            if ($myContactId != $thisContactId && !UserRights::IsAdministrator()){
                $this->m_aCheckIssues[] = Dict::Format("Class:lnkContactToApplicationSolution/Error:CanOnlyAddLinkForYourself", $thisContactName);
            }

有漏洞,用户可以把其他人的关联更改为自己的关联,$this->Get('')获取的是当前form的值,不是数据库中的值.

简单的处理办法是不允许更新链接类,只允许增加和删除链接。

lnkApplicatinSolutionToFunctionalCI 多对多关系

域名,数据库,服务器等资源对applicationsolution可以是多对多的关系,因此统一使用 itop自带的 lnkApplicationSolutionToFunctionalCI来实现,不在使用 外键 方式(此方式一个资源只能归属一个APP,与现实情况不符)。

对于域名,数据库等资源的list现实问题,可以增加一个字符串型field,然后在lnkApplicationSolutionToFunctionalCI中用DoCheckToWrite更新该field

FunctionalCI新增联系人(contacts)字段

域名只与app相关,因此该字段需要首先查询APP所属团队,然后获取团队人员列表,在更新域名的contacts字段,与#2类似,需要在Team及APP类中去更新该字段(APP变更联系团队,或者团队成员变更)

规划

  1. 业务线支持层级,类似组织,单独页面展示层级关系。业务线上下线流程
  2. 所有资源链接到APP,包括服务器,Secret,服务器只关联到一个APP,此APP的联系人为服务器管理员(需修改服务器账号申请逻辑)。APP可以配置依赖项依赖某个服务器,但是只能接收该服务器的报警。人员只关联到APP,不允许人员直接修改负责的APP(通过工单流程)。人员链接配置项允许自行修改,仅做报警使用
  3. APP中增加表单定义关联机器的监控端口,服务器上脚本获取需要监控的端口;报警规则链接到APP,APP下所有机器应用此规则(是否可以实现?)
  4. 链接到APP的配置项自动更新组织为APP的组织

VIP查看member

  1. 添加vip查看member的功能
  2. 同一组VIP(内网,公网)能通过某种方式联系起来)

cis_list为空的对象

app的联系人列表,域名,数据库的app列表等均不能为空
添加 xxx_count字段(类似服务器all_ip)
在lnk类中写上述对象的 xxx_count字段

Server的all_ip字段不能自动更新

目前使用DoCheckToWrite()函数来些人Server的all_ip字段(根据 ip_list 字段),但是如果IP链接的设备有更新,all_ip只能等到下次更新Server时才能被更新。所以需要把更新all_ip的功能移到IPAdress类里面。

批量查询

比如批量查IP,格式为一行一个IP,或者以逗号分隔

工单自动指派(排班)

在template-base中实现此功能,直接在用户创建工单之后就指派(跳过了审批步骤,因此修改了UserRequest的lifecycle,指派状态的工单可以被拒绝)
根据 周数/人数 的余数来确定指派人。在配置文件中配置,例如:

‘assigned’ => array('person1_id', 'person2_id', 'person3_id')

即,当前周数除length(assigned)余数为0时,分配给person1..以此类推。

另外,某些类型工单可能由某个人做,配置文件:

'special' => array('RDS申请'=>'person1_id', 'Redis申请'=>'person2_id'),

代码中首先读取special,然后判断当前类型是否在special里,如果是,执行special指派,否则,按周排班

联系人应该只对应app

域名等资源链接到app,app链接到联系人,如果域名也链接到联系人,关系图会显得混乱,因此考虑不适用 lnkContactToFunctionalCI,新建 lnkContactToApplicationSolution

cmdb服务器信息及监控审计

计划使用zabbix

1. zabbix auto register配置inventory mode为automatic
2. zabbix 新增user parameter : lld_asset[*],自定义脚本获取assettag(虚拟机为UUID,物理机为serial number), 品牌,型号等
3. zabbix inventory增加这些信息
4. 调用itop api,获取cmdb中记录的所有server的盘点号,去查zabbix中是否已经监控,并获取服务器的主机名、assettag、型号等信息,然后将资产信息及监控状态写回itop
5. 获取zabbix所有机器列表,利用cmdbApi的find.php接口,判断已监控的机器是否录入了cmdb,结果发出邮件。
6. 4,5两个步骤每天夜里执行一次即可,第二天根据邮件人工处理
7. itop新建审计类型,审计监控状态
7. 4,5,两步应提供批量方式和指定assettag方式 (处理完第6步之后,可以手动更新itop审计结果)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.