也談zabbix性能優化

一、Zabbix簡介

1.1 Zabbix簡介

  官方網站:http://www.zabbix.com。Zabbix通過C/S模式採集數據,通過B/S模式在web端展示和配置。

1.2 Zabbix功能

  具備常見的商業監控軟件所具備的功能(主機的性能監控、網絡設備性能監控、數據庫性能監控、FTP等通用協議監控、多種告警方式、詳細的報表圖表繪製)支持自動發現網絡設備和服務器;支持分佈式,能集中展示、管理分佈式的監控點;擴展性強,server提供通用接口,可以自己開發完善各類監控。

1.3 優劣勢

  優點:開源,無軟件成本投入;Server對設備性能要求低(實際測試環境:虛擬機CentOS5,2GCPU 1G內存,監控5臺設備,CPU使用率基本保持在10%以下,內存剩餘400M以上);支持設備多;支持分佈式集中管理;開放式接口,擴展性強。
缺點:中文資料較少。

1.4 參考資源

  企業應用監控利器-ZABBIX(包括zabbix安裝方法、中文字體的設定和防火牆設定等)http://waringid.blog.51cto.com/65148/904201



Zabbix中文使用手冊(包括重要的zabbix監控參數、重要監控圖表的意義等)http://waringid.blog.51cto.com/65148/945352



zabbix中文配置指南(包括item參數的定製,windows監控參數的定義,snmp設備的OID查詢、設置等。zabbix使用手冊側重使用人員,而這份文檔側重專業管理人員)http://waringid.blog.51cto.com/65148/955939


  zabbix中文配置指南續(時間同步,windows、linux、cisco IOS設置以及cisco 2960網絡設備監控)http://waringid.blog.51cto.com/65148/1104627



zabbix之auth login郵件報警(通過使件msmtp實現zabbix驗證型郵件的報警通知功能)http://waringid.blog.51cto.com/65148/1142579


Monitor MySQL with Zabbix
http://www.badllama.com/content/monitor-mysql-zabbix
Monitor Apache with Zabbix
http://www.badllama.com/content/monitor-apache-zabbix
Monitor Nginx with Zabbix
http://www.badllama.com/content/monitor-nginx-zabbix
Partitioning Tables on Zabbix 1.8
http://zabbixzone.com/zabbix/partitioning-tables/
Heavy MySQL monitoring solution
https://www.zabbix.com/wiki/howto/monitor/db/mysql/extensive_mysql_monitoring_including_replication


二、Mysql監控配置

2.1 說明

  Mysql的監控主要通過配置文件的“UserParameter”參數結合“Items”監控項目或相關模板實現。實現後如圖一所示。

圖一:MySQL性能監控圖

2.2 設定配置文件

  Zabbix安裝後自帶有詳細的mysql配置實例,先將配置文件複製到相應的地方,然後按實際情況修改這個配置文件。圖二是監控MySQL的模板內容。


圖二:MySQL性能監控模板圖

  1. cp /root/zabbix-2.0.5/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf  

  1. UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql -uzabbix -ppassword -N | awk '{print $$2}' #取mysql狀態,如圖三所示  

圖三:MySQL性能監控狀態圖

  1. UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema='$1'")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name='$2'");" | mysql -uzabbix -ppassword –N #取mysql操作狀態,如圖四所示  

圖四:MySQL性能流量圖

  1. UserParameter=mysql.ping,HOME=/var/lib/mysql/zabbix mysqladmin -uzabbix -ppassword | grep -c alive 
  2. UserParameter=mysql.version,mysql –V #取mysql版本,如圖五所示  

圖五:MySQL版本圖

2.3修改agnet配置文件

  完成後修改相應的agent配置文件,加入新增加的“userparameter_mysql.conf”文件。

  1. vi /usr/local/zabbix/etc/zabbix_agent.conf 
  2. Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ #加入mysql配置 
  3. vi /usr/local/zabbix/etc/zabbix_agentd.conf 
  4. Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ #加入mysql配置  

  需要說明的是MySQL的監控涉及主機名、用戶名和密碼(這個在2.2項中有說明),要注意的是如果mysql的用戶名是root@localhost的話要在監控設定的頁面中將主機名稱改爲localhost,同時相應的zabbix_agent.conf相關配置文件中的Hostnam項要設成localhost,如圖六所示。

圖六:MySQL主機監控設定圖

2.4 重啓應用

  1. service zabbix_agentd restart  

  如果存在問題,注意查看zabbix_server.log和zabbix_agentd.log日誌,然後對照進行相應調整。

三、Zabbix性能優化

  網上這方面的資源其實挺多的,唯一麻煩點的是大部份都是英文的,但是對照相應的指令也可以猜出操作方式,以下是可以參考的一些內容。

