天天看点

监控宝服务性能监控配置(完整版)监控宝服务性能监控配置(完整版)

继上篇监控宝服务器监控后,此篇博文详细记录下项目中对常用服务监控的配置步骤

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc26900">一、目的 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc4191">二、理论基础 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc19381">2.1 相关理论 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc28096">2.2 监控项目 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc5224">三、服务性能监控部署 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc8010">3.1 Nginx 服务性能监控 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc21128">3.2 Apache 服务性能监控 6</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc3026">3.3 Mysql 服务性能监控 9</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc15063">3.4 IIS 服务性能监控 14</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc24909">3.5 Tomcat 服务性能监控 16</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc18122">3.6 SQLserver 服务性能监控 20</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc29033">3.7 Mongodb服务性能监控 23</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc28472">3.8 Lighttpd 服务性能监控 25</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc4088">3.9 Redis 服务性能监控 28</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc26012">3.10 Memcache 服务性能监控 31</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc27063">3.11 Oracle 服务性能监控 33</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc2117">四、注意事项 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc15917">4.1 Mysql监控需要安装插件 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc28972">4.2 WEB应用 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc32192">4.3检测SNMP数据 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc15426">4.5 SQLserver 监控安装pyodbc 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc5423">4.6 Mongodb 需要安装JSON 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc18811">4.7 Redis 部署问题 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc14862">4.8 Oracle 需要修改主机监听端口 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc8160">五、附录 41</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc26620">5.1 AutoInstallSNMP.sh 41</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc612">5.2 AutoInstallRedis.sh 43</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc31910">5.3 AutoInstallMongodb.sh 45</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc3168">5.4 AutoInstallLighttpd.sh 46</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc4317">5.5 AutoInstallMemcache.sh 47</a>

一、目的

二、理论基础

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)内网采集器的创建

3)  SNMP安装与配置

详见《监控宝服务器与服务性能监控配置》内SNMP安装配置部分。

1) Apache开启状态页面

Apache的安装

配置文件里面需要开启apache状态模块

1

2

3

4

5

6

7

<code>ExtendedStatus On</code>

<code>&lt;Location </code><code>/Server-status</code><code>&gt;</code>

<code>SetHandler Server-status</code>

<code>Order deny,allow</code>

<code>Deny from all</code>

<code>Allow from all</code>

<code>&lt;</code><code>/Location</code><code>&gt;</code>

5)采集器的运行

6)监控项目创建

7)监控项目查看

3.3 Mysql 服务性能监控

若要使用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安装与配置

3) Mysql配置

添加mysql用户

在被监测的myql上执行

<code>&gt;CREATE USER ‘xuel’@’你的采集器的IP’ IDENTIFIED BY ‘your_password’;</code>

<code>&gt;flush privileges;</code>

授权用户远程连接

重启采集器

安装完mysql-python 之后 ,双击 stop.bat ,按任意键退出,并退出之前的采集器窗 口。双击start.bat

测试已经可以正常连接数据库。

3.4 IIS 服务性能监控

选择IIS插件

下载对应window版本

采集器运行需要Python环境,详见《SER-App-0028-监控宝服务器与服务性能监控配置》

3) 采集器的运行

被监控服务器查看IIS服务器日志路径

4) 监控项目创建

5) 监控项目查看

3.5 Tomcat 服务性能监控

选择tomcat插件

下载对应Linux版本

3) Tomcat需求配置

安装部署好tomcat后,需要配置状态面的登录用户名和密码

启动服务

Tomcat状态页

查看状态页面

4) 采集器的运行

5) 监控项目创建

6) 监控项目查看

3.6 SQLserver 服务性能监控

选择SQLserver插件

3) 被监控服务器配置

若要使用sql server性能监控,需要安装pyodbc扩展,使得python能连接sql server

Pyodbc的下载地址:

