Sensu初探

来源:互联网 发布:linux安装jira7.22 编辑:程序博客网 时间:2024/06/04 19:30

Sensu
1. Sensu框架
Sensu 是开源的轻量级监控框架,其核心代码1000行左右,使用Ruby开发。提供监控代理,事件处理器和文档 APIs。其架构如下图所示:
这里写图片描述
Sensu提供无差别安装,即客户端与服务器端安装包一样。安装后有三个服务,分别是Sensu-server、Sensu-api以及Sensu-client。Sensu服务器端运行Sensu-server和Sensu-api,其中server services提供与client交互,api service提供RestFul风格的接口。服务器外部依赖RabbitMQ和 Redis,其中RabbitMQ 作为默认通信方式,其还可选基于TCP或UDP socket方式,Redis作为本地存储。客户端运行sensu-client service。

2. Sensu目录结构
这里写图片描述

Sensu无差别安装,因此客户端与服务器端安装后目录结构一样,如上图2所示。Sensu启动后,先会读取config.json进行环境配置,包括rabbitmq,redis,api连接信息。Conf.d目录下存放进一步的配置文件,亦可与config.json相同,还用来存放client check的定义。Handlers存放服务器如何处理客户端返回的信息的脚本。Mutators用于存放将客户端返回数据结构化后数据。Plugins存放于客户端需要执行的脚本。

3. Sensu工作模式
3.1 Check
Check是Sensu最基本的模式,服务器端使用json封装一个check定义。客户端存放需要执行的脚本,支持任何脚本语言。一个基本check包含以下字段:
- name
- command
- interval
- subscribers
- handlers

command通常为客户端要执行脚本的路径以及参数。
interval是客户端执行间隔周期,以秒为单位。
subscribers 相当于tag,区分与哪些客户端执行该脚本。
handlers 是服务器端收到返回时怎么处理。

该模式下,客户端返回值只有0(正常)、1(警告)、2(错误)、3(自定义)。该数值为脚本定义,我们可以根据需要重新定义返回值的意义。该模式即可满足监控主机上运行的服务是否正常。

3.2 standalone
Standalone模式与check区别在于,Check脚本定义位置从服务器端移到客户端。

3.3 metric
metric模式是针对client返回值,在该模式下,client可以返回结构化数据,例如json。该模式下,可以得到一个主机进一步的运行信息,如内存使用率,网络信息等。

3.4 handler
handler主要用于服务器端根据客户端返回值做处理。常用的有邮件通知、短信通知等。

3.5 api
该模式下,可以通过http请求发送一个command,客户端返回依旧传递给server进行处理。通过此模式,可以满足我们定时执行某command的需求。

4.高可用性
4.1集群
高可用架构图

4.2keepalive
服务器发送command后会触发计时器,在指定时间未收到客户端回应时,认为客户端异常。

4.3Dashboard
Sensu提供一个基于nodejs的web 管理界面,uchiwa。
这里写图片描述

0 0
原创粉丝点击