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
评论