mysql數據庫自動備份http://ourmysql.com/archives/356?f=wb



改良版本mysqldump來備份MYSQL數據庫http://ourmysql.com/archives/463?f=wb


Performance Tuning MySQL for Zabbix
http://sysadminnotebook.blogspot.com/2011/08/performance-tuning-mysql-for-zabbix.html

3.1 度量Zabbix性能

  通過Zabbix的NVPS(每秒處理數值數)來衡量其性能,在Zabbix的dashboard上有一個粗略的估值,如圖七所示。

圖七:nvps圖

3.2 Zabbix性能低下的表象

1、zabbix隊列中有太多被延遲的item: Administration -> Queue(如圖八、圖九所示)

2、zabbix繪圖中經常性出現斷檔,一些item沒有數據

3、帶有nodata()函數的觸發器出現false

4、前端頁面無響應

圖八:zabbix性能圖


圖九:zabbix queue圖

3.3 Zabbix性能低下的因素

3.4 Zabbix性能優化的原則

1、確保zabbix內部組件性能處於被監控狀態(調優的基礎!)

2、使用硬件性能足夠好的服務器

3、不同角色分開,使用各自獨立的服務器

4、使用分佈式部署

5、調整MySQL性能

6、調整Zabbix自身配置

四、MySQL性能優化

  本例服務器爲IBM X3550(CPU Xeon E5504 4核 RAM 4G HDD RAID1 146G);Zabbix 2.05;MySQL版本“mysql Ver 14.14 Distrib 5.1.67”;現有監控內容如圖十所示,服務器及MySQL性能如圖十一、十二所示。

圖十:zabbix NVPS圖


圖十一:zabbix 主機性能圖


圖十二:zabbix MySQL性能圖

4.1 使用tmpfs文件系統

  1. cd / 
  2. mkdir zabbixtmp 
  3. chown mysql:mysql zabbixtmp 
  4. vi /etc/fstab #配置/etc/fstab文件 
  5. tmpfs /zabbixtmp tmpfs rw,size=400m,nr_inodes=10k,mod=0700,uid=mysql,gid=mysql 0 0  

  在配置/etc/fstab參數中需要注意文件的大小設置,一般情況下設成物理內存的8%-10%。

4.2 配置my.cnf文件 

  1.  [mysqld] 
  2. datadir=/var/lib/mysql 
  3. socket=/var/lib/mysql/mysql.sock 
  4. user=mysql 
  5.  
  6. # Disabling symbolic-links is recommended to prevent assorted security risks 
  7. tmpdir=/zabbixtmp 
  8. #network 
  9. connect_timeout =60 
  10. wait_timeout =5000 
  11. max_connections =400 
  12. max_allowed_packet =16M 
  13. max_connect_errors =400 
  14. #limits 
  15. tmp_table_size =256M 
  16. max_heap_table_size =64M 
  17. table_cache =256 
  18. #logs 
  19. slow_query_log_file =/var/log/slowquery.log 
  20.  
  21. log_error =/var/log/mysql-error.log 
  22. long_query_time =10 
  23. slow_query_log =1 
  24. #innodb 
  25.  
  26. #innodb_data_file_path =ibdata1:128M;ibdata2:128M:autoextend:max:4096M 
  27. innodb_file_per_table =1 
  28. innodb_status_file =1 
  29.  
  30. innodb_additional_mem_pool_size =128M 
  31. innodb_buffer_pool_size =2800M 
  32. innodb_flush_method =O_DIRECT 
  33. #innodb_io_capacity =1000 
  34. innodb_support_xa =0 
  35. innodb_log_file_size =64M 
  36. innodb_log_buffer_size =32M 
  37. symbolic-links=0 
  38. #log-queries-not-using-indexes 
  39. thread_cache_size=4 
  40. query_cache_size=128M 
  41. #join_buffer_size=512K 
  42. join_buffer_size=128M 
  43. read_buffer_size=128M 
  44. read_rnd_buffer_size=128M 
  45. key_buffer=128M 
  46. innodb_flush_log_at_trx_commit=2 
  47. [mysqld_safe] 
  48. log-error=/var/log/mysqld.log 
  49. pid-file=/var/run/mysqld/mysqld.pid  

  “innodb_buffer_pool_size”一般設爲服務器物理內存的70%-80%。

4.3 參考內容

InnoDB Startup Options and System Variables http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html

MySQL Performance Blog http://www.mysqlperformanceblog.com

Benchmarks For Percona Server http://www.percona.com/software/percona-server/benchmarks

Choosing innodb_buffer_pool_size http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/


 你可以從這裏下載到本文的電子檔

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章