Zabbix 監控

Zabbix監控什麼?


Zabbix 監控

監控項

Zabbix常用監控項

zabbix自帶的常用監控項

<code>agent.ping 檢測客戶端可達性、返回nothing表示不可達。1表示可達
system.cpu.load --檢測cpu負載。返回浮點數
system.cpu.util -- 檢測cpu使用率。返回浮點數
vfs.dev.read -- 檢測硬盤讀取數據,返回是sps.ops.bps浮點類型,需要定義1024倍
vfs.dev.write -- 檢測硬盤寫入數據。返回是sps.ops.bps浮點類型,需要定義1024倍
net.if.out[br0] --檢測網卡流速、流出方向,時間間隔為60S
net-if-in[br0] --檢測網卡流速,流入方向(單位:字節) 時間間隔60S
proc.num[] 目前系統中的進程總數,時間間隔60s
proc.num[,,run] 目前正在運行的進程總數,時間間隔60S/<code>

處理器信息

<code>通過zabbix_get 獲取負載值
合理的控制用戶態、系統態、IO等待時間剋保證進程高效率的運行
系統態運行時間較高說明進程進行系統調用的次數比較多,一般的程序如果系統態運行時間佔用過高就需要優化程序,減少系統調用

io等待時間過高則表明硬盤的io性能差,如果是讀寫文件比較頻繁、讀寫效率要求比較高,可以考慮更換硬盤,或者使用多磁盤做raid的方案
system.cpu.swtiches --cpu的進程上下文切換,單位sps,表示每秒採樣次數,api中參數history需指定為3
system.cpu.intr --cpu中斷數量、api中參數history需指定為3
system.cpu.load[percpu,avg1] --cpu每分鐘的負載值,按照核數做平均值(Processor load (1 min average per core)),api中參數history需指定為0
system.cpu.load[percpu,avg5] --cpu每5分鐘的負載值,按照核數做平均值(Processor load (5 min average per core)),api中參數history需指定為0
system.cpu.load[percpu,avg15] --cpu每5分鐘的負載值,按照核數做平均值(Processor load (15 min average per core)),api中參數history需指定為0/<code>


zabbix的自定義常用項

內存相關
<code>vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/catcarm.conf
UserParameter=ram.info[*],/bin/cat /proc/meminfo |awk '/^$1:{print $2}'
ram.info[Cached] --檢測內存的緩存使用量、返回整數,需要定義1024倍
ram.info[MemFree] --檢測內存的空餘量,返回整數,需要定義1024倍
ram.info[Buffers] --檢測內存的使用量,返回整數,需要定義1024倍/<code>
TCP相關的自定義項
<code>vim /usr/local/zabbix/share/zabbix/alertscripts/tcp_connection.sh
#!/bin/bash
function ESTAB {
/usr/sbin/ss -ant |awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'ESTAB' | awk '{print $2}'

}
function TIMEWAIT {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'TIME-WAIT' | awk '{print $2}'
}
function LISTEN {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'
}
$1

vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/cattcp.conf
UserParameter=tcp[*],/usr/local/zabbix/share/zabbix/alertscripts/tcp_connection.sh $1

tcp[TIMEWAIT] --檢測TCP的駐留數,返回整數
tcp[ESTAB] --檢測tcp的連接數、返回整數
tcp[LISTEN] --檢測TCP的監聽數,返回整數/<code>
nginx相關的自定義項
<code>vim /etc/nginx/conf.d/default.conf
  location /nginx-status
  {
      stub_status on;
      access_log off;
      allow 127.0.0.1;
      deny all;
  }


vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx.conf
UserParameter=Nginx.active,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/Active/ {print $NF}'
UserParameter=Nginx.read,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Reading' | cut -d" " -f2
UserParameter=Nginx.wrie,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Writing' | cut -d" " -f4
UserParameter=Nginx.wait,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Waiting' | cut -d" " -f6
UserParameter=Nginx.accepted,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \\t]+[0-9]+[ \\t]+[0-9]+[ \\t]+[0-9]+/ {print $1}'
UserParameter=Nginx.handled,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \\t]+[0-9]+[ \\t]+[0-9]+[ \\t]+[0-9]+/ {print $2}'
UserParameter=Nginx.requests,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \\t]+[0-9]+[ \\t]+[0-9]+[ \\t]+[0-9]+/ {print $3}'

PHP.listenqueue --檢測PHP隊列數,返回整數
PHP.idle --檢測PHP空閒進程數,返回整數
PHP.active --檢測PHP活動進程數,返回整數
PHP.conn --檢測PHP請求數,返回整數
PHP.reached --檢測PHP達到限制次數,返回整數

