繼上篇監控寶服務器監控後,此篇博文詳細記錄下項目中對經常使用服務監控的配置步驟
php
服務器監控可參考:https://blog.51cto.com/kaliarch/2044977python
1、目的 2mysql
2、理論基礎 2linux
2.1 相關理論 2web
2.2 監控項目 2redis
3、服務性能監控部署 2sql
3.1 Nginx 服務性能監控 2mongodb
3.3 Mysql 服務性能監控 9apache
1、目的
本文是在《監控寶服務器與服務性能監控配置》(URL:https://blog.51cto.com/kaliarch/2044977)文檔的基礎上繼續完善其中的服務性能監控,目前監控寶服務性能監控項目爲11個,通過部署環境,測試監控服務,已經完成所有服務性能監控測試,若有需求能夠參考此文檔部署服務性能監控。
2、理論基礎
2.1 相關理論
詳見《監控寶服務器與服務性能監控配置》內監控理論部分。
2.2 監控項目
服務性能監控項目
3、服務性能監控部署
3.1 Nginx 服務性能監控
1) 內網採集器的建立
2) Python環境部署
詳見《SER-App-0028-監控寶服務器與服務性能監控配置》內Python環境部署部分。
3) SNMP安裝與配置
詳見《SER-App-0028-監控寶服務器與服務性能監控配置》內SNMP安裝配置部分。
4) Nginx配置需求
Nginx 編譯安裝必須啓用 --with-http_stub_status_module
Nginx配置文件內增長如下狀態信息。
active connections – 活躍的鏈接數量
server accepts handled requests — 總共處理了764個鏈接 , 成功建立764次握手, 總共處理了906個請求
reading — 讀取客戶端的鏈接數.
writing — 響應數據到客戶端的數量
waiting — 開啓 keep-alive 的狀況下,這個值等於 active – (reading+writing), 意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留鏈接.
5) 採集器的運行
6) 監控項目建立
7) 監控項目查看
3.2 Apache 服務性能監控
1)內網採集器的建立
2) Python環境部署
詳見《SER-App-0028-監控寶服務器與服務性能監控配置》內Python環境部署部分。
3) SNMP安裝與配置
詳見《監控寶服務器與服務性能監控配置》內SNMP安裝配置部分。
1) Apache開啓狀態頁面
Apache的安裝
配置文件裏面須要開啓apache狀態模塊
ExtendedStatus On <Location /Server-status> SetHandler Server-status Order deny,allow Deny from all Allow from all </Location>
5)採集器的運行
6)監控項目建立
7)監控項目查看
3.3 Mysql 服務性能監控
1) 內網採集器的建立
2) Python環境部署
若要使用mysql性能監控,須要安裝Python的MySQLdb擴展件。
具體參考http://blog.jiankongbao.com/?p=1556
安裝mysql插件
windows2003
請訪問 http://sourceforge.net/projects/mysql-python/ 找對應下載文件
http://jaist.dl.sourceforge.net/project/mysql-python/mysql-python-test/1.2.4b4/MySQL-python-1.2.4b4.win32-py2.7.exe
默認安裝便可。
linux下 須要根據您安裝的python版原本安裝對應的 ‘Python interface’
ubuntu下的須要apt-get install python-mysqldb
centos下須要 yum install Mysql-python
若是python是編譯的請將mysql-python從新編譯進去。
2) SNMP安裝與配置
詳見《SER-App-0028-監控寶服務器與服務性能監控配置》內SNMP安裝配置部分。
3) Mysql配置
添加mysql用戶
在被監測的myql上執行
>CREATE USER ‘xuel’@’你的採集器的IP’ IDENTIFIED BY ‘your_password’; >flush privileges;
受權用戶遠程鏈接
重啓採集器
安裝完mysql-python 以後 ,雙擊 stop.bat ,按任意鍵退出,並退出以前的採集器窗 口。雙擊start.bat
測試已經能夠正常鏈接數據庫。
5) 採集器的運行
6) 監控項目建立
7) 監控項目查看
3.4 IIS 服務性能監控
1) 內網採集器的建立
選擇IIS插件
下載對應window版本
2) Python環境部署
採集器運行須要Python環境,詳見《SER-App-0028-監控寶服務器與服務性能監控配置》
3) 採集器的運行
被監控服務器查看IIS服務器日誌路徑
4) 監控項目建立
5) 監控項目查看
3.5 Tomcat 服務性能監控
1) 內網採集器的建立
選擇tomcat插件
下載對應Linux版本
2) Python環境部署
採集器運行須要Python環境,詳見《SER-App-0028-監控寶服務器與服務性能監控配置》
3) Tomcat需求配置
安裝部署好tomcat後,須要配置狀態面的登陸用戶名和密碼
啓動服務
Tomcat狀態頁
查看狀態頁面
4) 採集器的運行
5) 監控項目建立
6) 監控項目查看
3.6 SQLserver 服務性能監控
1) 內網採集器的建立
選擇SQLserver插件
下載對應window版本
2) Python環境部署
採集器運行須要Python環境,詳見《SER-App-0028-監控寶服務器與服務性能監控配置》
3) 被監控服務器配置
若要使用sql server性能監控,須要安裝pyodbc擴展,使得python能鏈接sql server
Pyodbc的下載地址:
https://pypi.python.org/pypi/pyodbc/#downloads
安裝pip
4) 採集器的運行
5) 監控項目建立
6) 監控項目查看
3.7 Mongodb服務性能監控
1) 內網採集器的建立
選擇Mongodb插件
下載對應Linux版本
2) Python環境部署
採集器運行須要Python環境,詳見《SER-App-0028-監控寶服務器與服務性能監控配置》
3) Mongodb配置
爲方便部署,目前已經講Mongodb的安裝寫成腳本,腳本見附錄
啓動mongodb須要加httpinterface WEB界面接口
4) 採集器的運行
5) 監控項目建立
6) 監控項目查看
3.8 Lighttpd 服務性能監控
1) 內網採集器的建立
選擇Lighttpd插件
下載對應Linux版本
2) Python環境部署
採集器運行須要Python環境,詳見《SER-App-0028-監控寶服務器與服務性能監控配置》
3) Lighttpd配置
爲方便部署,目前已經講Lighttpd的安裝寫成腳本,腳本見附錄
啓用狀態模塊
4) 採集器的運行
5) 監控項目建立
6) 監控項目查看
3.9 Redis 服務性能監控
1) 內網採集器的建立
2) Python環境部署
採集器運行須要Python環境,詳見《SER-App-0028-監控寶服務器與服務性能監控配置》
3) Redis配置
爲方便部署,目前已經講Redis的安裝寫成腳本,腳本見附錄
4) 採集器的運行
4 ) 監控項目建立
5) 監控項目查看
3.10 Memcache 服務性能監控
1) 內網採集器的建立
2) Python環境部署
採集器運行須要Python環境,詳見《SER-App-0028-監控寶服務器與服務性能監控配置》
3) Memcache的配置
爲方便部署,目前已經講Memcache的安裝寫成腳本,腳本見附錄
在建立項目時下載memcache文件,併發布到web服務器,下圖 爲狀態頁信息
4) 採集器的運行
5) 監控項目建立
6) 監控項目查看
3.11 Oracle 服務性能監控
1) 內網採集器的建立
2) Python環境部署
採集器運行須要Python環境,詳見《監控寶服務器與服務性能監控配置》
3) Oracle配置
須要修改監聽端口爲公網,修改listener文件,重啓oracle服務
Oracle web界面管理端口1158 URL:https://192.168.111.96:1158/em
5) 監控項目建立
6) 監控項目查看
4、注意事項
4.1 採集器或採集腳本設置開機自啓
爲保障被監控服務當出現異常重啓後採集其自動啓動,爲此須要寫腳本講採集器寫如開機自啓動,保障服務器恢復後,正常監控服務。
建立一個單獨的採集器目錄,並寫入/etc/rc.local中。
如建立scripts 目錄
bash /scripts/jkb_agent/start.sh
4.1 Mysql監控須要安裝插件
若是沒有安裝MySQL-python 在 採集器的LOG中 會報相應的錯誤 內容相似以下:
2013-05-29 18:16:23,638 ERROR relation_id:1310 type:mysql error:Traceback (most recent call last): File 「C:\jkb_agent_windows\jkb_agent\plugin\MySQLPlugin.py」, line 51, in getData import MySQLdb ImportError: No module named MySQLdb2013-05-29 18:16:23,638 ERROR relation_id:1310 type:mysql error:Traceback (most recent call last): import MySQLdb ImportError: No module named MySQLdb
4.2 WEB應用
檢查服務內部WEB中間件是否內部加載status模塊,使用瀏覽器測試是否能夠正常打開status頁面。
4.3檢測SNMP數據
檢查防火牆是否開啓對應UDP端口,使用snmpwalk -v SNMP版本 -c 團體名稱 檢測IP .
測試是否有數據返回。
此處以5min CPU的負載來測試。
使用Windows下測試工具MIB Browser測試是否有監控數據返回。
填寫被監控端IP地址、SNMP團體號、端口等信息。
有數據出現,即配置正確,能夠獲取主機數據。
4.5 SQLserver 監控安裝pyodbc
基於python環境編寫的採集器運行須要相關python模塊的支持,須要安裝pip來安裝pyodbc
4.6 Mongodb 須要安裝JSON
須要安裝python-json lib包
4.7 Redis 部署問題
Redis在監控過程當中,發佈到被監控服務器WEB應用中狀態頁是由php語言編寫,須要安裝php環境支持,須要開啓php-redis模塊
基於python語言編寫的採集器須要python-redis模塊支持,才能夠正常獲取數據。
4.8 Oracle 須要修改主機監聽端口
Oracle安裝完成後,默認1521端口之上本地監聽,監控寶建立監控項目中監控項目鏈接名須要指明端口,因此須要修改監聽端口爲公網,修改listener文件,(HOST=被監控主機名),以後重啓oracle服務。
監控項目Orale鏈接明爲:IP:端口/數據庫實例名稱
如:192.168.111.96:1521/orcl
5、附錄
目前已經將Linux下安裝一些服務寫成腳本,均爲centos 6.x實驗,後期有需求能夠拓展更多版本,更便於快速部署基本環境。
AutoInstallRedis.sh #!/bin/bash ############# #mail xuel@anchnet.com echo "##########################################" echo "Auto Install Redis ##" echo "Press Ctrl + C to cancel ##" echo "Any key to continue ##" echo "##########################################" read -n 1 /etc/init.d/iptables stop sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config if [ -d /tools ];then cd /tools else mkdir /tools && cd /tools fi yum -y install wget wget -c -O /tools/redis http://download.redis.io/releases/redis-3.0.2.tar.gz tar -zxvf redis cd redis-3.0.2 make cd src/ make test make install cp redis.conf /etc/ cat >> /etc/init.d/redis << EOF #!/bin/bash # # Init file for redis # # chkconfig: - 80 12 # description: redis daemon # # processname: redis # config: /etc/redis.conf # pidfile: /var/run/redis.pid source /etc/init.d/functions #BIN="/usr/local/bin" BIN="/usr/local/bin" CONFIG="/etc/redis.conf" PIDFILE="/var/run/redis.pid" ### Read configuration [ -r "$SYSCONFIG" ] && source "$SYSCONFIG" RETVAL=0 prog="redis-server" desc="Redis Server" start() { if [ -e $PIDFILE ];then echo "$desc already running...." exit 1 fi echo -n $"Starting $desc: " daemon $BIN/$prog $CONFIG RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Stop $desc: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE return $RETVAL } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; condrestart) [ -e /var/lock/subsys/$prog ] && restart RETVAL=$? ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {startstoprestartcondrestartstatus}" RETVAL=1 esac exit $RETVAL EOF chmod 755 /etc/init.d/redis sed -i "s/daemonize no/daemonize yes/g" /etc/redis.conf chkconfig redis on service redis start echo -e "\033[32m Redis install success\033[0m" netstat -lntup | grep redis 5.3 AutoInstallMongodb.sh #!/bin/bash #mail xuel@anchnet.com echo "##########################################" echo "Auto Install Mongodb ##" echo "Press Ctrl + C to cancel ##" echo "Any key to continue ##" echo "##########################################" read -n 1 /etc/init.d/iptables status >/dev/null 2>&1 if [ $? -eq 0 ] then iptables -I INPUT -p tcp --dport 27017 -j ACCEPT && iptables -I INPUT -p tcp --dport 28017 -j ACCEPT && iptables-save >/dev/null 2>&1 else echo -e "\033[32m iptables is stopd\033[0m" fi sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config setenforce 0 ################################ if [ -d /opt ];then cd /opt else mkdir /opt && cd /opt fi yum -y install wget yum groupinstall "Development tools" -y wget -c -O /opt/mongodb https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.9.tgz tar -zxvf mongodb-linux-x86_64-rhel62-3.2.9.tgz mv mongodb-linux-x86_64-rhel62-3.2.9 mongodb cd mongodb mkdir log && mkdir data cd log && touch mongodb.log cd .. ./bin/mongod --httpinterface --dbpath /opt/mongodb/data/ --logpath /opt/mongodb/log/mongodb.log --fork echo -e "\033[32m Mongodb install success\033[0m" netstat -lntup | grep mongod 5.4 AutoInstallLighttpd.sh #!/bin/bash #mail xuel@anchnet.com echo "##########################################" echo "Auto Install Lighttpd ##" echo "Press Ctrl + C to cancel ##" echo "Any key to continue ##" echo "##########################################" read -n 1 /etc/init.d/iptables status >/dev/null 2>&1 if [ $? -eq 0 ] then iptables -I INPUT -p tcp --dport 80 -j ACCEPT && iptables-save >/dev/null 2>&1 else echo -e "\033[32m iptables is stopd\033[0m" fi sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config setenforce 0 ####################################### if [ -d /tools ];then cd /tools else mkdir /tools && cd /tools fi yum -y install wget gcc yum groupinstall "Development tools" -y wget -c -O /tools/lighttpd http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.41.tar.gz yum -y install gcc pcre-devel zlib-devel vim bzip2-devel cd /tools/ tar zxvf lighttpd cd lighttpd-1.4.41 ./configure --prefix=/usr/local/lighttpd make && make install /etc/init.d/lighttpd start echo -e "\033[32m Lighttp install success\033[0m" netstat -lntup | grep lighttpd 5.5 AutoInstallMemcache.sh #!/bin/bash #mail xuel@anchnet.com echo "##########################################" echo "Auto Install memcached ##" echo "Press Ctrl + C to cancel ##" echo "Any key to continue ##" echo "##########################################" read -n 1 /etc/init.d/iptables status >/dev/null 2>&1 if [ $? -eq 0 ] then iptables -I INPUT -p tcp --dport 11211 -j ACCEPT && iptables-save >/dev/null 2>&1 else echo -e "\033[32m iptables is stopd\033[0m" fi sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config setenforce 0 ################################ if [ -d /tools ];then cd /tools else mkdir /tools && cd /tools fi yum -y install wget gcc libevent libevent-devel yum groupinstall "Development tools" -y wget -c -O /tools/memcached http://memcached.org/files/memcached-1.4.31.tar.gz tar -zxvf memcached cd memcached-1.4.31 ./configure make make install /usr/local/bin/memcached -d -u root echo -e "\033[32m Memcache install success\033[0m" netstat -lntup | grep memcached