监控目标、监控目标分组、监控模板、资产

对于hosts表(存储host主机,template模板,proxy,host prototype),host名称,name可读名,status来表明该项的类型和状态,flags自动发现标志,inventory_mode资产模式,templateid??四种接口的状态信息,错误信息,host页面ipmi菜单页的相关配置,加密菜单页的内容,停机维护信息,proxy_hostid在host页面指定proxy,proxy_address在proxy页面,autocompress proxy与server之间数据是否自动压缩??

host_tag表,tag信息

interface表,存储四种接口的信息

interface_snmp,关于snmp接口的一个子表

hstgrp主机组以及模板组,只存储名称,自动发现flags,是否内部internal,这里不清楚,有些组一开始就存在,称为内部组

hosts_groups主机和主机组关系,模板和模板组的关系

hosts_templates主机和模板的关系,模板和模板的模板的关系

host_inventory即host的inventory菜单页的内容

监控项,触发器,图表

对于items表,type,hostid(主机或模板id),interfaceid(接口id)可为空,params参数(可存formula计算式,还有?),value_type数据类型,valuemapid,units,delay(默认间隔),history,trends,flags(自动发现标志,即是发现的还是原生的还是什么的),inventory_link(Populates host inventory field),templateid(生成本记录的模板的item ID,这里有点绕,主机级的item,如果有原型,这个item并不会存储原型的id,这个原型会存储它的上一级模板的itemid,一直到最原始的itemid),trapper_hosts(该指标允许哪些设备(IP地址)主动回传,相当于认证,在http agent和trapper类型里都有该选项),logtimefmt(日志型item的日志时间格式),master_itemid,authtype(SSH,HTTP有),output_format(httpitem的采集数据形式Store raw,Convert to JSON),lifetime(lld的属性,发现的设备消失后,原本的数据保留的时间),evaltype(用在discovery rule的filter里),discover(自动发现模型状态,是原型的属性,表示发现后是否生成,文档详细),formula(这里的公式指的是discovery rule里的filter里的条件公式)

首先,item并非host专属,template也有

template和host都有lld,其中的item prototype也在表中

在items表中,有item和item prototype,还有discovery rule,snmp类型的discovery rule在表里的snmp_oid还会存储所拥有的原型的oid

item_rtdata生效监控项运行时最新状态表,state最新状态(normal,not support),最新日志文件的大小、修改时间,最新的错误信息(这几个顺带就采集了)

item_preproc表,step,type(就是预处理的类型),params,error_handler(是否自定义处理错误,以及处理类型),error_handler_params

自然不止item的预处理,包括原型和自动发现规则的预处理

applications表,hostid(MUL),name,flags(自动发现标志,注意所有flags的类型都一样,只不过表并不包含所有flags)

items_applications表,applicationid,itemid

application_template表,applicationid,templateid

application及生成它的模板的application之间的关系

triggers表,opdata带扩展变量的运行时数据(就是Operational data),value(表达式求值的结果ok,problem),priority(severity),comments描述,recovery_mode(expression,recovery_expression,none),type事件生成方式(单个,多重),correlation_mode(关闭所有问题,关闭所有满足标签值的问题),templateid(生成本记录的监控模板的trigger ID),flags(数据来源),status(启用状态),state(可用状态),url,discover(发现原型状态)

trigger表为啥没有hostid,expression中存了hostid,是吗?

functions表,itemid(函数操作的itemid),triggerid(函数所属的triggerid),name(function的类型,在trigger里的表达式编辑中),parameter(参数组合)

trigger_depends表,triggerid_down(依赖的),triggerid_up(被依赖的)

trigger_tag表,triggerid,tag,value

graphs表,templateid(生成本记录的模板图表id),flags(自动发现标志, a plain graph,a discovered graph.),discover(图表原型的属性)

graphs_items表,graphid,itemid,drawtype(绘制类型,点,直线),type(图表指标项类型,默认simple,只有在pie和exploded类型图表可选graph sum?图形总数?),calc_fnc(显示的指标值类型,min,max,avg)

设备与服务主动探测、设备主动连接

对于drules设备自动发现规则表,proxy_hostid(执行本规则的网关ID),iprange(ip发现范围),nextcheck

dchecks自动发现内容表,druleid,type(检测的协议类型),ports(检测的端口列表),key_(snmp和agent的key或oid),uniq(设备唯一性规则),host_source(取值来源,dns,ip,检测所得值,这里界面上是zabbix agent system.username,是否能自行修改??),name_source(取值来源,不特定?这里界面上是主机名称,dns,ip,检测所得值)

dhosts自动发现设备表,dhostid(探测到的设备ID),druleid,lastup(最近正常的时间),lastdown(最近异常的时间)

dservices自动发现服务表,dserviceid,dhostid,value(返回值),dcheckid

autoreg_host自动注册设备表,autoreg_hostid(设备id),proxy_hostid,host(设备名称),listen_ip,listen_port,listen_dns,host_metadata(设备元数据?),flags(连接地址标志),tls_accepted(允许的主动连接入站连接方式)

监控指标自动探测