PHP.requets --檢測PHP慢請求書,返回整數/<code>
redis相關的自定義項
<code>vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/redis.conf
UserParameter=Redis.Status,/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 ping |grep -c PONG
UserParameter=Redis_conn[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "connected_clients" | awk -F':' '{print $2}'
UserParameter=Redis_rss_mem[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_memory_rss" | awk -F':' '{print $2}'
UserParameter=Redis_lua_mem[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_memory_lua" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_sys[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_sys" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_user[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_user" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_sys_cline[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_sys_children" | awk -F':' '{print $2}'
UserParameter=Redis_cpu_user_cline[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "used_cpu_user_children" | awk -F':' '{print $2}'
UserParameter=Redis_keys_num[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep -w "$$1" | grep -w "keys" | grep db$3 | awk -F'=' '{print $2}' | awk -F',' '{print $1}'
UserParameter=Redis_loading[*],/usr/local/redis/bin/redis-cli -h $1 -p $2 info | grep loading | awk -F':' '{print $$2}'

Redis.Status --檢測Redis運行狀態, 返回整數
Redis_conn --檢測Redis成功連接數,返回整數
Redis_rss_mem --檢測Redis系統分配內存,返回整數
Redis_lua_mem --檢測Redis引擎消耗內存,返回整數
Redis_cpu_sys --檢測Redis主程序核心CPU消耗率,返回整數
Redis_cpu_user --檢測Redis主程序用戶CPU消耗率,返回整數
Redis_cpu_sys_cline --檢測Redis後臺核心CPU消耗率,返回整數
Redis_cpu_user_cline --檢測Redis後臺用戶CPU消耗率,返回整數
Redis_keys_num --檢測庫鍵值數,返回整數
Redis_loding --檢測Redis持久化文件狀態,返回整數/<code>
MySQL:
<code>version:數據庫版本
key_buffer_size:myisam的索引buffer大小
sort_buffer_size:會話的排序空間(每個線程會申請一個)
join_buffer_size:這是為鏈接操作分配的最小緩存大小,這些連接使用普通索引掃描、範圍掃描、或者連接不適用索引

max_connections:最大允許同時連接的數量
max_connect_errors:允許一個主機最多的錯誤鏈接次數,如果超過了就會拒絕之後鏈接(默認100)。可以使用flush hosts命令去解除拒絕
open_files_limits:操作系統允許mysql打開的文件數量,可以通過opened_tables狀態確定是否需要增大table_open_cache,如果opened_tables比較大且一直還在增大說明需要增大table_open_cache
max-heap_tables_size:建立的內存表的最大大小(默認16M)這個參數和tmp_table_size一起限制內部臨時表的最大值(取這兩個參數的小的一個),如果超過限制,則表會變為innodb或myisam引擎,(5.7.5之前是默認是myisam,5.7.6開始是innodb,可以通過internal_tmp_disk_storage_engine參數調整)。
max_allowed_packet:一個包的最大大小
##########GET INNODB INFO
#INNODB variables
innodb_version:
innodb_buffer_pool_instances:將innodb緩衝池分為指定的多個(默認為1)
innodb_buffer_pool_size:innodb緩衝池大小、5.7.5引入了innodb_buffer_pool_chunk_size,
innodb_doublewrite:是否開啟doublewrite(默認開啟)
innodb_read_io_threads:IO讀線程的數量
innodb_write_io_threads:IO寫線程的數量
########innodb status
innodb_buffer_pool_pages_total:innodb緩衝池頁的數量、大小等於innodb_buffer_pool_size/(16*1024)
innodb_buffer_pool_pages_data:innodb緩衝池中包含數據的頁的數量
########## GET MYSQL HITRATE
1、查詢緩存命中率
如果Qcache_hits+Com_select<>0則為 Qcache_hits/(Qcache_hits+Com_select),否則為0

2、線程緩存命中率

如果Connections<>0,則為1-Threads_created/Connections,否則為0

3、myisam鍵緩存命中率
如果Key_read_requests<>0,則為1-Key_reads/Key_read_requests,否則為0

4、myisam鍵緩存寫命中率
如果Key_write_requests<>0,則為1-Key_writes/Key_write_requests,否則為0

5、鍵塊使用率
如果Key_blocks_used+Key_blocks_unused<>0,則Key_blocks_used/(Key_blocks_used+Key_blocks_unused),否則為0

6、創建磁盤存儲的臨時表比率
如果Created_tmp_disk_tables+Created_tmp_tables<>0,則Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables),否則為0

7、連接使用率
如果max_connections<>0,則threads_connected/max_connections,否則為0

8、打開文件比率
如果open_files_limit<>0,則open_files/open_files_limit,否則為0

9、表緩存使用率
如果table_open_cache<>0,則open_tables/table_open_cache,否則為0/<code>


Zabbix 監控


分享到:


相關文章: