ZABBIX數據庫表結構解析


zabbix數據庫表結構的重要性

想理解zabbix的前端代碼、做深入的二次開發,甚至的調優,那就不能不了解數據庫的表結構了。

我們這里采用的zabbix1.8、mysql,所以簡單的說下我們mysql這邊的表結構,其他環境不保證正確。

單表分析

actions

actions表記錄了當觸發器觸發時,需要采用的動作。

mysql> desc actions;
+---------------+---------------------+------+-----+---------+-------+
| Field         | Type                | Null | Key | Default | Extra |
+---------------+---------------------+------+-----+---------+-------+
| actionid      | bigint(20) unsigned | NO   | PRI | 0       |       |
| name          | varchar(255)        | NO   |     |         |       |
| eventsource   | int(11)             | NO   | MUL | 0       |       |
| evaltype      | int(11)             | NO   |     | 0       |       |
| status        | int(11)             | NO   |     | 0       |       |
| esc_period    | int(11)             | NO   |     | 0       |       |
| def_shortdata | varchar(255)        | NO   |     |         |       |
| def_longdata  | blob                | NO   |     | NULL    |       |
| recovery_msg  | int(11)             | NO   |     | 0       |       |
| r_shortdata   | varchar(255)        | NO   |     |         |       |
| r_longdata    | blob                | NO   |     | NULL    |       |
+---------------+---------------------+------+-----+---------+-------+

alerts

alerts 表保存了歷史的告警事件,可以從這個表里面去做一些統計分析,例如某個部門、 
某人、某類時間的告警統計,以及更深入的故障發生、恢復時間,看你想怎么用了。

mysql> desc alerts;
+-------------+---------------------+------+-----+---------+-------+| Field       | Type                | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+| alertid     | bigint(20) unsigned | NO   | PRI | 0       |       |
| actionid    | bigint(20) unsigned | NO   | MUL | 0       |       |
| eventid     | bigint(20) unsigned | NO   | MUL | 0       |       |
| userid      | bigint(20) unsigned | NO   | MUL | 0       |       |
| clock       | int(11)             | NO   | PRI | 0       |       |
| mediatypeid | bigint(20) unsigned | NO   | MUL | 0       |       |
| sendto      | varchar(100)        | NO   |     |         |       |
| subject     | varchar(255)        | NO   |     |         |       |
| message     | blob                | NO   |     | NULL    |       |
| status      | int(11)             | NO   | MUL | 0       |       |
| retries     | int(11)             | NO   |     | 0       |       |
| error       | varchar(128)        | NO   |     |         |       |
| nextcheck   | int(11)             | NO   |     | 0       |       |
| esc_step    | int(11)             | NO   |     | 0       |       |
| alerttype   | int(11)             | NO   |     | 0       |       |
+-------------+---------------------+------+-----+---------+-------+

config

config表保存了全局的參數,前端包括后端也是,很多情況下會查詢改表的參數的,例如用戶的自定義主題、 
登陸認證類型等,非常重要,

不過對我們做數據分析意義不大。

mysql> desc config;
+-------------------------+---------------------+------+-----+-----------------+-------+
| Field                   | Type                | Null | Key | Default         | Extra |
+-------------------------+---------------------+------+-----+-----------------+-------+
| configid                | bigint(20) unsigned | NO   | PRI | 0               |       |
| alert_history           | int(11)             | NO   |     | 0               |       |
| event_history           | int(11)             | NO   |     | 0               |       |
| refresh_unsupported     | int(11)             | NO   |     | 0               |       |
| work_period             | varchar(100)        | NO   |     | 1-5,00:00-24:00 |       |
| alert_usrgrpid          | bigint(20) unsigned | NO   |     | 0               |       |
| event_ack_enable        | int(11)             | NO   |     | 1               |       |
| event_expire            | int(11)             | NO   |     | 7               |       |
| event_show_max          | int(11)             | NO   |     | 100             |       |
| default_theme           | varchar(128)        | NO   |     | default.css     |       |
| authentication_type     | int(11)             | NO   |     | 0               |       |
| ldap_host               | varchar(255)        | NO   |     |                 |       |
| ldap_port               | int(11)             | NO   |     | 389             |       |
| ldap_base_dn            | varchar(255)        | NO   |     |                 |       |
| ldap_bind_dn            | varchar(255)        | NO   |     |                 |       |
| ldap_bind_password      | varchar(128)        | NO   |     |                 |       |
| ldap_search_attribute   | varchar(128)        | NO   |     |                 |       |
| dropdown_first_entry    | int(11)             | NO   |     | 1               |       |
| dropdown_first_remember | int(11)             | NO   |     | 1               |       |
| discovery_groupid       | bigint(20) unsigned | NO   |     | 0               |       |
| max_in_table            | int(11)             | NO   |     | 50              |       |
| search_limit            | int(11)             | NO   |     | 1000            |       |
+-------------------------+---------------------+------+-----+-----------------+-------+

functions

function 表時非常重要的一個表了,記錄了trigger中使用的表達式,例如max、last、nodata等函數。

但其實這個表說他重要時因為同時記錄了trigger、itemid,那就可以做一些API的開發了,例如根據 
IP 茶香改IP的所有trigger,我記得1.8的版本的API是無法實現我說的這個功能的,那只能利用 
function表去自己查詢了。

mysql> desc functions ;
+------------+---------------------+------+-----+---------+-------+
| Field      | Type                | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+-------+
| functionid | bigint(20) unsigned | NO   | PRI | 0       |       |
| itemid     | bigint(20) unsigned | NO   | MUL | 0       |       |
| triggerid  | bigint(20) unsigned | NO   | MUL | 0       |       |
| lastvalue  | varchar(255)        | YES  |     | NULL    |       |
| function   | varchar(12)         | NO   |     |         |       |
| parameter  | varchar(255)        | NO   |     | 0       |       |
+------------+---------------------+------+-----+---------+-------+

graphs

graphs 表包含了用戶定義的圖表信息,同樣的玩法可以是根據IP去查詢改IP下的所有圖表, 
不過似乎是有API的,我只是舉例而已。

mysql> desc graphs;
+------------------+---------------------+------+-----+---------+-------+
| Field            | Type                | Null | Key | Default | Extra |
+------------------+---------------------+------+-----+---------+-------+
| graphid          | bigint(20) unsigned | NO   | PRI | 0       |       |
| name             | varchar(128)        | NO   | MUL |         |       |
| width            | int(11)             | NO   |     | 0       |       |
| height           | int(11)             | NO   |     | 0       |       |
| yaxismin         | double(16,4)        | NO   |     | 0.0000  |       |
| yaxismax         | double(16,4)        | NO   |     | 0.0000  |       |
| templateid       | bigint(20) unsigned | NO   |     | 0       |       |
| show_work_period | int(11)             | NO   |     | 1       |       |
| show_triggers    | int(11)             | NO   |     | 1       |       |
| graphtype        | int(11)             | NO   |     | 0       |       |
| show_legend      | int(11)             | NO   |     | 0       |       |
| show_3d          | int(11)             | NO   |     | 0       |       |
| percent_left     | double(16,4)        | NO   |     | 0.0000  |       |
| percent_right    | double(16,4)        | NO   |     | 0.0000  |       |
| ymin_type        | int(11)             | NO   |     | 0       |       |
| ymax_type        | int(11)             | NO   |     | 0       |       |
| ymin_itemid      | bigint(20) unsigned | NO   |     | 0       |       |
| ymax_itemid      | bigint(20) unsigned | NO   |     | 0       |       |
+------------------+---------------------+------+-----+---------+-------+

graphs_items

graphs_items 保存了屬於某個圖表的所有的監控項信息。