lld_macro_path宏路径表,itemid(lld_rule在item里),lld_macro,path(lld返回结果中的位置定义,JSONPath)

item_condition探测过滤条件表(就是lld的filter),itemid(lld_rule id),macro,value

group_prototype 不要了 host_prototype也不要了

存储两类数据

主机组模型:由主机prototype发现新主机后,创建主机组。有效的字段为name组名称,hostid主机原型,templateid??

主机模型与创建的主机组的关系:有效字段为groupid新建组id,hostid原型,templateid关系id??

application_prototype表,name,itemid(lld_rule id),templateid??

item_application_prototype表,item原型和application原型的关系,itemid(lld_rule id),application_prototypeid

lld_override已探测对象重定义表,itemid(lld_rule id),name,step,evaltype,formula,stop(条件满足后是否停止后续重定义步骤)

lld_override_condition

lld_override_operation

lld_override_opstatus启用状态

lld_override_opdiscover是否继续探测

lld_override_opperiod更新周期,在override里的operation里的update interval

lld_override_ophistory重定义已探测item监控结果留存时长

lld_override_optrends

lld_override_opseverity严重级别

lld_override_optag

lld_override_optemplate重定义已探测host对应的模板

lld_override_opinventory重定义已探测host资产连接模式,inventory_mode

item_discovery

lld_rule和item_prototype的关系:itemid(原型id),parent_itemid(lld_rule id)

item原型和发现的item的关系:itemid(就是item),parent_itemid(原型id)

application_discovery已发现并自动生成的application表,applicationid,application_prototypeid

trigger_discovery已发现并自动生成的trigger表,基本信息已经存入trigger表,发现flags字段设置为4了,这里额外记录是为了:1.表示trigger和trigger prototype的关系 2.已发现的trigger的生命周期管理lastcheck,ts_delete(删除时间)

group_discovery已发现并自动生成的设备分组表,基本信息已存入group表,作用同上

host_discovery已发现并自动生成的设备表

lld_rule和host原型的关系:hostid(原型id),parent_itemid(lld_rule id)

host原型和生成的主机的关系:hostid(就是主机id),parent_hostid(主机原型id)

interface_discovery已发现并自动生成的设备接口表,interfaceid,parent_interfaceid

graph_discovery已发现并制动生成的监控数据图表表,graphid,parent_graphid,

事件响应

对于alerts警告,不同的alert可以使用相同的action(MUL),且必须有action(一个action);响应的事件event和出发该告警的事件p_event是不同的event,event不能为空,p_event可以为空;alerts表里acknowledge是对发出该告警的事件的确认,alert本身是一个动作???

MUL:action,clock,eventid??,mediatypeid,status,userid,p_eventid,acknowledgeid

告警alert和故障problem的关系?

对于event事件,会指定source事件来源(trigger,discovery,autoregistration,internal),以及来源的对象的种类object(trigger,discovered host,discovered service,auto-registrated host,item,lld rule)???事件值value??(对problem进行确认,会改变event的acknowledge)

对于actions动作,有一个eventsource(时间来源),conditions条件表里actionid是MUL,一个action可有多个condition,condition有conditiontype,这里的定义很多,指定条件类型,后有operator运算符和两个value;一个action可以有多个operation,对于operation操作表里actionid是MUL,recovery指定响应动作类型(异常处理,异常恢复,变更确认),operationtype指定操作类型(发送信息,执行命令。。。)operation的detail在哪里,一部分在operation表里(步骤,类型),另外的以情况分布:opconditions表的operationid是MUL,opcondition与condition不是一个表;opmessage表的主键同时也是外键:operationid,表包含通知的主题和内容,以及是否使用默认通知(默认使用),mediatypeid;opmessage_usr/_grp存储发送信息到的用户或用户组;opcommand三张表同理,opcommand表包含命令类型和内容,scriptid是MUL,且可为空(opcommand_hst的hostid为啥可为空???测试一下?);opgroup,optemplate,opinventory,

operations表中动作条件计算类型evaltype是什么

Key passphrase是指用于保护加密密钥的密码短语或密码短语,存储在password里

media_type媒介类型表,对应media type页面,exec_path,exec_paramscontent_type就是Message format,消息格式

webhook类型Include event menu entry,Menu entry name,Menu entry URL,process tag

media_type_message消息模板表,一个media_type可有多个模板,有主题和内容的同时,还存储了时间来源eventsource,事件响应动作模式recovery

media_type_param表存储的是webhook类型配置的参数

media表,userid和mediatypeid都是MUL,存储发送地址,状态,severity,period,看着像媒体的一个汇总表,哪里用到了

escalation升级执行表???,这个好像不是普通的升级,存储了actionid,triggerid,eventid异常事件,r_eventid恢复事件,nextcheck下次检查时间,步骤,itemid,状态(有4种),acknowledgeid

事件生成与合并

对于event事件,会指定source事件来源(trigger,discovery,autoregistration,internal),以及来源的对象的种类object(trigger,discovered host,discovered service,auto-registrated host,item,lld rule)???以及objectid??事件值value??(对problem进行确认,会改变event的acknowledge)

