美文网首页服务器监控运维监控
【跟我学Sensu】Sensu简介和安装

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

作者: hoxis | 来源:发表于2018-02-02 13:29 被阅读31次

    本文主要介绍运维监控软件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

    相关文章

      网友评论

        本文标题:【跟我学Sensu】Sensu简介和安装

        本文链接:https://www.haomeiwen.com/subject/sizszxtx.html