mysql> desc graphs_items;
+-------------+---------------------+------+-----+---------+-------+
| Field       | Type                | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| gitemid     | bigint(20) unsigned | NO   | PRI | 0       |       |
| graphid     | bigint(20) unsigned | NO   | MUL | 0       |       |
| itemid      | bigint(20) unsigned | NO   | MUL | 0       |       |
| drawtype    | int(11)             | NO   |     | 0       |       |
| sortorder   | int(11)             | NO   |     | 0       |       |
| color       | varchar(6)          | NO   |     | 009600  |       |
| yaxisside   | int(11)             | NO   |     | 1       |       |
| calc_fnc    | int(11)             | NO   |     | 2       |       |
| type        | int(11)             | NO   |     | 0       |       |
| periods_cnt | int(11)             | NO   |     | 5       |       |
+-------------+---------------------+------+-----+---------+-------+

groups

groups 沒啥說的,都懂,就是保存了組名和組的ID 。

mysql> desc groups ;+----------+---------------------+------+-----+---------+-------+| Field    | Type                | Null | Key | Default | Extra |+----------+---------------------+------+-----+---------+-------+| groupid  | bigint(20) unsigned | NO   | PRI | 0       |       |
| name     | varchar(64)         | NO   | MUL |         |       |
| internal | int(11)             | NO   |     | 0       |       |+----------+---------------------+------+-----+---------+-------+

history 、history_str、history_log 、history_uint_sync等

這部分表都差不多,唯一不同的是保存的數據類型,history_str保存的數據 
類型就算str即字符類型的。這個是和采集時設置的數據類型一致的。

需要注意的時,因為history表有這么多的類型,那自己寫報表系統等去查詢 
數據時,就需要判斷下數據的采集類型,如果查錯了表,那肯定時沒有數據的。

mysql> desc history;
+--------+---------------------+------+-----+---------+-------+| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+| itemid | bigint(20) unsigned | NO   | PRI | 0       |       |
| clock  | int(11)             | NO   | PRI | 0       |       |
| value  | double(16,4)        | NO   |     | 0.0000  |       |
+--------+---------------------+------+-----+---------+-------+

mysql> desc history_str;+--------+---------------------+------+-----+---------+-------+| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+| itemid | bigint(20) unsigned | NO   | MUL | 0       |       |
| clock  | int(11)             | NO   |     | 0       |       |
| value  | varchar(255)        | NO   |     |         |       |
+--------+---------------------+------+-----+---------+-------+

其他的類似,不貼了。

trends、trends_uint

trends 也是保存了歷史數據用的,和history不同的時,trends表僅僅保存了 
小時平均的值,即你可以理解為是history表的數據壓縮。所以trends表也有 
很多的類型,對應history。

值的注意的trends和history表這兩類表數據量都非常大,我們一天大概就要有 
40G 的數據。

所以注意定是去做壓縮、刪除。

mysql> desc trends;
+-----------+---------------------+------+-----+---------+-------+| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+| itemid    | bigint(20) unsigned | NO   | PRI | 0       |       |
| clock     | int(11)             | NO   | PRI | 0       |       |
| num       | int(11)             | NO   |     | 0       |       |
| value_min | double(16,4)        | NO   |     | 0.0000  |       |
| value_avg | double(16,4)        | NO   |     | 0.0000  |       |
| value_max | double(16,4)        | NO   |     | 0.0000  |       |
+-----------+---------------------+------+-----+---------+-------+

mysql> desc trends_uint;+-----------+---------------------+------+-----+---------+-------+| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+| itemid    | bigint(20) unsigned | NO   | PRI | 0       |       |
| clock     | int(11)             | NO   | PRI | 0       |       |
| num       | int(11)             | NO   |     | 0       |       |
| value_min | bigint(20) unsigned | NO   |     | 0       |       |
| value_avg | bigint(20) unsigned | NO   |     | 0       |       |
| value_max | bigint(20) unsigned | NO   |     | 0       |       |
+-----------+---------------------+------+-----+---------+-------+

hosts

hosts 非常重要,保存了每個agent、proxy等的IP 、hostid、狀態、IPMI等信息, 
幾乎是記錄了一台設備的所有的信息。

