继上篇监控宝服务器监控后,此篇博文详细记录下项目中对经常使用服务监控的配置步骤
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