继上篇监控宝服务器监控后,此篇博文详细记录下项目中对常用服务监控的配置步骤
服务器监控可参考:http://blog.51cto.com/kaliarch/2044977
监控宝服务性能监控配置(完整版)
一、目的
本文是在《监控宝服务器与服务性能监控配置》(URL:http://blog.51cto.com/kaliarch/2044977)文档的基础上继续完善其中的服务性能监控,目前监控宝服务性能监控项目为11个,经过部署环境,测试监控服务,已经完成全部服务性能监控测试,如有需求可以参考此文档部署服务性能监控。
二、理论基础
2.1 相关理论
详见《监控宝服务器与服务性能监控配置》内监控理论部分。
2.2 监控项目
服务性能监控项目
三、服务性能监控部署
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.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
五、附录
目前已经将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