【跟我学Sensu】Sensu简介和安装

本文主要介绍运维监控软件Sensu,主要包括Sensu的组成,事件处理流程,以及Sensu的安装过程。

Sensu 简介

Sensu是由 Sonian 公司开发的一种监控框架,主要用于基础设施和应用的监控和检测。Sensu可以为基础设施、服务、应用运行状况以及业务的监控提供一个框架。Sensu专门设计用于解决现代基础设施平台在规模(即公共,私有和混合云)中混合使用静态,动态和短暂基础设施所带来的监控挑战。

Sensu的优势

  • 可以监控服务器、服务、应用运行状态
  • 可以发送告警和通知
  • 支持客户端的动态注册
  • 基于分布式的设计,能够轻松的动态伸缩规模
  • 支持通过插件的形式自定义检查的内容,拥有丰富的插件库
  • 内置的集成工具,可用于和其它系统集成,如 GraphiteEmail
  • 提供丰富的API接口,支持通过API调用访问事件和客户端信息,触发检测等

Sensu 的组成部分

数据传输部分

Sensu使用消息总线(如RabbitMQ)来互信通信,Sensu的这种消息总线通信已被抽象为Sensu Transport。Sensu服务需要通过访问Sensu Transport实例(例如RabbitMQ群集)才能运行。Sensu检查请求和Check Results会作为消息发布到Sensu Transport,相应的Sensu服务可以通过订阅的方式来接收这些消息。

数据存储

Sensu体系中,只有Sensu ServerAPIdashboard才需要访问数据存储。通过将数据存储在Redis中,Sensu服务本身可以保持无状态。主要存储以下数据:

  • 客户端注册表
  • Check历史
  • 事件注册表
  • StashesSensu API提供的一个key-value形式的存储)

Check执行调度

Sensu可以通过服务端或者客户端来调度Check。服务端通过发布/订阅模型Check请求发送给客户端,客户端会处理相应的CheckSensu会确保在相应的系统上执行相应的Check

监控客户端

