关于集群监控
2015-06-24 11:45
441 查看
http://qiankunli.github.io/2014/09/10/monitor.html
为什么需要监控集群,其实这个问题都不用谈了。成百上千台机器在哪里工作,如果不知道它们的工作状态,岂不是一件很虚的事情。还有,如果没有监控,你怎么评价你的程序是否高效,仅仅凭能够执行通过么?
到目前为止,我只学习过ganglia和zabbix,通过它们,我发现监控软件一般有以下基本特点:
从架构上讲,是分布式软件,主节点和从节点都会运行程序,主节点程序(以下称为server)负责收集从节点数据并分析展示,从节点程序(以下成为agent)负责采集本节点的状态信息。
如果节点不多,且都属于同一个地域,则一个server对应多个agent即可满足要求。
如果节点众多,监控地域不一,数据和网络开销较大,则server和agent之间,多加一个代理(proxy),代理替server进行所管理agent数据的收集,并向server汇报。
数据采集的工作模式一般分为:主动模式和被动模式 这是从agent的角度来看的,主动模式即agent主动上报数据,这样可以让server轻松一些。
采集节点数据有以下两种方式:
专用客户端采集,从节点运行专用程序获取本机状态数据
共用协议采集,即(server)利用SNMP或SSH等协议采集从节点数据
服务器端拿到采集的数据后,会以某种形式将数据存储起来(数据库或文本)。同时,这类软件还会准备web脚本或代码,我们可以将这些web脚本复制到http服务器的相关目录下。http服务器启动后,这些web脚本便会访问存储起来的数据,将结果以图形方式展现出来。以ganglia架构为例:
一般会带有报警功能,即如果某项指标大于设定的阈值,会触发邮件、短信和声音等动作。
一般可以自定义指标,只要符合接口规则,我们便可以采集我们想收集的个性化数据。
一般会为我们准备/etc/init.d下的启动脚本,我们只需将其复制到/etc/init.d下即可。
一般可以自定义视图的展示。
server端本身也会安装agent程序,监控自己的运行情况。server程序本身不会收集指标数据,都是通过agent程序获取的。
我目前主要用过ganglia和zabbix,总体来讲,安装过程都是:
配置防火墙,关闭selinux
server端
分别安装server端程序、httpd和数据库程序
源码安装,运行configure命令时,可以根据实际情况,通过参数添加一些特性。
拷贝web脚本到httpd服务器相关目录,并配置。
server端脚本配置数据库程序路径,并对数据库做一定的初始化
对视图、指标等做个性化的修改
agent端
安装agent程序
修改配置文件,指明server主机的ip
共有
配置日志文件的位置
组成:gmetad gmond
拓扑模式:多播和单播
多播:也就是说集群内所有节点都收发指标数据,每个节点维护一个“内存数据库”。这样所有的节点都备份了其它节点的数据,gmetad节点不必轮询所有gmond节点。当主节点产生故障时,gmetad会迅速将主节点切换到另一节点,可避免单点故障。
采用rrdtool数据库存储监控数据,新的数据可以覆盖掉旧数据
组成: zabbix-server,zabbix-agent,zabbix-proxy(可选)
zabbix-server
a central process of Zabbix software that performs monitoring, interacts with Zabbix proxies and agents, calculates triggers, sends notifications; a central repository of data
zabbix-agent
a process deployed on monitoring targets to actively monitor local resources and applications
zabbix-proxy
a process that may collect data on behalf of Zabbix server, taking some processing load off of the server
支持多种监控方式,除agent方式外,其他监控方式无需在被监控节点上安装额外的程序。
使用传统数据库存储监控数据,所以当数据量较大时,要有一定的性能优化措施
前言
为什么需要监控集群,其实这个问题都不用谈了。成百上千台机器在哪里工作,如果不知道它们的工作状态,岂不是一件很虚的事情。还有,如果没有监控,你怎么评价你的程序是否高效,仅仅凭能够执行通过么?
监控软件的一些基本特点
到目前为止,我只学习过ganglia和zabbix,通过它们,我发现监控软件一般有以下基本特点:从架构上讲,是分布式软件,主节点和从节点都会运行程序,主节点程序(以下称为server)负责收集从节点数据并分析展示,从节点程序(以下成为agent)负责采集本节点的状态信息。
如果节点不多,且都属于同一个地域,则一个server对应多个agent即可满足要求。
如果节点众多,监控地域不一,数据和网络开销较大,则server和agent之间,多加一个代理(proxy),代理替server进行所管理agent数据的收集,并向server汇报。
数据采集的工作模式一般分为:主动模式和被动模式 这是从agent的角度来看的,主动模式即agent主动上报数据,这样可以让server轻松一些。
采集节点数据有以下两种方式:
专用客户端采集,从节点运行专用程序获取本机状态数据
共用协议采集,即(server)利用SNMP或SSH等协议采集从节点数据
服务器端拿到采集的数据后,会以某种形式将数据存储起来(数据库或文本)。同时,这类软件还会准备web脚本或代码,我们可以将这些web脚本复制到http服务器的相关目录下。http服务器启动后,这些web脚本便会访问存储起来的数据,将结果以图形方式展现出来。以ganglia架构为例:
一般会带有报警功能,即如果某项指标大于设定的阈值,会触发邮件、短信和声音等动作。
一般可以自定义指标,只要符合接口规则,我们便可以采集我们想收集的个性化数据。
一般会为我们准备/etc/init.d下的启动脚本,我们只需将其复制到/etc/init.d下即可。
一般可以自定义视图的展示。
server端本身也会安装agent程序,监控自己的运行情况。server程序本身不会收集指标数据,都是通过agent程序获取的。
我用过的一些监控软件
我目前主要用过ganglia和zabbix,总体来讲,安装过程都是:配置防火墙,关闭selinux
server端
分别安装server端程序、httpd和数据库程序
源码安装,运行configure命令时,可以根据实际情况,通过参数添加一些特性。
拷贝web脚本到httpd服务器相关目录,并配置。
server端脚本配置数据库程序路径,并对数据库做一定的初始化
对视图、指标等做个性化的修改
agent端
安装agent程序
修改配置文件,指明server主机的ip
共有
配置日志文件的位置
ganglia
组成:gmetad gmond拓扑模式:多播和单播
多播:也就是说集群内所有节点都收发指标数据,每个节点维护一个“内存数据库”。这样所有的节点都备份了其它节点的数据,gmetad节点不必轮询所有gmond节点。当主节点产生故障时,gmetad会迅速将主节点切换到另一节点,可避免单点故障。
采用rrdtool数据库存储监控数据,新的数据可以覆盖掉旧数据
zabbix
组成: zabbix-server,zabbix-agent,zabbix-proxy(可选)zabbix-server
a central process of Zabbix software that performs monitoring, interacts with Zabbix proxies and agents, calculates triggers, sends notifications; a central repository of data
zabbix-agent
a process deployed on monitoring targets to actively monitor local resources and applications
zabbix-proxy
a process that may collect data on behalf of Zabbix server, taking some processing load off of the server
支持多种监控方式,除agent方式外,其他监控方式无需在被监控节点上安装额外的程序。
使用传统数据库存储监控数据,所以当数据量较大时,要有一定的性能优化措施
相关文章推荐
- propertychange input change
- Windows下Nginx+PHP5(FastCgi)安装配置详解
- nginx笔记:nginx安装
- 修改tomcat的编码
- 如何在Linux服务器中隐藏PHP版本
- linux shell sleep/wait(转载)
- centos学习(之一)-centos6.6环境搭建
- ecshop查询搜索记录最多的前10条
- 连接时出现:Can't open display: localhost:10.0
- Linux shell的&&和||
- Openssl 加密解密及随机码生成讲解
- Linux系统编程——进程调度浅析
- Linux 技巧:让进程在后台可靠运行的几种方法nohup|
- Tomcat mime 大全
- apache2部署django的错误
- Thinkphp 伪静态Nginx配置方式
- 安卓error opening file:No such file or directory
- 有用的网站和链接
- apache是容器么,作用是什么? .
- UNIX/Linux/BSD、POSIX、GNU