zabbix之MSSQL操作

來源:互聯網
上載者:User

一、Zabbix簡介

1.1 Zabbix簡介

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

1.2 參考資源

  公司專屬應用程式監控利器-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、ciscoIOS設定以及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

二、zabbix存在的問題

2.1 為什麼需要操作MSSQL

  zabbix的強大功能無需過多的強調,對於伺服器硬體效能和支援SNMP協議的裝置都能很好的支援。隨著業務複雜性的增加,單純的效能監控已無法滿足現實的需要,從多方面考慮希望能增加業務資料的監控。對業務監控有以下好處:

一、能從業務角度應用該系統,提升監控系統的重要性同時也為後期預算做好支援有業務部門支援)。

二、效能資料結合業務資料更能體現監控的重要性,對於業務系統的架構起到很好的輔助評估作用。

三、減少各節點對業務資料的瞭解盲區,使業務資料更加清晰、流程化、自動化。減少手工操作以及對專業技能例如SQL操作)的要求。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21G447-0.jpg" title="2013-07-08-01.jpg" />

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21IB9-1.png" title="image001.png" />

2.2 存在的問題

  業務的資料存在後端的MSSQL2008中,只有通過查詢語句才能取到所需的數值需要較多的條件陳述式支援)。最開始計劃使用zabbix用戶端設定檔中的”UserParameter”實現對資料庫的查詢,實驗後發現存在以下問題:

一、Windows伺服器上不能安裝除zabbix用戶端以外的其它軟體。因此只能通過系統內建的指令、指令碼或綠色軟體實現。

二、”UserParameter”對系統命令的支援有限。經過測試只要是指令或是指令碼中存在“。、)、{}”這類的特殊字元,整個指令都無法正常執行會出一個指令檔案執行一半的情況),或是直接返回不支援。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21I418-2.png" title="image002.png" />

三、”UserParameter”結合“osql、sqlcmd”指令查詢查詢條件複雜或是存在第二點的情況會直接返回不支援)出來的結果都是字元型string型,windows下沒有類似grep,awk的工具),無法在zabbix中以圖形方式顯示。

四、通過autoit3這類的自動化工具整合SQL查詢指令在”UserParameter”下無法返回正常的查詢結果直接執行編譯後的程式沒問題)。

三、解決辦法-pymssql

  2.2中存在的問題在windwos下很難實現直接擷取MSSQL的資料或者要實現它的代價比較大),所以現在換種方法:能不能在linux下直接操作MSSQL?至少在linux環境中shell的指令要比在windows下強大。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21IQ2-3.png" title="image003.png" />

  於是pymssql出現了,通過它可以使用python來操作mssql資料庫。http://code.google.com/p/pymssql/。pymssql這個組件能在多種作業系統運行:windows、linux、MACos、FreeBSD等;支援包括SQL2000、SQL2005、SQL2008資料庫的操作。

3.1 環境

MSSQL0.172)

  Zabbix用戶端,win2003 R2企業版32位作業系統,安裝SQL2008企業版資料庫。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21K516-4.png" title="image004.png" />

Zabbix_Server0.189)

  Zabbix伺服器端,CentOS 6.3 64位作業系統,Zabbix2.05。.

Zabbix_Agent0.47)

  Zabbix用戶端,CentOS 6.3 64位作業系統,Zabbix2.05。

四、安裝pymssql4.1安裝freedts包

  freedts主要用來直接操作MSSQL資料庫,可以通過編譯或是使用yum指令方式自動安裝,方便起見這裡採用yum方式安裝。在使用yum指令前建議先設定好linux軟體源如所示,可以參考http://waringid.blog.51cto.com/65148/904201)。需要注意的是epel源中的epel-release-6-7.noarch.rpm已經換成了epel-release-6-8.noarch.rpm版本同時注意32位和64位版本的區別)。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21H4c-5.png" title="image005.png" />

yum install freetdsrpm –qa|grep freetds

4.2 測試freetds

  freedts安裝完成後可通過tsql指令來查看版本及設定狀態,如所示。需要注意的是freetds.conf設定檔的存放路徑以及TDS的版本狀態。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21I5c-6.png" title="image006.png" />

  freedts的版本和操作的資料庫版本相關,當使用tsql指令操作MSSQL出現錯誤時需要檢查TDS版本是否一致http://www.freetds.org/userguide/choosingtdsprotocol.htm)。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21M9E-7.png" title="image007.png" />

tsql -H 192.168.0.172 -p 1433 -U saTDSVER=7.1 tsql –S 192.168.0.172 –p 1433 –U sa

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21K552-8.png" title="image008.png" />

  freedts的freetds.conf設定檔可以設定和SQL伺服器的串連,設定後可以通過機器名的方式進行訪問,如所示。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21G116-9.png" title="image009.png" />

