继上篇监控宝服务器监控后,此篇博文详细记录下项目中对常用服务监控的配置步骤
监控宝服务性能监控配置(完整版)
一、目的
本文是在《监控宝服务器与服务性能监控配置》(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
SetHandler Server-status
Order deny,allow
Deny from all
Allow from all
5)采集器的运行
6)监控项目创建
7)监控项目查看
3.3 Mysql 服务性能监控
1)内网采集器的创建
2)Python环境部署
若要使用mysql性能监控,需要安装Python的MySQLdb扩展件。
安装mysql插件
windows2003
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的下载地址:
安装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服务
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 <
#!/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