浓缩版:云计算运维KVM监控工具之Sensu开源版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浓缩版:云计算运维KVM监控工具之Sensu开源版相关的知识,希望对你有一定的参考价值。

技术图片

零、Sensu说明

1.Sensu 是由 Sonian 公司开发的一种监控框架,主要用于拥有大规模节点的云计算平台的检查与监控。目前发行的版本有企业版和开源版两种,收费的企业版本较之免费的开源版本拥有更多的功能。出于介绍的目的,本文的内容都是基于开源版本的 Sensu。

开源版本的 Sensu 遵循 MIT 许可,旨在为分布式的平台提供灵活易用、快速简单、便于拓展的监控和维护服务。主要包含以下功能与特性:

  • 检查系统、服务和程序的运行状态。
  • 基于分布式的设计,能够轻松的动态伸缩规模。
  • 支持通过插件的形式自定义检查的内容,拥有丰富的插件库。
  • 收集信息,获取被监控节点上的各项数据指标等。
  • 可视化的操作界面,提供实时的 GUI 用于显示和操作相关信息。
  • 内置的集成工具,可用于和其它系统集成,如 PagerDuty、Graphite、Email 等。
  • 提供丰富的 API 接口,支持通过 API 调用访问事件和客户端信息,触发检测等。
  • 加密的安全通信,支持各种复杂的网络拓扑。

2.Sensu支持许多类Unix平台,以及Windows。
技术图片

技术图片

Sensu架构简图:
技术图片

一、服务器端安装

环境:Centos7 最小安装基础版。

1. Sensu需要安装Redis。要安装Redis,请启用EPEL存储库:

[[email protected] ~]# yum install epel-release -y

2.安装redis服务

[[email protected] ~]# yum install redis -y

修改redis配置,禁用保护模式,设置redis服务密码

[[email protected] ~]# sed -i ‘s/^protected-mode yes/protected-mode no/g‘ /etc/redis.conf
[[email protected] ~]# sed -i ‘s/^bind 127.0.0.1/bind 0.0.0.0/g‘ /etc/redis.conf
[[email protected] ~]# ed -i ‘s/^# requirepass foobared/requirepass password123/g‘ /etc/redis.conf

启动redis服务报错

[[email protected] ~]# systemctl enable redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
[[email protected] ~]# systemctl start redis
Warning: redis.service changed on disk. Run ‘systemctl daemon-reload‘ to reload units.

报错解决:重启后服务就正常了

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# reboot
[[email protected] ~]# systemctl status  redis
● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since Wed 2019-03-13 19:33:27 CST; 3min 6s ago
Main PID: 875 (redis-server)
   CGroup: /system.slice/redis.service
           └─875 /usr/bin/redis-server 0.0.0.0:6379

Mar 13 19:33:27 web1 systemd[1]: Starting Redis persistent key-value database...
Mar 13 19:33:27 web1 systemd[1]: Started Redis persistent key-value database.

3.Sensu监控组件安装
添加Sensu的软件源

[[email protected] ~]# tee /etc/yum.repos.d/sensu.repo << EOF
> [sensu]
> name=sensu
> baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
> gpgcheck=0
> enabled=1
> EOF

安装Sensu

[[email protected] ~]#  yum install sensu uchiwa -y

设置Sensu基础配置文件,使用端口4567配置Sensu-api以侦听localhost

[[email protected] ~]# tee /etc/sensu/conf.d/api.json << EOF
> {"api": { "host": "127.0.0.1", "port": 4567 }}
> EOF

将Sensu配置连接使用redis作为Transport以及redis侦听的地址。客户端需要连接到Transport,每台客户端计算机都需要这两个配置文件

[[email protected] ~]# tee /etc/sensu/conf.d/redis.json << EOF
> {"redis": { "host": "192.168.0.230", "port": 6379, "password": "password123" }}              
> EOF
[[email protected] ~]# tee /etc/sensu/conf.d/transport.json << EOF
> {"transport": { "name": "redis" }}
> EOF

我们配置Uchiwa监听端口3000上的每个接口(0.0.0.0)。我们还配置Uchiwa使用sensu-api(已配置)

[[email protected] ~]# tee /etc/sensu/uchiwa.json << EOF
> {"sensu": [ { "name": "sensu", "host": "127.0.0.1", "port": 4567 } ], "uchiwa": { "host": "0.0.0.0", "port": 3000 }}
> EOF

安全设置,配置文件夹的所有者

[[email protected] ~]#  chown -R sensu:sensu /etc/sensu

启动并设置开机自启动Sensu服务