當然hostid是當中非常非常重要的信息,其他的表一般都時關聯hostid的。

mysql> desc hosts;
+--------------------+---------------------+------+-----+-----------+-------+
| Field              | Type                | Null | Key | Default   | Extra |
+--------------------+---------------------+------+-----+-----------+-------+
| hostid             | bigint(20) unsigned | NO   | PRI | 0         |       |
| proxy_hostid       | bigint(20) unsigned | NO   | MUL | 0         |       |
| host               | varchar(64)         | NO   | MUL |           |       |
| dns                | varchar(64)         | NO   |     |           |       |
| useip              | int(11)             | NO   |     | 1         |       |
| ip                 | varchar(39)         | NO   |     | 127.0.0.1 |       |
| port               | int(11)             | NO   |     | 10050     |       |
| status             | int(11)             | NO   | MUL | 0         |       |
| disable_until      | int(11)             | NO   |     | 0         |       |
| error              | varchar(128)        | NO   |     |           |       |
| available          | int(11)             | NO   |     | 0         |       |
| errors_from        | int(11)             | NO   |     | 0         |       |
| lastaccess         | int(11)             | NO   |     | 0         |       |
| inbytes            | bigint(20) unsigned | NO   |     | 0         |       |
| outbytes           | bigint(20) unsigned | NO   |     | 0         |       |
| useipmi            | int(11)             | NO   |     | 0         |       |
| ipmi_port          | int(11)             | NO   |     | 623       |       |
| ipmi_authtype      | int(11)             | NO   |     | 0         |       |
| ipmi_privilege     | int(11)             | NO   |     | 2         |       |
| ipmi_username      | varchar(16)         | NO   |     |           |       |
| ipmi_password      | varchar(20)         | NO   |     |           |       |
| ipmi_disable_until | int(11)             | NO   |     | 0         |       |
| ipmi_available     | int(11)             | NO   |     | 0         |       |
| snmp_disable_until | int(11)             | NO   |     | 0         |       |
| snmp_available     | int(11)             | NO   |     | 0         |       |
| maintenanceid      | bigint(20) unsigned | NO   |     | 0         |       |
| maintenance_status | int(11)             | NO   |     | 0         |       |
| maintenance_type   | int(11)             | NO   |     | 0         |       |
| maintenance_from   | int(11)             | NO   |     | 0         |       |
| ipmi_ip            | varchar(64)         | NO   |     | 127.0.0.1 |       |
| ipmi_errors_from   | int(11)             | NO   |     | 0         |       |
| snmp_errors_from   | int(11)             | NO   |     | 0         |       |
| ipmi_error         | varchar(128)        | NO   |     |           |       |
| snmp_error         | varchar(128)        | NO   |     |           |       |
+--------------------+---------------------+------+-----+-----------+-------+

其實1.0的版本中,是沒有這么多的字段的,好像只有hostid、host、status、disable_until 
等幾個字段,但1.8已經如此豐富了。

hosts_groups

hosts_groups 保存了host(主機)與host groups(主機組)的關聯關系。

這部分信息可以在我們自己做一些批量查詢,例如查詢關聯到某個主機組的所有 
設備的IP 、存活狀態等,進一步去查詢該批量設備的load、IO、mem等統計信息。

我之前做的一個簡單的報表就是例如了這部分的信息去查詢某個業務線下所有設備 
的一周統計信息,當然了是在同一個主機組或者模版組才可以的。

mysql> desc hosts_groups ;+-------------+---------------------+------+-----+---------+-------+| Field       | Type                | Null | Key | Default | Extra |+-------------+---------------------+------+-----+---------+-------+| hostgroupid | bigint(20) unsigned | NO   | PRI | 0       |       |
| hostid      | bigint(20) unsigned | NO   | MUL | 0       |       |
| groupid     | bigint(20) unsigned | NO   | MUL | 0       |       |+-------------+---------------------+------+-----+---------+-------+

items

items 表保存了采集項的信息。