Sensu客户端提供了以下功能:

  • 动态自助注册
  • 客户订阅(用于监控通过发布/订阅模式配置的Check
  • 本地Check执行调度
  • 用于监控本地系统、服务
  • 可以接收来自外部服务的信息输入

事件处理器

Sensu Server是一个可伸缩的事件处理器,用于处理事件并采取行动。Sensu的事件处理功能包括:

  • 注册和注销客户
  • 处理检查结果
  • 使用filtersmutatorshandlers处理监视事件

尽管事件处理程序由Sensu Server在本地执行,但可以运行Sensu Server的多个实例而无需任何其他配置。Sensu提供了内置的任务选择算法以避免Sensu服务器之间的调度冲突,并且Sensu可以通过循环算法将检查结果分发到不同的Sensu Server实例以进行处理,从而实现负载平衡。

RESTful API

Sensu通过RESTful HTTP JSON API提供对监控数据和核心功能的访问,包括:

  • Clients API - 用于访问client数据,以及添加/删除client
  • Checks API - 用于访问Check配置数据和发布Check请求
  • Events API - 用于访问event数据和处理event
  • Results API - 用于访问Check Results数据并发布Check Results
  • Aggregates API - 用于访问汇总过的Check Results数据,并可以删除汇总数据
  • Stashes API - 用于对Redis基础键值功能的读/写

生产过程中Sensu主要由服务端、客户端、RabbitMQRedisAPI五个部分构成。如图所示,RabbitMQ用于组件之间的通信,Redis用于持久化Sensu服务器和Sensu API的数据。因为客户端都是通过文件进行配置,并且不需要在服务器端配置客户端的信息,所以可以很轻易的增加和减少客户端的数量。从图中可以看到,为了解耦服务器和客户端,通信都是通过RabbitMQ进行的,如果只有单节点的RabbitMQ,这可能会带来通信上的瓶颈问题,不过可以通过RabbitMQ官方提供的集群部署解决方案来解决这个问题。

Sensu 的组成部分
Sensu 的组成部分

Sensu 的安装与配置

下面介绍针对单节点的情况的安装与配置。安装环境是Centos7

RabbitMQ 和 Redis 的安装与配置

安装 RabbitMQ

安装准备

  • 安装 epel 源
yum -y install epel-release
  • 安装 erlang
yum -y install erlang

过程较长。

  • 测试是否安装成功
[root@centos7 home]# erl
Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1> 1+2.
3

安装 RabbitMQ

这里安装的是最新版本3.6.15,可以通过访问http://www.rabbitmq.com/releases/rabbitmq-server/获取。

rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
  • 验证是否安装成功
[root@centos7 home]# service rabbitmq-server status
Redirecting to /bin/systemctl status  rabbitmq-server.service
● rabbitmq-server.service - RabbitMQ broker
   Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

配置 RabbitMQ

[root@centos7 home]# chkconfig rabbitmq-server on
[root@centos7 home]# service rabbitmq-server start

[root@centos7 home]# rabbitmqctl add_vhost /sensu
Creating vhost "/sensu"

[root@centos7 home]# rabbitmqctl add_user sensu secret
Creating user "sensu"

[root@centos7 home]# rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
Setting permissions for user "sensu" in vhost "/sensu"

安装 Redis

yum -y install redis
/sbin/chkconfig redis on
service redis start

Sensu 服务器和客户端的安装与配置

Sensu服务器和客户端的安装过程是一致的,都是使用sensu的yum源进行安装。

安装 sensu

配置 sensu 的 yum 源

# echo '[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
gpgcheck=0
enabled=1' | sudo tee /etc/yum.repos.d/sensu.repo

# yum -y install sensu

配置 sensu 服务器端

  • 添加/etc/sensu/conf.d/api.json文件:
{
    "api": {
        "host": "localhost",
        "port": 4567
    }
}
  • 添加redis配置/etc/sensu/conf.d/redis.json
{
  "redis": {
    "host": "192.168.31.63",
    "port": 6379
  }
}
  • 添加rabbitmq配置/etc/sensu/conf.d/rabbitmq.json
{
  "rabbitmq": {
    "host": "192.168.31.63",
    "port": 5672,
    "vhost": "/sensu",
    "user": "sensu",
    "password": "secret"
  }
}
  • 添加开机自启动
chkconfig sensu-server on
chkconfig sensu-api on

配置 sensu 客户端

  • 添加rabbitmq配置/etc/sensu/conf.d/rabbitmq.json
{
  "rabbitmq": {
    "host": "192.168.31.63",
    "port": 5672,
    "vhost": "/sensu",
    "user": "sensu",
    "password": "secret"
  }
}

此外,还需添加描述客户端信息的配置文件,在客户端节点/etc/sensu/conf.d/目录下添加client.json文件:

{
    "client": {
        "name": "client66",
        "address": "192.168.31.66",
        "subscriptions": ["test"]
    }
}
  • 添加开机自启动
chkconfig sensu-client on

Uchiwa 的安装与配置

Uchiwa是 sensu 的用户管理界面,主要包含查看客户端和 check 相关信息的功能。下面简要介绍uchiwa的安装与配置。

wget http://dl.bintray.com/palourde/uchiwa/uchiwa-1.1.1-1.x86_64.rpm
rpm -Uvh uchiwa-0.10.2-1.x86_64.rpm

配置/etc/sensu/uchiwa.json 文件:

{
    "sensu": [{
        "name": "sensu31",
        "host": "192.168.31.63", #API服务IP地址。
        "port": 4567, #API服务的端口。
        "timeout": 5
    }],
    "uchiwa": {
        "host": "192.168.31.63",
        "port": 3000,
        "interval": 5
    }
}

启动相关服务并验证是否安装成功

[root@centos7 etc]# service sensu-server start
Redirecting to /bin/systemctl start  sensu-server.service

[root@centos7 etc]# service sensu-server status
Redirecting to /bin/systemctl status  sensu-server.service
● sensu-server.service - sensu server
   Loaded: loaded (/usr/lib/systemd/system/sensu-server.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2018-01-26 13:59:13 CST; 4s ago
 Main PID: 15189 (sensu-server)

[root@centos7 sensu]# service uchiwa start
uchiwa started.

[root@centos7 sensu]# service uchiwa status
uchiwa is running

此时,uchiwa页面也可以成功启动访问192.168.31.63:3000

uchiwa页面
uchiwa页面

至此,sensu的简单介绍和安装就完成了,后续结合实践对checkhandlerfilter等概念进行详细介绍。


如果觉得有用,欢迎关注我的微信,有问题可以直接交流:

你的关注是对我最大的鼓励!
你的关注是对我最大的鼓励!

参考
https://www.ibm.com/developerworks/cn/cloud/library/1607-sensu-monitoring-platform/index.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容