<a href="http://blog.51cto.com/kaliarch/2045128#downloads">https://pypi.python.org/pypi/pyodbc/#downloads</a>

安装pip

3.7 Mongodb服务性能监控

选择Mongodb插件

3) Mongodb配置

为方便部署,目前已经讲Mongodb的安装写成脚本,脚本见附录

启动mongodb需要加httpinterface WEB界面接口

3.8 Lighttpd 服务性能监控

选择Lighttpd插件

3) Lighttpd配置

   为方便部署,目前已经讲Lighttpd的安装写成脚本,脚本见附录

启用状态模块

3.9 Redis 服务性能监控

3) Redis配置

为方便部署,目前已经讲Redis的安装写成脚本,脚本见附录

4 ) 监控项目创建

3.10 Memcache 服务性能监控

3) Memcache的配置

    为方便部署,目前已经讲Memcache的安装写成脚本,脚本见附录

在创建项目时下载memcache文件,并发布到web服务器,下图 为状态页信息

3.11 Oracle 服务性能监控

采集器运行需要Python环境,详见《监控宝服务器与服务性能监控配置》

3) Oracle配置

需要修改监听端口为公网,修改listener文件,重启oracle服务

四、注意事项

4.1 采集器或采集脚本设置开机自启

为保障被监控服务当出现异常重启后采集其自动启动,为此需要写脚本讲采集器写如开机自启动,保障服务器恢复后,正常监控服务。

创建一个单独的采集器目录,并写入/etc/rc.local中。

如创建scripts 目录

bash /scripts/jkb_agent/start.sh

4.1 Mysql监控需要安装插件

如果没有安装MySQL-python  在 采集器的LOG中 会报相应的错误 内容类似如下:

<code>2013-05-29 18:16:23,638 ERROR relation_id:1310  </code><code>type</code><code>:mysql  error:Traceback (most recent call last):</code>

<code>File “C:\jkb_agent_windows\jkb_agent\plugin\MySQLPlugin.py”, line 51, </code><code>in</code> <code>getData</code>

<code>import</code> <code>MySQLdb</code>

<code>ImportError: No module named MySQLdb2013-05-29 18:16:23,638 ERROR relation_id:1310  </code><code>type</code><code>:mysql  error:Traceback (most recent call last):</code>

<code>ImportError: No module named MySQLdb</code>

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实验,后期有需求可以拓展更多版本,更便于快速部署基本环境。

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

<code>AutoInstallRedis.sh</code>

<code>#!/bin/bash</code>

<code>#############</code>

<code>#mail [email protected]</code>

<code>echo</code> <code>"##########################################"</code>

<code>echo</code> <code>"Auto Install Redis                      ##"</code>

<code>echo</code> <code>"Press Ctrl + C to cancel                ##"</code>

<code>echo</code> <code>"Any key to continue                     ##"</code>

<code>read</code> <code>-n 1</code>

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>stop</code>

<code>sed</code> <code>-i </code><code>"s/SELINUX=enforcing/SELINUX=disabled/"</code>  <code>/etc/selinux/config</code>

<code>if</code> <code>[ -d </code><code>/tools</code> <code>];</code><code>then</code>

<code>    </code><code>cd</code> <code>/tools</code>

<code>else</code>

<code>    </code><code>mkdir</code> <code>/tools</code> <code>&amp;&amp; </code><code>cd</code> <code>/tools</code>

<code>fi</code>

<code>yum -y </code><code>install</code> <code>wget</code>

<code>wget -c -O </code><code>/tools/redis</code> <code>http:</code><code>//download</code><code>.redis.io</code><code>/releases/redis-3</code><code>.0.2.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>-zxvf redis</code>

<code>cd</code> <code>redis-3.0.2</code>

<code>make</code>

<code>cd</code> <code>src/</code>

<code>make</code> <code>test</code>

<code>make</code> <code>install</code>

<code>cp</code> <code>redis.conf </code><code>/etc/</code>