mysql> desc items ;
+-----------------------+---------------------+------+-----+---------+-------+| Field                 | Type                | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------+-------+| itemid                | bigint(20) unsigned | NO   | PRI | 0       |       |
| type                  | int(11)             | NO   |     | 0       |       |
| snmp_community        | varchar(64)         | NO   |     |         |       |
| snmp_oid              | varchar(255)        | NO   |     |         |       |
| snmp_port             | int(11)             | NO   |     | 161     |       |
| hostid                | bigint(20) unsigned | NO   | MUL | 0       |       |
| description           | varchar(255)        | NO   |     |         |       |
| key_                  | varchar(255)        | NO   |     |         |       |
| delay                 | int(11)             | NO   |     | 0       |       |
| history               | int(11)             | NO   |     | 90      |       |
| trends                | int(11)             | NO   |     | 365     |       |
| lastvalue             | varchar(255)        | YES  |     | NULL    |       |
| lastclock             | int(11)             | YES  |     | NULL    |       |
| prevvalue             | varchar(255)        | YES  |     | NULL    |       |
| status                | int(11)             | NO   | MUL | 0       |       |
| value_type            | int(11)             | NO   |     | 0       |       |
| trapper_hosts         | varchar(255)        | NO   |     |         |       |
| units                 | varchar(10)         | NO   |     |         |       |
| multiplier            | int(11)             | NO   |     | 0       |       |
| delta                 | int(11)             | NO   |     | 0       |       |
| prevorgvalue          | varchar(255)        | YES  |     | NULL    |       |
| snmpv3_securityname   | varchar(64)         | NO   |     |         |       |
| snmpv3_securitylevel  | int(11)             | NO   |     | 0       |       |
| snmpv3_authpassphrase | varchar(64)         | NO   |     |         |       |
| snmpv3_privpassphrase | varchar(64)         | NO   |     |         |       |
| formula               | varchar(255)        | NO   |     | 1       |       |
| error                 | varchar(128)        | NO   |     |         |       |
| lastlogsize           | int(11)             | NO   |     | 0       |       |
| logtimefmt            | varchar(64)         | NO   |     |         |       |
| templateid            | bigint(20) unsigned | NO   | MUL | 0       |       |
| valuemapid            | bigint(20) unsigned | NO   |     | 0       |       |
| delay_flex            | varchar(255)        | NO   |     |         |       |
| params                | text                | NO   |     | NULL    |       |
| ipmi_sensor           | varchar(128)        | NO   |     |         |       |
| data_type             | int(11)             | NO   |     | 0       |       |
| authtype              | int(11)             | NO   |     | 0       |       |
| username              | varchar(64)         | NO   |     |         |       |
| password              | varchar(64)         | NO   |     |         |       |
| publickey             | varchar(64)         | NO   |     |         |       |
| privatekey            | varchar(64)         | NO   |     |         |       |
| mtime                 | int(11)             | NO   |     | 0       |       |
+-----------------------+---------------------+------+-----+---------+-------+

media

media 保存了某個用戶的media配置項,即對應的告警方式。

mysql> desc media;
+-------------+---------------------+------+-----+-----------------+-------+
| Field       | Type                | Null | Key | Default         | Extra |
+-------------+---------------------+------+-----+-----------------+-------+
| mediaid     | bigint(20) unsigned | NO   | PRI | 0               |       |
| userid      | bigint(20) unsigned | NO   | MUL | 0               |       |
| mediatypeid | bigint(20) unsigned | NO   | MUL | 0               |       |
| sendto      | varchar(100)        | NO   |     |                 |       |
| active      | int(11)             | NO   |     | 0               |       |
| severity    | int(11)             | NO   |     | 63              |       |
| period      | varchar(100)        | NO   |     | 1-7,00:00-23:59 |       |
+-------------+---------------------+------+-----+-----------------+-------+

media_type

media_type 表與media 表不同的是media_type 記錄了某個告警方式對應的腳步等的存放路徑。

