天天看点

Ganglia:分布式监控系统

Ganglia:分布式监控系统

Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用

Ganglia监控端安装

1、安装依赖的软件包

1

<code>yum </code><code>install</code> <code>ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake </code><code>bzip2</code><code>-devel ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel  pam-devel python-devel perl perl-devel expat expat-devel pcre pcre-devel apr apr-devel cairo-devel和pango-devel</code>

需要安装rrdtool工具 最新版本的ganglia已可以直接使用yum安装rrdtool工具即可,

2、安装confuse

2

3

4

5

<code>wget http:</code><code>//download</code><code>.savannah.gnu.org</code><code>/releases/confuse/confuse-2</code><code>.7.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxf confuse-2.7.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>confuse-2.7</code>

<code>.</code><code>/configure</code> <code>CFLAGS=-fPIC --disable-nls ;</code><code>make</code><code>;</code><code>make</code> <code>install</code> 

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

3、安装ganglia

6

7

8

9

10

11

12

13

14

15

<code> </code><code>wget http:</code><code>//downloads</code><code>.sourceforge.net</code><code>/project/ganglia/ganglia</code><code>%20monitoring%20core</code><code>/3</code><code>.3.1</code><code>/ganglia-3</code><code>.3.1.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxf ganglia-3.3.1.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>ganglia-3.3.1</code>

<code>#server 监控端</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/ganglia</code> <code>--with-static-modules --</code><code>enable</code><code>-gexec --</code><code>enable</code><code>-status --with-gmetad --with-python=</code><code>/usr</code> <code>--with-librrd=</code><code>/usr/local/rrdtool</code> <code>--with-libexpat=</code><code>/usr</code> <code>--with-libconfuse=</code><code>/usr/local</code> <code>--with-libpcre</code>

<code>make</code>

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

<code>cd</code> <code>gmetad</code>

<code>cp</code> <code>gmetad.conf </code><code>/opt/modules/ganglia/etc/</code>

<code>cp</code> <code>gmetad.init </code><code>/etc/init</code><code>.d</code><code>/gmetad</code>

<code>vim </code><code>/etc/init</code><code>.d</code><code>/gmetad</code>

<code>修改为GMETAD=</code><code>/usr/local/ganglia/sbin/gmetad</code>

<code>ip route add 239.2.11.71 dev eth0  </code><code>##添加广播路由</code>

Ganglia:被监控端安装:

<code>yum </code><code>install</code> <code>ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake </code><code>bzip2</code><code>-devel ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel  pam-devel python-devel perl perl-devel expat expat-devel pcre pcre-devel apr apr-devel</code>

2、安装ganglia

16

17

18

<code>wget http:</code><code>//downloads</code><code>.sourceforge.net</code><code>/project/ganglia/ganglia</code><code>%20monitoring%20core</code><code>/3</code><code>.3.1</code><code>/ganglia-3</code><code>.6.0.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxf ganglia-3.6.0.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>ganglia-3.6.0</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/ganglia</code> <code>--</code><code>enable</code><code>-gexec --</code><code>enable</code><code>-status --with-python=</code><code>/usr</code> <code>--with-libapr --with-libconfuse=</code><code>/usr/local</code> <code>--with-libexpat=</code><code>/usr</code> <code>--with-libpcre</code>

<code>cd</code> <code>gmond</code>

<code>.</code><code>/gmond</code> <code>-t &gt; </code><code>/usr/local/ganglia/etc/gmond</code><code>.conf</code>

<code>cp</code> <code>gmetad.init </code><code>/etc/init</code><code>.d</code><code>/gmond</code>

<code>vim </code><code>/etc/init</code><code>.d</code><code>/gmond</code>

<code>修改为:</code>

<code>GMETAD=</code><code>/usr/local/ganglia/sbin/gmond</code>

<code>mkdir</code> <code>/usr/local/ganglia/lib64/ganglia/python_modules</code>

<code>cp</code> <code>python_modules/*/*.py </code><code>/usr/local/ganglia/lib64/ganglia/python_modules</code>

<code>ip route add 239.2.11.71 dev eth0</code>

安装已完成,过程简单。

自行下载配置使用即可。

下面来监控,使其能正常工作和使用。

ganglia是分布式监控系统,也可以不使用分布来用。下面就分两种方式来解说。

1、不使用分布式来监控的方式

<code>服务器配置文件</code>

<code>修改两项:</code>

<code>data_source </code><code>"test1"</code> <code>192.168.107.2</code>

<code>data_source </code><code>"test2"</code> <code>172.16.1.4</code>

<code>##这里分了两个监控组</code>

<code>data_source是关键字,</code>

<code>“test1,test2” 是监控主机组的名字,全局要唯一。 后面跟着要监控的ip或主机名,如果有多个可以用空格隔开就可以了</code>

<code>gridname </code><code>"Test"</code>

<code>这个是定义监控集的名字,</code>

如下所示:

现在ganglia还没有启动,在启动之前执行下面命令:

可以使用命令查看是不是有配置错误的地方导致启动不了

/usr/local/ganglia/sbin/gmetad -d 5

出错的地方应该可以修改配置文件gmetad.conf得到修正、

service gmetad start 来启动服务

好了,再看客户端的配置吧

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

<code>在客户端配置</code>

<code>globals {</code>

<code>  </code><code>daemonize = </code><code>yes</code>

<code>  </code><code>setuid = </code><code>yes</code>

<code>  </code><code>user = nobody</code>

<code>  </code><code>debug_level = 0</code>

<code>  </code><code>max_udp_msg_len = 1472</code>

<code>  </code><code>mute = no</code>

<code>  </code><code>deaf = no</code>

<code>  </code><code>allow_extra_data = </code><code>yes</code>

<code>  </code><code>host_dmax = 86400 /*secs. Expires (removes from web interface) hosts </code><code>in</code> <code>1 day */</code>