[[email protected] ~]# systemctl enable sensu-server sensu-api sensu-client
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-server.service to /usr/lib/systemd/system/sensu-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-api.service to /usr/lib/systemd/system/sensu-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-client.service to /usr/lib/systemd/system/sensu-client.service.
[[email protected] ~]# systemctl start sensu-server sensu-api sensu-client
[[email protected] ~]# systemctl enable uchiwa
uchiwa.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig uchiwa on
[[email protected] ~]# /sbin/chkconfig uchiwa on
[[email protected] ~]# systemctl start uchiwa
[[email protected] ~]# chkconfig --list|grep uchiwa

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use ‘systemctl list-unit-files‘.
      To see services enabled on particular target use
      ‘systemctl list-dependencies [target]‘.

uchiwa          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[[email protected] ~]#

浏览器访问Uchiwa(后期可以自主设置nginx反向代理)
http://192.168.0.230:3000
技术图片

二、客户端

1.设置Sensu的仓库源

[[email protected] ~]#  tee /etc/yum.repos.d/sensu.repo << EOF
> [sensu]
> name=sensu
> baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
> gpgcheck=0
> enabled=1
> EOF

2.安装Sensu,配置client

[[email protected] ~]#  yum install sensu -y

要配置sensu-client,请创建在服务器计算机中创建的相同redis.json和transport.json,以及client.json配置文件:(在名称字段中,指定用于标识此客户端的名称(通常是主机名)。 环境字段可以帮助过滤,订阅定义客户端将执行哪些监视检查。)

[[email protected] ~]# vim /etc/sensu/conf.d/client.json 
> {"client": { "name": "leo-client", "environment": "development", "subscriptions": [ "frontend" ] }}    
> EOF

最后,启用并启动服务并检查Uchiwa,因为新客户端将自动注册:

[[email protected] ~]#  systemctl enable sensu-client
Created symlink from /etc/systemd/system/multi-user.target.wants/sensu-client.service to /usr/lib/systemd/system/sensu-client.service.
[[email protected] ~]# systemctl start sensu-client
[[email protected] ~]# systemctl status  sensu-client
● sensu-client.service - sensu client
   Loaded: loaded (/usr/lib/systemd/system/sensu-client.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-03-14 01:39:24 CST; 6s ago
Main PID: 1852 (sensu-client)
   CGroup: /system.slice/sensu-client.service
           └─1852 /opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -c /etc/sensu/config.json -d /etc/sensu/conf.d -e /etc/sensu/extension...

Mar 14 01:39:24 client-1 systemd[1]: Started sensu client.
Mar 14 01:39:24 client-1 systemd[1]: Starting sensu client...
[[email protected] ~]#

3.Sensu检查
Sensu检查有两个组件:插件和定义。
Sensu与Nagios检查插件规范兼容,因此可以无需修改即可使用对Nagios的任何检查。 检查是可执行文件,由Sensu客户端运行。
检查定义让Sensu知道运行插件的方式,位置和时间。

4.我们在客户端计算机上安装一个check插件。 请记住,此插件将在客户端上执行
启用EPEL并安装nagios-plugins-http:

[[email protected] ~]# yum install -y epel-release && yum install -y nagios-plugins-http

5.尝试检查客户端运行的web服务器的状态,结果是失败的,因为并没有运行web服务。

[[email protected] ~]# /usr/lib64/nagios/plugins/check_http -I 127.0.0.1
connect to address 127.0.0.1 and port 80: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[[email protected] ~]# echo $?
2
[[email protected] ~]#

Nagios检查插件规范定义了插件执行的四个返回码:
技术图片

三、服务端

1.在服务器计算机上,创建文件/etc/sensu/conf.d/check_http.json:

[[email protected] ~]# vim /etc/sensu/conf.d/check_http.json
{"checks":
        { "check_http":
                { "command": "/usr/lib64/nagios/plugins/check_http -I 127.0.0.1", "interval": 10, "subscribers": [ "frontend" ] }
        }
}

在命令字段中,使用我们之前测试的命令。 Interval会告诉Sensu这个检查应该在几秒钟内执行的频率。 最后,订户将定义将执行检查的客户端。

2.重新启动sensu-api和sensu-server并确认Uchiwa中有新检查

[[email protected] ~]# systemctl restart sensu-api sensu-server  uchiwa

3.访问网页刷新
技术图片

四.界面说明

1.首页界面
技术图片

2.客户端管理界面
技术图片

3.主机状态检查

技术图片

4.主机数据中心
技术图片

以上是关于浓缩版:云计算运维KVM监控工具之Sensu开源版的主要内容,如果未能解决你的问题,请参考以下文章

运维书

云上Prometheus监控运维最佳实践

ITGo虚拟化运维管理平台大数据版简介

运维工程师从入门到放弃必备书籍

运维工具大宝典☞商用软件篇

Greenplum生态与工具