event_tag表,存储eventid,tag,value

event_recovery表,eventid,恢复事件id,关联id,关联事件id,关闭本事件的用户id

event_suppress表,eventid,maintenanceid,suppress_until抑制到的时间

对于problem问题表,主键eventid也是外键,同样有事件来源source,来源对象种类,来源对象id,是否已确认,恢复事件的id和时间,关闭该problem的用户id,correlationid关联id

问题页面中的action存在哪里??

problem_tag表,存储eventid,tag和value

和event_tag表的关系?

对于acknowledges确认表,对应problem页面的确认配置,userid对应当前操作用户,存储操作的动作的和(unacknowledge event是在确认后再次修改为未确认),一次确认中可有多种操作,action列存储操作的和,更新前的严重级和更新后的

确认页面有各用户对该问题的操作记录history,存在哪里的??

对于correlation关联表,名称(unique),描述,evaltype条件的组合计算类型,定制条件表达式formula,status

corr_operation表,correlationid,type就两种

corr_condition表,correlationid,type有6种,只存了各个condition的type

corr_condition_group表,operator(等或不等),groupid

corr_condition_tag表,因为condition里可以限制tag名等于指定值,只存这个tag指定值

corr_condition_tagvalue表,限制指定tag的值符合指定条件,存tag,value,operator(4种)

corr_condition_tagpair表,新旧标签对,就存新旧标签名

监测结果

对于history表,只存储监控项id,采集值,采集时间(这个表存的float类型)

history_log表,存log类型??itemid,logeventid??source,value指标值,日志时间戳,采集时间,严重等级

history_str表,itemid,采集时间,值

history_text表,同上

history_uint表,同上

以上表都没有主键

对于trends表,itemid,时间,数据条数,该计时段最小最大平均值

trends_uint表,同上

这两个表主键都为itemid,clock

停机维护

对于maintenances表,name(unique),maintenancetype(两种),描述,开始,结束,这里的开始结束是指开始和结束执行维护周期的时间,tags_evaltype(and/or,or)

maintenances_groups表,maintenanceid,groupid主机组

maintenances_hosts表,maintenanceid,hostid

maintenances_tag表,maintenanceid,tag,operator,value

maintenances_windows表,维护周期,maintenanceid,timeperiodid(用了timeperiods表)

正则,扩展变量

对于regexps表,name,test_string测试字符串

expressions表,regexpid,expression表达式字符串,expression_type(5种类型),exp_delimiter分隔符,case_sensitive是否区分大小写

对于globalmacro表,macro,value,描述,type(text macro,secret macro前台显示为几个点)

对于hostmacro表,hostid,macro,value,描述,type同上

对于globalvars表,snmp_lastsize上次已处理的文件长度???

用户及权限

对于users表,存储了别名alias,name,surname姓,密码,url??自动登录,自动登出,用户语言,refresh刷新啥?type(3种),主题,最近登陆失败次数,最近登陆失败ip,最近登陆失败时间,每页显示记录行数??

对于usrgrp表,name,gui_access(4种),status(0,1),debug_mode(0,1是否启用)

user_groups表,usrgrpid,userid

对于rights权限表,groupid用户组id,id主机分组?,permission(禁止,只读,读写)

对于profiles配置表,存储用户运行时配置和用户偏好信息。

userid,idx配置分组名称,idx2具体配置索引???value_id配置值id类型??value_int配置值int类型??value_str配置值string类型??source??type(id,int,string)

对于tag_filter表,存储用户分组的基于标签的访问权限。用来使用户组查看满足等值标签条件的故障信息(故障标签与表中标签同名等值)??

若标签值为null,则查看主机组的同名标签故障信息

usrgrpid,groupid,tag,value

其他

对于timeperiods时间周期表,timeperiod_type(一次,每天,每周,每月),day只用于以月为周期的period,dayofweek一周中的第几天(二进制,周1是1,周二是10,周三是100),month(二进制或计算后的二进制,1月和3月生效,则为1+100 =101 = 5),every(type=0时,every固定1?type=2,3时,自定义,每几天或每几周,type=4时,如果date是day of month则为1,date是day of week则1为第一周,2为第二周,5为最后一周),start_date是一次性维护的开始时间,period是停机维护持续时间,start_time日,周,月维护的开始时间(0代表00:00)

对于config通用配置表,没法读

对于config_autoreg_tls设备自动注册tls配置表,the_psk_indentity,the_psk

对于housekeeper数据清理配置表??,tablename表名,filed字段名,value

对于ids表id的表,table_name表名,field_name字段名,nextid下一个id

记录各个表当前最大的id,以确保多用户插入数据时保持id正确自增

对于valuemaps值映射表,name

mappings值映射内容表,valuemapid(MUL),value名称,newvalue值

对于scripts脚本表,name,command(varchar255),host_access执行脚本所需主机访问权限(2读,3读写),usrgrpid允许运行该脚本的用户组id(0为全部),groupid主机组id,comfirmation在console前端运行时弹出的确认信息??type(0script,1IPMI),execute_on