sensu 部署
Sensu是一个开源基础结构和应用程序监视解决方案,用于监视服务器,服务和应用程序的运行状况,并通过第三方集成发送警报和通知。 Sensu用Ruby编写,可以使用RabbitMQ或Redis处理消息。 它使用Redis存储数据。
如果您想以简单有效的方式监控您的云基础架构,Sensu是一个不错的选择。 它可以与您的组织可能已经在使用的许多现代DevOps堆栈集成,例如Slack , HipChat或IRC ,它甚至可以使用PagerDuty发送移动/寻呼机警报。
模块化架构意味着每个组件都可以安装在同一服务器上或完全独立的计算机上。建筑
Sensu的主要沟通机制是运输。 每个Sensu组件都必须连接到传输器,以便彼此发送消息。 运输可以使用RabbitMQ(在生产中推荐)或Redis。
Sensu Server处理事件数据并采取措施。 它注册客户端并使用过滤器,更改器和处理程序来处理检查结果并监视事件。 服务器将检查定义发布到客户端,Sensu API提供RESTful API,提供对监视数据和核心功能的访问。
Sensu Client执行由Sensu Server计划的检查或本地检查定义。 Sensu使用数据存储(Redis)保留所有持久数据。 最后, Uchiwa是与Sensu API进行通信的Web界面。
安装Sensu
先决条件
一个Linux安装充当服务器节点(本文使用CentOS 7)
一台或多台要监视的Linux机器(客户端)
服务器端
Sensu要求安装Redis。 要安装Redis,请启用EPEL存储库:
$ sudo yum install epel - release - y
然后安装Redis:
$ sudo yum install redis - y
修改/etc/redis.conf
以禁用保护模式,在每个接口上侦听并设置密码:
$ sudo sed
- i
's/^protected-mode yes/protected-mode no/g'
/ etc
/ redis.
conf
$ sudo sed
- i
's/^bind 127.0.0.1/bind 0.0.0.0/g'
/ etc
/ redis.
conf
$ sudo sed
- i
's/^# requirepass foobared/requirepass password123/g'
/ etc
/ redis.
conf
启用并启动Redis服务:
$ sudo systemctl enable redis
$ sudo systemctl start redis
现在,Redis已安装并可供Sensu使用。
现在,让我们安装Sensu。
首先,配置Sensu存储库并安装软件包:
$ sudo 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
$ sudo yum install sensu uchiwa
- y
让我们为Sensu创建最低配置文件:
$ sudo tee
/ etc
/ sensu
/ conf.
d
/ api.
json
<< EOF
{
"api": {
"host": "127.0.0.1",
"port": 4567
}
}
EOF
接下来,将sensu-api
配置为使用端口4567在localhost上侦听:
$ sudo tee
/ etc
/ sensu
/ conf.
d
/ redis.
json
<< EOF
{
"redis": {
"host": "<IP of server>",
"port": 6379,
"password": "password123"
}
}
EOF
$ sudo tee
/ etc
/ sensu
/ conf.
d
/ transport.
json
<< EOF
{
"transport": {
"name": "redis"
}
}
EOF
在这两个文件中,我们将Sensu配置为使用Redis作为传输机制以及Redis侦听的地址。 客户需要直接连接到传输机制。 每台客户端计算机上都需要这两个文件。
$ sudo 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
在此文件中,我们将Uchiwa配置为在端口3000的每个接口(0.0.0.0)上进行侦听。我们还将Uchiwa配置为使用sensu-api
(已配置)。
出于安全原因,请更改刚创建的配置文件的所有者:
$ sudo chown - R sensu:sensu / etc / sensu
启用并启动Sensu服务:
$ sudo systemctl enable sensu
- server sensu
- api sensu
- client
$ sudo systemctl start sensu
- server sensu
- api sensu
- client
$ sudo systemctl enable uchiwa
$ sudo systemctl start uchiwa
尝试访问Uchiwa网站:http:// <服务器的IP>:3000
对于生产环境,建议运行RabbitMQ集群作为传输而不是Redis(也可以在生产中使用Redis集群),并运行多个Sensu Server和API实例以实现负载平衡和高可用性。
现在已安装Sensu。 现在让我们配置客户端。
客户端
要添加新客户端,您需要通过创建文件/etc/yum.repos.d/sensu.repo
在客户端计算机上启用Sensu存储库。
$ sudo 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:
$ sudo yum install sensu - y
要配置sensu-client
,请创建在服务器计算机中创建的相同的redis.json
和transport.json
以及client.json
配置文件:
$ sudo tee
/ etc
/ sensu
/ conf.
d
/ client.
json
<< EOF
{
"client": {
"name": "rhel-client",
"environment": "development",
"subscriptions": [
"frontend"
]
}
}
EOF
在名称字段中,指定用于标识此客户端的名称(通常是主机名)。 环境字段可以帮助您进行过滤,订阅可以定义客户端将执行哪些监视检查。
最后,启用并启动服务并签入Uchiwa,因为新客户端将自动注册:
$ sudo systemctl enable sensu
- client
$ sudo systemctl start sensu
- client
千寿检查
Sensu检查包含两个组件:插件和定义。
Sensu与Nagios检查插件规范兼容,因此可以直接使用任何Nagios检查 。 检查是可执行文件,由Sensu客户端运行。
检查定义使Sensu知道如何,在何处以及何时运行该插件。
客户端
让我们在客户端计算机上安装一个检查插件。 请记住,此插件将在客户端上执行。
启用EPEL并安装nagios-plugins-http
:
$ sudo yum install
- y epel
- release
$ sudo yum install
- y nagios
- plugins
- http
现在,让我们通过手动执行来探索插件。 尝试检查客户端计算机上运行的Web服务器的状态。 它应该失败,因为我们没有运行Web服务器:
$
/ 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
失败了,正如预期的那样。 检查执行的返回码:
$ echo $?
2
Nagios检查插件规范为插件执行定义了四个返回码:
Plugin return code | 州 |
0 | 好 |
1 | 警告 |
2 | 危急 |
3 | 未知 |
有了这些信息,我们现在可以在服务器上创建检查定义。
服务器端
在服务器计算机上,创建文件/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应该多久执行一次此检查。 最后, subscribers
将定义执行检查的客户端。
重新启动sensu-api和sensu-server,并确认Uchiwa中提供了新检查。
$ sudo systemctl restart sensu - api sensu - server
下一步是什么?
Sensu是功能强大的工具,本文仅介绍其功能。 请参阅文档以了解更多信息,并访问Sensu网站以了解有关Sensu社区的更多信息。
翻译自: https://opensource.com/article/18/8/getting-started-sensu-monitoring-solution
sensu 部署