Zabbix系統哪些會占用大量的磁盤空間?

      網友投稿 1089 2025-03-31

      感謝譯者余偉男,宏時數據zabbix技術經理。


      歡迎翻譯zabbix官方博文,將有用資料分享給更多用戶!

      本篇文章列出了在Zabbix中,哪些會占用大量的磁盤空間以及哪些監控項和主機對象消耗磁盤空間最多。

      包含以下內容:

      數據庫中最大的表

      感謝譯者余偉男,宏時數據Zabbix技術經理。

      歡迎翻譯Zabbix官方博文,將有用資料分享給更多用戶!

      本篇文章列出了在Zabbix中,哪些會占用大量的磁盤空間以及哪些監控項和主機對象消耗磁盤空間最多。

      包含以下內容:

      數據庫中最大的表

      進入到Zabbix的值最大的監控項(最新)

      數據庫中最大的分區表

      找到占用空間最多的主機和監控項

      1最大的表

      一般來說,在Zabbix的庫中,最占空間的表以大小依次排序為:

      history

      history_uint

      history_str

      history_text

      history_log

      events

      ' history_uint '表存儲整數類型的數據。' history '存儲十進制的數據。

      ' history_str ', ' history_text ', ' history_log '存儲文本類型的數據。

      “events”表中記錄了問題事件、內部事件、代理自動注冊事件、自動發現的記錄。

      用sql語句檢查哪些表占用了最多的空間。

      Mysql:

      SELECT table_name, table_rows, data_length, index_length, round(((data_length + index_length) / 1024 / 1024 / 1024),2) "Size in GB"FROM information_schema.tablesWHERE table_schema = "zabbix"ORDER BY round(((data_length + index_length) / 1024 / 1024 / 1024),2) DESCLIMIT 8;

      PostgreSQL:

      SELECT *, pg_size_pretty(total_bytes) AS total , pg_size_pretty(index_bytes) AS index , pg_size_pretty(toast_bytes) AS toast , pg_size_pretty(table_bytes) AS tableFROM (SELECT *, total_bytes-index_bytes-coalesce(toast_bytes, 0) AS table_bytes FROM (SELECT c.oid, nspname AS table_schema, relname AS table_name , c.reltuples AS row_estimate , pg_total_relation_size(c.oid) AS total_bytes , pg_indexes_size(c.oid) AS index_bytes , pg_total_relation_size(reltoastrelid) AS toast_bytes FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE relkind = 'r' ) a) a;

      2最近5分鐘內值最大的監控項

      MySQL ‘history_log’:

      SELECT SUM(LENGTH(value)) AS 'chars',CONCAT('history.php?itemids%5B0%5D=', itemid ,'&action=showlatest' ) AS 'URL'FROM history_logWHERE clock > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)GROUP BY itemid ORDER BY SUM(LENGTH(value)) DESC LIMIT 5;

      MySQL ‘history_text’:

      SELECT SUM(LENGTH(value)) AS 'chars',CONCAT('history.php?itemids%5B0%5D=', itemid ,'&action=showlatest' ) AS 'URL'FROM history_textWHERE clock > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)GROUP BY itemid ORDER BY SUM(LENGTH(value)) DESC LIMIT 5;

      MySQL ‘history_str’:

      SELECT SUM(LENGTH(value)) AS 'chars',CONCAT('history.php?itemids%5B0%5D=', itemid ,'&action=showlatest' ) AS 'URL'FROM history_strWHERE clock > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)GROUP BY itemid ORDER BY SUM(LENGTH(value)) DESC LIMIT 5;

      PostgreSQL ‘history_text’:

      SELECT CONCAT('history.php?itemids%5B0%5D=', itemid ,'&action=showlatest' ) AS URL,SUM(LENGTH(value)) FROM history_textWHERE clock > EXTRACT(epoch FROM NOW()-INTERVAL '5 MINUTE')GROUP BY itemid ORDER BY SUM(LENGTH(value)) DESC LIMIT 5;

      PostgreSQL ‘history_log’:

      SELECT CONCAT('history.php?itemids%5B0%5D=', itemid ,'&action=showlatest' ) AS URL,SUM(LENGTH(value)) FROM history_logWHERE clock > EXTRACT(epoch FROM NOW()-INTERVAL '5 MINUTE')GROUP BY itemid ORDER BY SUM(LENGTH(value)) DESC LIMIT 5;

      PostgreSQL ‘history_str’:

      SELECT CONCAT('history.php?itemids%5B0%5D=', itemid ,'&action=showlatest' ) AS URL,SUM(LENGTH(value)) FROM history_strWHERE clock > EXTRACT(epoch FROM NOW()-INTERVAL '5 MINUTE')GROUP BY itemid ORDER BY SUM(LENGTH(value)) DESC LIMIT 5;

      3哪些主機占用了最多的空間

      MySQL ‘history_text’:

      SELECT SUM(LENGTH(history_text.value)) AS 'chars', hosts.name AS 'name'FROM history_textJOIN items ON (items.itemid=history_text.itemid)JOIN hosts ON (hosts.hostid=items.hostid)WHERE history_text.clock > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)GROUP BY hosts.name ORDER BY SUM(LENGTH(history_text.value)) DESC LIMIT 5;

      MySQL ‘history_log’:

      SELECT SUM(LENGTH(history_log.value)) AS 'chars', hosts.name AS 'name'FROM history_logJOIN items ON (items.itemid=history_log.itemid)JOIN hosts ON (hosts.hostid=items.hostid)WHERE history_log.clock > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)GROUP BY hosts.name ORDER BY SUM(LENGTH(history_log.value)) DESC LIMIT 5;

      MySQL ‘history_str’:

      SELECT SUM(LENGTH(history_str.value)) AS 'chars', hosts.name AS 'name'FROM history_strJOIN items ON (items.itemid=history_str.itemid)JOIN hosts ON (hosts.hostid=items.hostid)WHERE history_str.clock > UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE)GROUP BY hosts.name ORDER BY SUM(LENGTH(history_str.value)) DESC LIMIT 5;

      PostgreSQL ‘history_text’:

      SELECT SUM(LENGTH(history_text.value)) AS "chars", hosts.name AS "name"FROM history_textJOIN items ON (items.itemid=history_text.itemid)JOIN hosts ON (hosts.hostid=items.hostid)WHERE history_text.clock > EXTRACT(epoch FROM NOW()-INTERVAL '5 MINUTE')GROUP BY hosts.name ORDER BY SUM(LENGTH(history_text.value)) DESC LIMIT 5;

      PostgreSQL ‘history_log’:

      SELECT SUM(LENGTH(history_log.value)) AS "chars", hosts.name AS "name"FROM history_logJOIN items ON (items.itemid=history_log.itemid)JOIN hosts ON (hosts.hostid=items.hostid)WHERE history_log.clock > EXTRACT(epoch FROM NOW()-INTERVAL '5 MINUTE')GROUP BY hosts.name ORDER BY SUM(LENGTH(history_log.value)) DESC LIMIT 5;

      PostgreSQL ‘history_str’:

      SELECT SUM(LENGTH(history_str.value)) AS "chars", hosts.name AS "name"FROM history_strJOIN items ON (items.itemid=history_str.itemid)JOIN hosts ON (hosts.hostid=items.hostid)WHERE history_str.clock > EXTRACT(epoch FROM NOW()-INTERVAL '5 MINUTE')GROUP BY hosts.name ORDER BY SUM(LENGTH(history_str.value)) DESC LIMIT 5;

      4從分區表層面分析(Mysql)

      如果你將Mysql作為你的數據庫并且做了表分區,可以列出占用空間最大的分區:

      cd /var/lib/mysql/zabbixls -lh history_log#*

      將會輸出如下內容:

      -rw-r-----. 1 mysql mysql 44M Jan 24 20:23 history_log#p#p2021_02w.ibd-rw-r-----. 1 mysql mysql 24M Jan 24 21:20 history_log#p#p2021_03w.ibd-rw-r-----. 1 mysql mysql 128K Jan 11 00:59 history_log#p#p2021_04w.ibd

      根據上面的內容,我們可以拿到分區的名字“p2021_02w”,并在下面的sql語句中使用,用來分析這個分區表:

      SELECT ho.hostid, ho.name, count(*) AS records, (count(*)* (SELECT AVG_ROW_LENGTH FROM information_schema.tables WHERE TABLE_NAME = 'history_log' and TABLE_SCHEMA = 'zabbix')/1024/1024) AS 'Total size average (Mb)', sum(length(history_log.value))/1024/1024 + sum(length(history_log.clock))/1024/1024 +sum(length(history_log.ns))/1024/1024 + sum(length(history_log.itemid))/1024/1024 AS 'history_log Column Size (Mb)'FROM history_log PARTITION (p2021_02w)LEFT OUTER JOIN items i on history_log.itemid = i.itemid LEFT OUTER JOIN hosts ho on i.hostid = ho.hostid WHERE ho.status IN (0,1)GROUP BY ho.hostidORDER BY 4 DESCLIMIT 10;

      可以在列出時重現類似的場景:

      ls -lh history_text#*ls -lh history_str#*

      5 如何釋放磁盤空間(Mysql)

      在前端頁面刪除主機不會釋放MySQL上的空間。它將在表中創建空行,以便插入新數據。如果您想真正釋放磁盤空間,我們可以重建分區。

      首先列出所有可能的分區名稱:

      SHOW CREATE TABLE history\G

      重建表分區:

      ALTER TABLE history REBUILD PARTITION p202101160000;

      6 如何釋放磁盤空間(PostgreSQL)

      在PostgreSQL上,有一個進程負責清空表。如果想確定最近已進行清理,可以執行一下語句:

      SELECT schemaname, relname, n_live_tup, n_dead_tup, last_autovacuumFROM pg_stat_all_tablesWHERE n_dead_tup > 0ORDER BY n_dead_tup DESC;

      在輸出中,我們要注意‘n_dead_tup’,它表示一個死元組。

      如果最近10天內沒有出現最后一次自動清理,那就糟糕了。我們必須做一個不同的配置。可以通過以下方式提高自動清理的優先級:

      vacuum_cost_page_miss = 10vacuum_cost_page_dirty = 20autovacuum_vacuum_threshold = 50autovacuum_vacuum_scale_factor = 0.01autovacuum_vacuum_cost_delay = 20msautovacuum_vacuum_cost_limit = 3000autovacuum_max_workers = 6

      點擊“閱讀原文”,查看英文官方博文。

      備注“使用Zabbix年限+企業+姓名”

      Zabbix系統中哪些會占用大量的磁盤空間?

      進入交流群,4000+用戶已加入

      一個人走得快,一群人走得遠

      MySQL 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:數據庫事務與鎖機制】- 事務的隔離級別
      下一篇:很著急 怎么作三線圖
      相關文章
      色欲aⅴ亚洲情无码AV蜜桃| 久久久久久亚洲AV无码专区| 亚洲视频在线观看地址| 九月丁香婷婷亚洲综合色| 亚洲国产精品视频| 亚洲日韩在线中文字幕综合 | 亚洲一卡2卡4卡5卡6卡在线99| 亚洲五月六月丁香激情| 亚洲国产精品无码专区影院| 国产AV无码专区亚洲AV男同| 亚洲精品午夜无码专区| 亚洲综合无码AV一区二区| 久久久久亚洲爆乳少妇无| AV在线亚洲男人的天堂| 亚洲尤码不卡AV麻豆| 亚洲乱码精品久久久久..| 亚洲国产精品无码AAA片| 国产精品亚洲а∨无码播放| 亚洲中文字幕第一页在线 | 亚洲国产成人精品青青草原| 亚洲国产成人无码av在线播放| 亚洲国产成a人v在线| 亚洲成a人片77777群色| 亚洲一级片在线播放| 国产人成亚洲第一网站在线播放| 亚洲一线产品二线产品| 色综合久久精品亚洲国产| 亚洲日韩在线中文字幕第一页| 国产a v无码专区亚洲av| 国产A在亚洲线播放| 亚洲人成亚洲精品| 97se亚洲综合在线| 亚洲第一成人在线| 亚洲国产精品无码久久98| 国产成人不卡亚洲精品91| 国产亚洲AV手机在线观看| 亚洲第一精品福利| 亚洲国产成人精品无码区在线秒播 | 亚洲视频在线一区二区| 精品亚洲永久免费精品| 亚洲综合色丁香麻豆|