<code>cat</code> <code>&gt;&gt; </code><code>/etc/init</code><code>.d</code><code>/redis</code> <code>&lt;&lt; EOF</code>

<code>#</code>

<code># Init file for redis</code>

<code># chkconfig: - 80 12</code>

<code># description: redis daemon</code>

<code># processname: redis</code>

<code># config: /etc/redis.conf</code>

<code># pidfile: /var/run/redis.pid</code>

<code>source</code> <code>/etc/init</code><code>.d</code><code>/functions</code>

<code>#BIN="/usr/local/bin"</code>

<code>BIN=</code><code>"/usr/local/bin"</code>

<code>CONFIG=</code><code>"/etc/redis.conf"</code>

<code>PIDFILE=</code><code>"/var/run/redis.pid"</code>

<code>### Read configuration</code>

<code>[ -r </code><code>"$SYSCONFIG"</code> <code>] &amp;&amp; </code><code>source</code> <code>"$SYSCONFIG"</code>

<code>RETVAL=0</code>

<code>prog=</code><code>"redis-server"</code>

<code>desc=</code><code>"Redis Server"</code>

<code>start() {</code>

<code>        </code><code>if</code> <code>[ -e $PIDFILE ];</code><code>then</code>

<code>            </code><code>echo</code> <code>"$desc already running...."</code>

<code>            </code><code>exit</code> <code>1</code>

<code>        </code><code>fi</code>

<code>        </code><code>echo</code> <code>-n $</code><code>"Starting $desc: "</code>

<code>        </code><code>daemon $BIN/$prog $CONFIG</code>

<code>        </code><code>RETVAL=$?</code>

<code>        </code><code>echo</code>

<code>        </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>touch</code> <code>/var/lock/subsys/</code><code>$prog</code>

<code>        </code><code>return</code> <code>$RETVAL</code>

<code>}</code>

<code>stop() {</code>

<code>        </code><code>echo</code> <code>-n $</code><code>"Stop $desc: "</code>

<code>        </code><code>killproc $prog</code>

<code>        </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>rm</code> <code>-f </code><code>/var/lock/subsys/</code><code>$prog $PIDFILE</code>

<code>restart() {</code>

<code>        </code><code>stop</code>

<code>        </code><code>start</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>  </code><code>start)</code>

<code>        </code><code>;;</code>

<code>  </code><code>stop)</code>

<code>  </code><code>restart)</code>

<code>        </code><code>restart</code>

<code>  </code><code>condrestart)</code>

<code>        </code><code>[ -e </code><code>/var/lock/subsys/</code><code>$prog ] &amp;&amp; restart</code>

<code>  </code><code>status)</code>

<code>        </code><code>status $prog</code>

<code>  </code><code>*)</code>

<code>        </code><code>echo</code> <code>$</code><code>"Usage: $0 {startstoprestartcondrestartstatus}"</code>

<code>        </code><code>RETVAL=1</code>

<code>esac</code>

<code>exit</code> <code>$RETVAL</code>

<code>EOF</code>

<code>chmod</code> <code>755 </code><code>/etc/init</code><code>.d</code><code>/redis</code>

<code>sed</code> <code>-i </code><code>"s/daemonize no/daemonize yes/g"</code> <code>/etc/redis</code><code>.conf</code>

<code>chkconfig redis on</code>

<code>service redis start</code>

<code>echo</code> <code>-e </code><code>"\033[32m Redis install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>redis</code>

<code> </code> 

<code>5.3 AutoInstallMongodb.sh</code>

<code>echo</code> <code>"Auto Install Mongodb                    ##"</code>

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>status &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ]</code>

<code>then</code>

<code>iptables -I INPUT -p tcp --dport 27017 -j ACCEPT &amp;&amp; </code>

<code>iptables -I INPUT -p tcp --dport 28017 -j ACCEPT &amp;&amp;</code>