mysql> desc media_type;+-------------+---------------------+------+-----+---------+-------+| Field       | Type                | Null | Key | Default | Extra |+-------------+---------------------+------+-----+---------+-------+| mediatypeid | bigint(20) unsigned | NO   | PRI | 0       |       |
| type        | int(11)             | NO   |     | 0       |       |
| description | varchar(100)        | NO   |     |         |       |
| smtp_server | varchar(255)        | NO   |     |         |       |
| smtp_helo   | varchar(255)        | NO   |     |         |       |
| smtp_email  | varchar(255)        | NO   |     |         |       |
| exec_path   | varchar(255)        | NO   |     |         |       |
| gsm_modem   | varchar(255)        | NO   |     |         |       |
| username    | varchar(255)        | NO   |     |         |       |
| passwd      | varchar(255)        | NO   |     |         |       |+-------------+---------------------+------+-----+---------+-------+

media 與media_type 通過mediatypeid 鍵關聯。

profiles

profiles 表保存了用戶的一些配置項。

mysql> desc profiles ;
+-----------+---------------------+------+-----+---------+-------+
| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| profileid | bigint(20) unsigned | NO   | PRI | 0       |       |
| userid    | bigint(20) unsigned | NO   | MUL | 0       |       |
| idx       | varchar(96)         | NO   |     |         |       |
| idx2      | bigint(20) unsigned | NO   |     | 0       |       |
| value_id  | bigint(20) unsigned | NO   |     | 0       |       |
| value_int | int(11)             | NO   |     | 0       |       |
| value_str | varchar(255)        | NO   |     |         |       |
| source    | varchar(96)         | NO   |     |         |       |
| type      | int(11)             | NO   |     | 0       |       |
+-----------+---------------------+------+-----+---------+-------+

rights

rights 表保存了用戶組的權限信息,zabbix的權限一直也是我理不太清的地方, 
其實這個表里面有詳細的記錄。

mysql> desc rights;
+------------+---------------------+------+-----+---------+-------+
| Field      | Type                | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+-------+
| rightid    | bigint(20) unsigned | NO   | PRI | 0       |       |
| groupid    | bigint(20) unsigned | NO   | MUL | 0       |       |
| permission | int(11)             | NO   |     | 0       |       |
| id         | bigint(20) unsigned | YES  | MUL | NULL    |       |
+------------+---------------------+------+-----+---------+-------+

screeens

screeens 表保存了用戶定義的圖片。

mysql> desc graphs;
+------------------+---------------------+------+-----+---------+-------+
| Field            | Type                | Null | Key | Default | Extra |
+------------------+---------------------+------+-----+---------+-------+
| graphid          | bigint(20) unsigned | NO   | PRI | 0       |       |
| name             | varchar(128)        | NO   | MUL |         |       |
| width            | int(11)             | NO   |     | 0       |       |
| height           | int(11)             | NO   |     | 0       |       |
| yaxismin         | double(16,4)        | NO   |     | 0.0000  |       |
| yaxismax         | double(16,4)        | NO   |     | 0.0000  |       |
| templateid       | bigint(20) unsigned | NO   |     | 0       |       |
| show_work_period | int(11)             | NO   |     | 1       |       |
| show_triggers    | int(11)             | NO   |     | 1       |       |
| graphtype        | int(11)             | NO   |     | 0       |       |
| show_legend      | int(11)             | NO   |     | 0       |       |
| show_3d          | int(11)             | NO   |     | 0       |       |
| percent_left     | double(16,4)        | NO   |     | 0.0000  |       |
| percent_right    | double(16,4)        | NO   |     | 0.0000  |       |
| ymin_type        | int(11)             | NO   |     | 0       |       |
| ymax_type        | int(11)             | NO   |     | 0       |       |
| ymin_itemid      | bigint(20) unsigned | NO   |     | 0       |       |
| ymax_itemid      | bigint(20) unsigned | NO   |     | 0       |       |
+------------------+---------------------+------+-----+---------+-------+

screeens_items

同graphs_items。

