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.
其他概念
- 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


评论