<code>  </code><code>host_tmax = 20 /*secs */</code>

<code>  </code><code>cleanup_threshold = 300 /*secs */</code>

<code>  </code><code>gexec = no</code>

<code>  </code><code># By default gmond will use reverse DNS resolution when displaying your hostname</code>

<code>  </code><code># Uncommeting following value will override that value.</code>

<code>  </code><code># override_hostname = "mywebserver.domain.com"</code>

<code>  </code><code># If you are not using multicast this value should be set to something other than 0.</code>

<code>  </code><code># Otherwise if you restart aggregator gmond you will get empty graphs. 60 seconds is reasonable</code>

<code>  </code><code>send_metadata_interval = 0 /*secs */</code>

<code>}</code>

<code>cluster {</code>

<code>  </code><code>name = </code><code>"test1"</code>      <code>####需要修改与服务器端设定相同的名字 ###</code>

<code>  </code><code>owner = </code><code>"nobody"</code>         <code>###修改为nobody</code>

<code>  </code><code>latlong = </code><code>"unspecified"</code>

<code>  </code><code>url = </code><code>"unspecified"</code>

<code>host {</code>

<code>  </code><code>location = </code><code>"unspecified"</code>

<code>udp_send_channel {</code>

<code>  </code><code>#bind_hostname = yes # Highly recommended, soon to be default.</code>

<code>                       </code><code># This option tells gmond to use a source address</code>

<code>                       </code><code># that resolves to the machine's hostname.  Without</code>

<code>                       </code><code># this, the metrics may appear to come from any</code>

<code>                       </code><code># interface and the DNS names associated with</code>

<code>                       </code><code># those IPs will be used to create the RRDs.</code>

<code>  </code><code>mcast_join = 239.2.11.71  </code><code>##与设定的要一样哦</code>

<code>  </code><code>port = 8649               </code><code>##默认端口</code>

<code>  </code><code>ttl = 1</code>

<code>udp_recv_channel {</code>

<code>  </code><code>mcast_join = 239.2.11.71   </code><code>##与设定的要一样哦</code>

<code>  </code><code>port = 8649                </code><code>##默认端口</code>

<code>  </code><code>bind = 239.2.11.71</code>

<code>  </code><code>retry_bind = </code><code>true</code>

<code>  </code><code># Size of the UDP buffer. If you are handling lots of metrics you really</code>

<code>  </code><code># should bump it up to e.g. 10MB or even higher.</code>

<code>  </code><code># buffer = 10485760</code>

<code>/* You can specify as many tcp_accept_channels as you like to share</code>

<code>   </code><code>an xml description of the state of the cluster */</code>

<code>tcp_accept_channel {</code>

<code>  </code><code>port = 8649</code>

<code>  </code><code># If you want to gzip XML output</code>

<code>  </code><code>gzip_output = no</code>

启动客户端

在客户端也是可以使用debug来调试配置是不是有错

/usr/local/ganglia/sbin/gmond -d 5

service gmond start

下面来说第2种分布式监控系统

2、分布式监控

主gmetad    多个次gmetad    被监控点

|------ gmond

     _ gmetad---|------ gmond

     | |------ gmond

     | 

gmetad-------|_ gmetad---|-------gmond

      |     |          |------gmond

      |       |__ gmetad----|------gmond

      |  |------gmond

      |_gmond

      |-gmond

从面可以看到多个gmetad点和多个gmond点

主要是从次节点的配置:

<code>下面对次节点配置如下</code>

<code> </code><code>gmetad.conf</code>

<code> </code><code>配置如下:</code>

<code> </code><code>data_source </code><code>"test2"</code> <code>localhost ip</code><code>/hostname</code>

<code> </code><code>gmond.conf配置文件如下:</code>

<code> </code><code>cluster {</code>

<code>  </code><code>name = </code><code>"test2"</code>

<code>  </code><code>owner = </code><code>"nobody"</code>

<code>  </code><code>mcast_join = 172.16.1.4 </code><code>####次节点的ip地址。也就次节点自己的ip地址</code>

<code>  </code><code>}</code>

<code>  </code><code>family = inet4</code>

次节点下的gmond节点配置与次节点gmond的配置一样,直接copy一份到gmond上面就好。

关于Ganglia的主要配置到此为止了。Ganglia的views功能还在研究当中,不过这个view添加很麻烦,我配置的好久也,只是在配置文件中添加,在页面上没有添加成功,因为页面上没有添加view的功能,,这个很不爽,网上查了很多资料,只是在官网上找到一点相关E文,,,,,,希路过的大牛能指点一二,多谢!

本文转自 ZhouLS 51CTO博客,原文链接:http://blog.51cto.com/zhou123/1543105