mysql> desc screens_items;
+--------------+---------------------+------+-----+---------+-------+
| Field        | Type                | Null | Key | Default | Extra |
+--------------+---------------------+------+-----+---------+-------+
| screenitemid | bigint(20) unsigned | NO   | PRI | 0       |       |
| screenid     | bigint(20) unsigned | NO   |     | 0       |       |
| resourcetype | int(11)             | NO   |     | 0       |       |
| resourceid   | bigint(20) unsigned | NO   |     | 0       |       |
| width        | int(11)             | NO   |     | 320     |       |
| height       | int(11)             | NO   |     | 200     |       |
| x            | int(11)             | NO   |     | 0       |       |
| y            | int(11)             | NO   |     | 0       |       |
| colspan      | int(11)             | NO   |     | 0       |       |
| rowspan      | int(11)             | NO   |     | 0       |       |
| elements     | int(11)             | NO   |     | 25      |       |
| valign       | int(11)             | NO   |     | 0       |       |
| halign       | int(11)             | NO   |     | 0       |       |
| style        | int(11)             | NO   |     | 0       |       |
| url          | varchar(255)        | NO   |     |         |       |
| dynamic      | int(11)             | NO   |     | 0       |       |
+--------------+---------------------+------+-----+---------+-------+

sessions

sessions 表很重要,保存了每個用戶的sessions,在登陸、注銷的時候均會操作 
該張表的。

做cas等統一認證時,需要了解下該表和相關的登陸、驗證流程。有興趣的看我 
前面的文章吧。

mysql> desc sessions;+------------+---------------------+------+-----+---------+-------+| Field      | Type                | Null | Key | Default | Extra |+------------+---------------------+------+-----+---------+-------+| sessionid  | varchar(32)         | NO   | PRI |         |       |
| userid     | bigint(20) unsigned | NO   | MUL | 0       |       |
| lastaccess | int(11)             | NO   |     | 0       |       |
| status     | int(11)             | NO   |     | 0       |       |+------------+---------------------+------+-----+---------+-------+

triggers

triggers 顧名思義保存了trigger的所有信息。

mysql> desc triggers;
+-------------+---------------------+------+-----+---------+-------+
| Field       | Type                | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| triggerid   | bigint(20) unsigned | NO   | PRI | 0       |       |
| expression  | varchar(255)        | NO   |     |         |       |
| description | varchar(255)        | NO   |     |         |       |
| url         | varchar(255)        | NO   |     |         |       |
| status      | int(11)             | NO   | MUL | 0       |       |
| value       | int(11)             | NO   | MUL | 0       |       |
| priority    | int(11)             | NO   |     | 0       |       |
| lastchange  | int(11)             | NO   |     | 0       |       |
| dep_level   | int(11)             | NO   |     | 0       |       |
| comments    | blob                | NO   |     | NULL    |       |
| error       | varchar(128)        | NO   |     |         |       |
| templateid  | bigint(20) unsigned | NO   |     | 0       |       |
| type        | int(11)             | NO   |     | 0       |       |
+-------------+---------------------+------+-----+---------+-------+

trigger_depends

trigger_depends 保存了trigger的依賴關系。

mysql> desc trigger_depends;+----------------+---------------------+------+-----+---------+-------+| Field          | Type                | Null | Key | Default | Extra |+----------------+---------------------+------+-----+---------+-------+| triggerdepid   | bigint(20) unsigned | NO   | PRI | 0       |       |
| triggerid_down | bigint(20) unsigned | NO   | MUL | 0       |       |
| triggerid_up   | bigint(20) unsigned | NO   | MUL | 0       |       |+----------------+---------------------+------+-----+---------+-------+

users

不需要解釋了,值的一提的部分用戶配置會在該表中,例如auotlogin、autologout、 
url、theme等信息。

