• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

Ganglia安装配置 

目录

Ganglia是一个开源的集群监控系统,这两天在自己的服务器上面部署了,顺便小记一下……

简介

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

Gmond

Ganglia monitoring daemon,用于收集机器内的metric,它还可以接受别的node发送过来的metric,并且保存一小段时间(几十秒)。gmond可以扮演下面三种角色:

  • 收集metric并发送出去,同时也接收别的node发送过来的metric;
  • 只采集metric并发送出去(关键字 deaf);
  • 只接收别的机器发送过来的metric(关键字 mute);

默认情况下,gmond监听8649端口,用来发送和接收udp,tcp数据包。

Gmetad

Ganglia meta daemon,默认情况下gmond通过multicast的方式发送自己采集到的数据,整个Multicast group里的node都拥有整个cluster的全部metrics。而gmetad可以从一个cluster的任意一个node拿到整个cluster的全部metric并记录到rrd数据库。

默认情况下,gmetad监听8651端口,从这里可以拿到gmetad存放的最新metric数据,也可以给更高层的gmetad使用;监听8652端口,提供数据查询接口,供web使用

RRD

Round Robin Database,a tool on the master node used to store data and visualizations for Ganglia in time series.

ganglia

其他概念

  • group:指标分组,方便网页上看的,在收集时设置
  • node:一个ganglia-monitor 的实例
  • cluster:一堆设置了同样cluster名字的node,原则上cluster表示同样类型的机器集群,但并不要求cluster里的node收集的metric都一样。
  • metric:指标,收集到的数值,比如cpu的负载,内存用量。 metric 可以分为实时的和固定的,实时的就是像cpu负载那样随时变化的会一小段时间收集一次,固定的是cpu核数、物理内存大小等在ganglia-monitor启动的时候收集一次就不会再获取。
  • rrdcached:因为gmetad写硬盘的方式很暴力,当收集的metric多了后,就需要一个硬盘和写数据之间的缓存。
  • multicast:基本网络术语,同一个网络(甚至不同网段)的机器可以监听同一个多播IP地址,发送到这个地址的UDP包所有监听了的都能收到。
  • unicast:数据是一对一的发送。

 

Ganglia organizes nodes, which are individual monitored machines, into clusters, which are groups of similar nodes. On a higher level, collections of clusters can also be organized into grids. You’ll see this organization when you log into the web interface.

安装

在master  node上安装 gmond,gmetad,rrdtool,ganglia-webfrontend:

$ sudo apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend

在client node上安装 gmond,收集 metric 发送到 master:

$ sudo apt-get install -y ganglia-monitor

配置

Ganglia

在master node,修改 gmetad 配置 /etc/ganglia/gmetad.conf:

$ sudo vim /etc/ganglia/gmetad.conf

# 修改 data_source,这里也就是cluster的名字了,具体说明看配置文件内的介绍
data_source "my cluster"

修改 gmond 配置 /etc/ganglia/gmond.conf:

$ sudo vim /etc/ganglia/gmond.conf

# 修改 cluster name
cluster {
  name = "my cluster" ## use the name from gmetad.conf
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
# 修改 udp_send_channel,添加 host
udp_send_channel = {
  # mcast_join = xxx.xxx.xxx.xxx
  host = loaclhost
  port = 8649
  ttl = 1
}
# 修改 udp_recv_channel,注释掉 mcast_join, bind
udp_recv_channel = {
  # mcast_join = xxx.xxx.xxx.xxx
  port = 8649
  # bind = xxx.xxx.xxx.xx
}

修改完配置,重启一下服务:

$ sudo service ganglia-monitor restart 
$ sudo service gmetad restart

Client

修改 gmond 配置 /etc/ganglia/gmond.conf:

$ sudo vim /etc/ganglia/gmond.conf

# 修改 cluster name
cluster {
  name = "my cluster"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
# 修改 udp_send_channel host
udp_send_channel {
  # mcast_join = xxx.xxx.xxx.xxx
  host = master node ip
  port = 8649
  ttl = 1
}
udp_recv_channel {
  # mcast_join = xxx.xxx.xxx.xxx
  port = 8649
  # bind = xxx.xxx.xxx.xx
}

然后重启一下服务就可以了。

Nginx

将 ganglia-webfrontend 链接到 web 服务目录下:

$ sudo ln -svf /usr/share/ganglia-webfrontend /var/www/ganglia

添加 nginx 配置文件,/etc/nginx/sites-enabled/ganglia:

# ganglia 
server {
    listen 80;
    server_name ganglia.chenjiehua.me;
    index index.html index.htm index.php;
    root /var/www/ganglia;

    auth_basic "Restricted Access";
    auth_basic_user_file /home/ubuntu/htpasswd.users;

    location / {
	try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
	fastcgi_pass unix://var/run/php5-fpm.sock;
	fastcgi_index index.php;
	include fastcgi_params;
    }
}

大功告成,这样我们就可以通过 web 界面来查看服务器的相关指标了。

后续

此外,我们还可以将ganglia 与 nagios 结合,做成自动报警;也可以编写ganglia插件,对自己的一些服务进行监控等。

 

参考:

https://www.digitalocean.com/community/tutorials/introduction-to-ganglia-on-ubuntu-14-04

码字很辛苦,转载请注明来自ChenJiehua《Ganglia安装配置》

评论