<code>iptables-save &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[32m iptables is stopd\033[0m"</code>

<code>setenforce 0</code>

<code>################################</code>

<code>if</code> <code>[ -d </code><code>/opt</code> <code>];</code><code>then</code>

<code>    </code><code>cd</code> <code>/opt</code>

<code>    </code><code>mkdir</code> <code>/opt</code> <code>&amp;&amp; </code><code>cd</code> <code>/opt</code>

<code>yum groupinstall </code><code>"Development tools"</code> <code>-y</code>

<code>wget -c -O </code><code>/opt/mongodb</code> <code>https:</code><code>//fastdl</code><code>.mongodb.org</code><code>/linux/mongodb-linux-x86_64-rhel62-3</code><code>.2.9.tgz</code>

<code>tar</code> <code>-zxvf mongodb-linux-x86_64-rhel62-3.2.9.tgz</code>

<code>mv</code> <code>mongodb-linux-x86_64-rhel62-3.2.9 mongodb</code>

<code>cd</code>  <code>mongodb</code>

<code>mkdir</code> <code>log &amp;&amp; </code><code>mkdir</code> <code>data</code>

<code>cd</code> <code>log &amp;&amp; </code><code>touch</code> <code>mongodb.log</code>

<code>cd</code> <code>..</code>

<code>.</code><code>/bin/mongod</code> <code>--httpinterface --dbpath </code><code>/opt/mongodb/data/</code> <code>--logpath </code><code>/opt/mongodb/log/mongodb</code><code>.log --fork</code>

<code>echo</code> <code>-e </code><code>"\033[32m Mongodb install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>mongod </code>

<code>5.4 AutoInstallLighttpd.sh</code>

<code>echo</code> <code>"Auto Install Lighttpd                   ##"</code>

<code>iptables -I INPUT -p tcp --dport 80 -j ACCEPT &amp;&amp; </code>

<code>#######################################</code>

<code>yum -y </code><code>install</code> <code>wget  gcc</code>

<code>wget -c -O </code><code>/tools/lighttpd</code> <code>http:</code><code>//download</code><code>.lighttpd.net</code><code>/lighttpd/releases-1</code><code>.4.x</code><code>/lighttpd-1</code><code>.4.41.</code><code>tar</code><code>.gz</code>

<code>yum -y </code><code>install</code> <code>gcc pcre-devel zlib-devel vim </code><code>bzip2</code><code>-devel</code>

<code>cd</code> <code>/tools/</code>

<code>tar</code> <code>zxvf lighttpd</code>

<code>cd</code> <code>lighttpd-1.4.41</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/lighttpd</code>

<code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code> 

<code>/etc/init</code><code>.d</code><code>/lighttpd</code> <code>start</code>

<code>echo</code> <code>-e </code><code>"\033[32m Lighttp install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>lighttpd</code>

<code>5.5 AutoInstallMemcache.sh</code>

<code>echo</code> <code>"Auto Install memcached                   ##"</code>

<code>echo</code> <code>"Press Ctrl + C to cancel                 ##"</code>

<code>echo</code> <code>"Any key to continue                      ##"</code>

<code>iptables -I INPUT -p tcp --dport 11211 -j ACCEPT &amp;&amp; </code>

<code>yum -y </code><code>install</code> <code>wget gcc libevent libevent-devel</code>

<code>wget -c -O </code><code>/tools/memcached</code> <code>http:</code><code>//memcached</code><code>.org</code><code>/files/memcached-1</code><code>.4.31.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>-zxvf memcached</code>

<code>cd</code>  <code>memcached-1.4.31</code>

<code>.</code><code>/configure</code>

<code>/usr/local/bin/memcached</code> <code>-d -u root</code>

<code>echo</code> <code>-e </code><code>"\033[32m Memcache install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>memcached</code>

本文转自 KaliArch 51CTO博客,原文链接:http://blog.51cto.com/kaliarch/2045128,如需转载请自行联系原作者