使用Sensu简单有效地监控云基础架构
Sensu开源解决方案可以简单有效地监控云基础架构。
Sensu是一种开源基础架构和应用程序监控解决方案,可监控服务器,服务和应用程序运行状况,并通过第三方集成发送警报和通知。用Ruby编写,Sensu可以使用RabbitMQ或Redis来处理消息,使用Redis来存储数据。
如果想以简单有效的方式监控云基础架构,Sensu是一个不错的选择。它可以与你的组织可能已经使用的许多现代DevOps堆栈集成,例如Slack,HipChat或IRC,甚至可以使用PagerDuty发送移动/寻呼机警报。
Sensu的模块化架构意味着每个组件都可以安装在同一台服务器上或完全独立的机器上。
架构
Sensu的主要沟通机制是Transport,每个Sensu组件都必须连接到Transport才能相互发送消息。Transport可以使用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
接下来,使用端口4567配置sensu-api以侦听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作为Transport以及Redis将侦听的地址。 客户端需要直接连接到Transport,每台客户端计算机上都需要这两个文件。
$ 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集群作为Transport而不是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检查有两个组件:插件和定义。
Sensu与Nagios检查插件规范兼容,因此可以无需修改即可使用对Nagios的任何检查。 检查是可执行文件,由Sensu客户端运行。
检查定义让Sensu知道运行插件的方式,位置和时间。
客户端
我们在客户端计算机上安装一个check插件。 请记住,此插件将在客户端上执行。
启用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 | State |
0 | OK |
1 | WARNING |
2 | CRITICAL |
3 | UNKNOWN |
有了这些信息,我们现在可以在服务器上创建检查定义。
服务器端
在服务器计算机上,创建文件/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这个检查应该在几秒钟内执行的频率。 最后,订户将定义将执行检查的客户端。
重新启动sensu-api和sensu-server并确认Uchiwa中有新检查。
$ sudo systemctl restart sensu-api sensu-server
原文链接:
https://opensource.com/article/18/8/getting-started-sensu-monitoring-solution
译者 肖力
新钛云服技术副总裁,十九年运维经验,曾就职盛大、金山。丰富的私有云和运维管理经验,是国内虚拟化实践先驱者和业内知名的虚拟化专家,主导参与G云、西山居以及多个私有云/专享云的建设运维。开源云联盟WG5工作组组长。云技术社区创始人,《深度实践KVM》等书作者。
版权声明:本文为新钛云服原创编译,谢绝转载,否则将追究法律责任!
精品好文:
了解新钛云服
从盛大游戏G云COO到独自创业!2018中国财经峰会专访新钛云服CEO冯祯旺
新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁
没错,我们就是这样豪!GOPS送小爱、整箱签名书、数百定制笔记本和手机支架
新钛云服出品的精品技术干货
99%运维不知道,系统文件md5变了,竟然是因为......
OpenStack Rocky:专注于裸机云管理,快速升级以及硬件加速
Ceph BlueStore 与 FileStore:利用 Micron NVMe SSD 进行性能比较
OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等