4.3 安裝setuptools

  setuptools是 Python Enterprise Application KitPEAK)的一個副項目,它 是一組Python的 distutilsde工具的增強工具(適用於 Python 2.3.5 以上的版本,64 位元平台則適用於 Python 2.4 以上的版本),可以讓程式員更方便的建立和發布 Python 包,特別是那些對其它包具有依賴性的狀況。

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.7.2.tar.gztar zxvf setuptools-0.7.2.tar.gzpython setup.py buildpython setup.py install

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21I359-10.png" title="image010.png" />

4.4 安裝Cython

  Cython是單獨的一門語言,專門用來寫在Python裡面import用的擴充庫。實際上Cython的文法基本上跟Python一致,而 Cython有專門的“編譯器”先將 Cython代碼轉變成C自動加入了一大堆的C-Python API),然後使用C編譯器編譯出最終的Python可調用的模組。

wget http://www.cython.org/release/Cython-0.19.1.tar.gztar zxvf Cython-0.19.1.tar.gzpython setup.py buildpython setup.py install

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21K1M-11.png" title="image011.png" />

4.5 安裝pymssql

wget http://pymssql.googlecode.com/files/pymssql-2.0.0b1-dev-20111019.tar.gztar zxvf pymssql-2.0.0b1-dev-20111019.tar.gzpython setup.py buildpython setup.py install

4.6 使用python操作MSSQL

  首先建立python檔案,內容如下更多內容請參考http://www.cnblogs.com/qianlifeng/archive/2012/02/06/2340367.html或http://www.oschina.net/code/snippet_782086_16716。)

vim testmssql.py

#coding=utf-8#!/usr/bin/env python#-------------------------------------------------------------------------------# Name: pymssqlTest.py# Purpose: 測試 pymssql庫# Created: 04/02/2012#-------------------------------------------------------------------------------import pymssqlclass MSSQL:"""對pymssql的簡單封裝使用該庫時,需要在Sql Server Configuration Manager裡面將TCP/IP協議開啟用法:"""def __init__(self,host,user,pwd,db):self.host = hostself.user = userself.pwd = pwdself.db = dbdef __GetConnect(self):"""得到串連資訊返回: conn.cursor()"""if not self.db:raise(NameError,"沒有設定資料庫資訊")self.conn =pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")cur = self.conn.cursor()if not cur:  raise(NameError,"串連資料庫失敗")else:  return curdef ExecQuery(self,sql):"""執行查詢語句返回的是一個包含tuple的list,list的元素是記錄行,tuple的元素是每行記錄的欄位調用樣本:ms =MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")resList =ms.ExecQuery("SELECT id,NickName FROM WeiBoUser")for (id,NickName) in resList:print str(id),NickName"""cur = self.__GetConnect()cur.execute(sql)resList = cur.fetchall()#查詢完畢後必須關閉串連self.conn.close()return resListdef ExecNonQuery(self,sql):"""執行非查詢語句調用樣本:cur = self.__GetConnect()cur.execute(sql)self.conn.commit()self.conn.close()"""cur = self.__GetConnect()cur.execute(sql)self.conn.commit()self.conn.close()def main():## ms =MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")## #返回的是一個包含tuple的list,list的元素是記錄行,tuple的元素是每行記錄的欄位##ms.ExecNonQuery("insert into WeiBoUser values('2','3')")ms =MSSQL(host="192.168.0.172",user="sa",pwd="P@$$w0rd",db="master")resList = ms.ExecQuery("SELECTcpu_busy,io_busy FROM spt_monitor")for (cpu_busy,io_busy) in resList:printstr(cpu_busy).decode("utf8")resList = ms.ExecQuery("SELECT * FROMspt_monitor")for r in resList:print str(r).decode("utf8")if __name__ == '__main__':main()

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21K4Z-12.png" title="image012.png" />

4.7 Zabbix設定

  首先在zabbix用戶端的設定檔中設定“UserParameter”參數,可以使用以下指令預設情況下)

vim /usr/local/etc/zabbix_agentd.conf

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21II0-13.png" title="image013.png" />

chown zabbix:zabbix /tmp/testsql.pyservice zabbix_agentd restart

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21K120-14.png" title="image014.png" />

4.7 Zabbix擷取mssql資料

  以下操作在zabbix伺服器上執行。

/usr/local/zabbix/bin/zabbix_get -s 192.168.0.47 -p 10050 -k"system.test"

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1G21G162-15.png" title="image015.png" />



本文出自 “虛擬現實” 部落格,轉載請與作者聯絡!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.