mysql> desc users;
+----------------+---------------------+------+-----+-------------+-------+
| Field          | Type                | Null | Key | Default     | Extra |
+----------------+---------------------+------+-----+-------------+-------+
| userid         | bigint(20) unsigned | NO   | PRI | 0           |       |
| alias          | varchar(100)        | NO   | MUL |             |       |
| name           | varchar(100)        | NO   |     |             |       |
| surname        | varchar(100)        | NO   |     |             |       |
| passwd         | char(32)            | NO   |     |             |       |
| url            | varchar(255)        | NO   |     |             |       |
| autologin      | int(11)             | NO   |     | 0           |       |
| autologout     | int(11)             | NO   |     | 900         |       |
| lang           | varchar(5)          | NO   |     | en_gb       |       |
| refresh        | int(11)             | NO   |     | 30          |       |
| type           | int(11)             | NO   |     | 0           |       |
| theme          | varchar(128)        | NO   |     | default.css |       |
| attempt_failed | int(11)             | NO   |     | 0           |       |
| attempt_ip     | varchar(39)         | NO   |     |             |       |
| attempt_clock  | int(11)             | NO   |     | 0           |       |
| rows_per_page  | int(11)             | NO   |     | 50          |       |
+----------------+---------------------+------+-----+-------------+-------+

 表結構分析

 下面開始介紹:

1.添加監控表結構詳解

(1)hosts,存儲被監控的機器的信息,表結構如下:

 

(2)items

(3)hosts_templates,存儲機器和模版或者模版和模版之間的關系

由於模版和機器都存儲在hosts表中,所以hosts_templates和hosts 之間可以hostid關聯也可以通過templateid關聯。

 (4)interface,存儲了所有設備的ip和端口的數據。(由於hosts表中不僅保存了設備信息還保存了模版信息,所以統計實際監控的設備,此表更加准確)

 

 2.數據存儲表結構詳解

 

將clock 轉化為人性化時間:

3.報警相關表結構詳解

 

(1)triggers

 

 

 

附 functions 表結構:

 (2)events

例子:

1. 找出某台主機的所有items ,含有某個key_的item , 統計items 總個數
SELECT * FROM HOSTS WHERE hostid=10157;
SELECT * FROM items WHERE hostid=10157 AND key_ LIKE '%agent%';
SELECT COUNT(*) FROM items;

2. 找出觸發trigger次數最多的事件,並按trigger 降序排列。
SELECT a.description, COUNT(*) cnt FROM TRIGGERS a , EVENTS b
WHERE a.triggerid=b.objectid ORDER BY cnt DESC ;
3. 從item記錄各找出一個value類型為整形,浮點型的key_。
統計這兩個key_ 存儲在history或者history_uint 某一個時間段(比如2017/06/12)
的最大值,最小值,平均值,然后與 trends 或者 trends_unint 中相應時間段做對比

整型
SELECT * FROM items WHERE value_type=3 AND hostid=10157 LIMIT 1;
SELECT * FROM history_uint a,trends_uint b WHERE a.clock=b.clock AND a.itemid=b.itemid LIMIT 1;

浮點型
SELECT * FROM items WHERE value_type=0 AND hostid=10157 LIMIT 1;
SELECT * FROM history a,trends b WHERE a.clock=b.clock AND a.itemid=b.itemid LIMIT 1;

 

4.統計Zabbix Dashboard中triggers總數的來源。

SELECT  count(*)
  FROM TRIGGERS
WHERE triggerid IN
       (SELECT triggerid
          FROM functions
         WHERE itemid IN (SELECT itemid
                            FROM items
                           WHERE hostid IN (SELECT hostid FROM interface)
                             AND key_ NOT LIKE '%#%'
                             AND key_ NOT LIKE '%discovery%'
                             AND STATUS != 1));
 
說明:
通過之前對zabbix表結構的學習,我們知道,表triggers和functions相關聯,而functions和items相關聯,那么,要對triggers做統計,就需要從這三張表下手。
關鍵就是對items表中的數據做出篩選,key_中帶“#”和“discovery”的和status=1(不可用狀態)都要排除,這樣就統計出來了。

 

轉載於:https://blog.51cto.com/tobeawhole/1707163


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM