运维监控渠道之ganglia51CTO博客 - 威尼斯人

运维监控渠道之ganglia51CTO博客

2019年03月09日12时52分08秒 | 作者: 昆琦 | 标签: 监控,数据,节点 | 浏览: 1415

1、ganglia简介

Ganglia 是一款为 HPC(高性能核算)集群而规划的可扩展的分布式监控体系,它能够

监督和显现集群中的节点的各种状况信息,它由运转在各个节点上的 gmond 看护进程来采

集 CPU 、内存、硬盘利用率、 I/O 负载、网络流量状况等方面的数据,然后汇总到 gmetad

看护进程下,运用 rrdtool 存储数据,最终将历史数据以曲线办法经过 PHP 页面出现。

Ganglia 的特色如下:

    杰出的扩展性,分层架构规划能够习惯大规模效劳器集群的需求

   负载开支低,支撑高并发

    广泛支撑各种操作体系( UNIX 等)和 cpu 架构,支撑虚拟

 2、ganglia组成

Ganglia 监控体系有三部分组成,分别是 gmond、 gmetad、 webfrontend,效果如下。

gmond: 即为 ganglia monitoring daemon,是一个看护进程,运转在每一个需求监测

的节点上,用于搜集本节点的信息并发送到其他节点,一同也接纳其他节点发过了

的数据,默许的监听端口为 8649。

gmetad: 即为 ganglia meta daemon,是一个看护进程,运转在一个数据会聚节点上,

定时检查每个监测节点的 gmond 进程并从那里获取数据,然后将数据目标存储在

本地 RRD 存储引擎中。

webfrontend: 是一个根据 web 的图形化监控界面,需求和 Gmetad 装置在同一个节

点上,它从 gmetad 取数据,而且读取 RRD 数据库,经过 rrdtool 生成图表,用于

前台展现,界面漂亮、丰厚,功用强大。下图是其结构



环境规划(centos6.7)

效劳器端  172.16.80.117      

 客户端    172.16.80.117 172.16.80.116 


3、ganglia的装置

[root@centos02 tools]# wget wget 
[root@centos02 tools]# rpm -ivh epel-release-6-8.noarch.rpm  
[root@centos02 tools]# yum install ganglia-gmetad.x86_64  ganglia-gmond.x86_64 ganglia-gmond-python.x86_64  -y

修正效劳端装备文件
[root@centos02 tools]# vim /etc/ganglia/gmetad.conf 
data_source "my cluster"  172.16.80.117 172.16.80.116
gridname "MyGrid"


ganglia web的装置(根据LNMP环境)
[root@centos02 tools]# tar xf ganglia-web-3.7.2.tar.gz 
[root@centos02 tools]# mv ganglia-web-3.7.2 /application/nginx/html/ganglia

修正ganglia web的php装备文件
[root@centos02 tools]# vim /application/nginx/html/ganglia/conf_default.php
$conf[gweb_confdir] = "/application/nginx/html/ganglia";

nginx装备
[root@centos02 ganglia]# cat /application/nginx/conf/nginx.conf
worker_processes  2;
events {
    worker_connections  1024;
}
http {


log_format  main  $remote_addr - $remote_user [$time_local] "$request" 
                      $status $body_bytes_sent "$http_referer" 
                      "$http_user_agent" "$http_x_forwarded_for";



    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  www.martin.com martin.com;

        location / {
            root   html/zabbix;
            index  index.php index.html index.htm;
        }
        
         
        location ~ .*\.(php|php5)?$ {
            root  html/zabbix;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
               }

         access_log  logs/access_zabbix.log  main;        
   }

    server {
        listen       80;
        server_name  ganglia.martin.com;

        location / {
            root   html/ganglia;
            index  index.php index.html index.htm;
        }
      
             
        location ~ .*\.(php|php5)?$ {
            root   html/ganglia;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
               }

         access_log  logs/access_bbs.log  main;       

    }

#status
   server{
      listen 80;
      server_name status.martin.org;
      location / {
      stub_status on;
      access_log off;
        }
   }

}

拜访测验,报错如下
Fatal error:Errors were detected in your configuration.
DWOO compiled templates directory /application/nginx/html/ganglia/dwoo/compiled is not writeable.
Please adjust $conf[dwoo_compiled_dir].
DWOO cache directory /application/nginx/html/ganglia/dwoo/cache is not writeable.
Please adjust $conf[dwoo_cache_dir].
in /application/nginx-1.6.3/html/ganglia/eval_conf.php on line 126

解决办法:
[root@centos02 tools]# mkdir /application/nginx/html/ganglia/dwoo/compiled
[root@centos02 tools]# mkdir /application/nginx/html/ganglia/dwoo/cache

[root@centos02 tools]# chmod 777 /application/nginx/html/ganglia/dwoo/compiled
[root@centos02 tools]# chmod 777 /application/nginx/html/ganglia/dwoo/cache
[root@centos02 html]# chmod -R 777 /var/lib/ganglia/rrds


修正客户端装备文件(一切的客户端都需求做)
[root@centos02 tools]# vim /etc/ganglia/gmond.conf 
cluster {
  name = "my cluster"    #这个姓名要和效劳器端界说的data_source后边的姓名相同
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

udp_send_channel {
  #bind_hostname = yes # Highly recommended, soon to be default.
                       # This option tells gmond to use a source address
                       # that resolves to the machines hostname.  Without
                       # this, the metrics may appear to come from any
                       # interface and the DNS names associated with
                       # those IPs will be used to create the RRDs.
#  mcast_join = 239.2.11.71
  host = 172.16.80.117      #这儿咱们选用单播办法,默许是组播
  port = 8649
#  ttl = 1
}

udp_recv_channel {
#  mcast_join = 239.2.11.71
  port = 8649
#  bind = 239.2.11.71
  retry_bind = true
  # Size of the UDP buffer. If you are handling lots of metrics you really
  # should bump it up to e.g. 10MB or even higher.
  # buffer = 10485760
}

4、再次拜访测验


这儿是整个集群的一个总的汇总图,而不是单台效劳器的图,下面咱们打开单台效劳器的图看看

再来看看对同一目标,每台效劳器一同显现的图


5、扩展 Ganglia 监控功用的办法

默许装置完结的 Ganglia 仅向咱们供给根底的体系监控信息,经过 Ganglia 插件能够实

现两种扩展 Ganglia 监控功用的办法。

1) 增加带内( in-band)插件,主要是经过 gmetric 指令来完结。

这是一般运用的一种办法,主要是经过 crontab 办法并调用 Ganglia 的 gmetric 指令来向

gmond 输入数据,进而完结一致监控。这种办法简略,关于少数的监控能够选用,可是对

于大规模自界说监控时,监控数据难以一致管理。

2) 增加一些其他来历的带外( out-of-band)插件,主要是经过 C 或许 Python 接口来

完结。

在 Ganglia3.1.x 版别今后,增加了 C 或 Python 接口,经过这个接口能够自界说数据搜集

模块,而且能够将这些模块直接插入到 gmond 中以监控用户自界说的使用。


这儿咱们举例经过带外扩展的办法 来监控nginx的运转状况

装备 ganglia 客户端,搜集 nginx_status 数据
[root@centos02 nginx_status]# pwd
/tools/gmond_python_modules-master/nginx_status
[root@centos02 nginx_status]# cp conf.d/nginx_status.pyconf /etc/ganglia/conf.d/
[root@centos02 nginx_status]# cp python_modules/nginx_status.py  /usr/lib64/ganglia/python_modules/
[root@centos02 nginx_status]# cp graph.d/nginx_* /application/nginx/html/ganglia/graph.d/

[root@centos02 mysql]# cat /etc/ganglia/conf.d/nginx_status.pyconf 
#

modules {
  module {
    name = nginx_status
    language = python

    param status_url {
      value = http://status.martin.org/
    }
    param nginx_bin {
      value = /application/nginx/sbin/nginx
    }
    param refresh_rate {
      value = 15
    }
  }
}

collection_group {
  collect_once = yes
  time_threshold = 20

  metric {
    name = nginx_server_version
    title = "Nginx Version"
  }
}

collection_group {
  collect_every = 10
  time_threshold = 20

  metric {
    name = "nginx_active_connections"
    title = "Total Active Connections"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_accepts"
    title = "Total Connections Accepted"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_handled"
    title = "Total Connections Handled"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_requests"
    title = "Total Requests"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_reading"
    title = "Connections Reading"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_writing"
    title = "Connections Writing"
    value_threshold = 1.0
  }

  metric {
    name = "nginx_waiting"
    title = "Connections Waiting"
    value_threshold = 1.0
  }
}

完结上面的一切过程后,重启 Ganglia 客户端 gmond 效劳,在客户端经过“ gmond–m”

指令能够检查支撑的模板,最终就能够在 Ganglia web 界面检查 Nginx 的运转状况




版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章