如何添加Centos 7 Sensu客户端
Anne655
・8 分钟阅读
在指南"CentOS 7如何安装和配置Sensu监测器"中,你学习了如何设置Sensu服务器,本教程是第二部分你将学习如何添加Sensu客户端,
登录SSH并按照以下步骤操作,你不必更改Sensu服务器上的任何内容,只要Sensu客户端成功地与Sensu服务器进行身份验证就会自动执行检查。
在开始之前,请确保你的防火墙配置正确,使用默认设置,打开传出TCP端口5671
和5672
。
步骤1:添加Sensu存储库
sensu-client包不在默认的CentOS存储库中,通过将以下内容粘贴到文件/etc/yum.repos.d/sensu.repo
中添加存储库:
[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
gpgcheck=0
enabled=1
接下来,更新yum
,并且安装sensu-client
:
yum update
yum install sensu
所有服务(sensu-server
,sensu-client
和sensu-api
)都将通过安装sensu
软件包安装,除了sensu-client
我们将使用的之外,你可以安全地忽略所有,还不启动服务。
步骤2: 安装必要的插件
Sensu的模型是通过执行检查和推送检查结果来分配客户端上的负载。因此你需要在客户端上,而不是在Sensu服务器上安装Sensu插件,在本地编译了一些插件,这意味着我们需要在客户端上构建工具:
yum groupinstall"Development tools"
下面的插件非常流行,用于许多检查,执行这些命令后,在安装开发工具包之后安装插件,
sensu-install -p uptime-checks
sensu-install -p process-checks
sensu-install -p http
sensu-install -p filesystem-checks
sensu-install -p cpu-checks
sensu-install -p memory-checks
sensu-install -p disk-checks
sensu-install -p load-checks
sensu-install -p network-checks
步骤3:添加配置文件
我们将向Sensu客户端添加四个配置文件。
/etc/sensu/conf.d/client.json
:此文件包含订阅Sensu客户端的IP地址和客户端名称,用描述要添加的客户端的值替换
ipaddress
和hostname
值,另外,指定Sensu服务器上定义的订阅,如果没有则删除整个subscriptions
部分,请不要忘记删除name后的逗号,如果你执行以下操作:{ "client": { "address":"-----ipaddress-----", "environment":"production", "name":"-----hostname-----", "subscriptions": [ "linux" ] } }
/etc/sensu/conf.d/transport.json
:在这个文件中,我们定义了使用的传输。默认情况下,使用的传输为RabbitMQ ,将以下内容粘贴到文件中,不需要更改任何值:
{ "transport": { "name":"rabbitmq", "reconnect_on_error": true } }
/etc/sensu/conf.d/rabbitmq.json
:RabbitMQ服务器和凭据在此文件中指定,将
hostname
替换为DNS名称,默认情况下,端口为未加密连接的5672
,RabbitMQ用户和密码也应该被替换,这些细节可能因每个Sensu客户而异也可能因所有客户而异,这是由用户做出的实际决策。默认情况下
vhost
是/
,但是,它通常更改为/sensu
,如果你不确定该使用哪一个,请同时尝试:{ "rabbitmq": { "host":"-----hostname-----", "password":"-----rabbitmq_password-----", "port": 5672, "user":"-----username-----", "vhost":"/sensu" } }
/etc/sensu/conf.d/checks.json
:Sensu支持两种类型的检查: 独立检查和订阅检查,订阅检查在Sensu服务器上定义,订阅在Sensu客户端的
client.json
文件中定义,独立检查是在Sensu客户端上定义的检查,这些通常是只适用于特定服务器的检查,例如,订阅检查是检查web服务器是否仍在运行,独立检查可以是检查服务器A是否可以到达服务器B。此文件中定义了独立检查,下面你将找到一个
checks.json
文件例子,其中包含一些独立检查:{ "checks": { "httpd": { "command":"sudo check-process.rb -p httpd", "handlers": [ "default", "pushover" ], "interval": 180, "occurences": 3, "refresh":"1800", "standalone": true, "ttl": 1200 }, "mysqld": { "command":"sudo check-process.rb -p mysqld", "handlers": [ "default", "pushover" ], "interval": 180, "occurences": 3, "refresh":"1800", "standalone": true, "ttl": 1200 } } }
完成Sensu客户端配置后更改权限:
chown -R sensu:sensu /etc/sensu/conf.d
步骤4: 授予sensu用户权限
检查作为用户sensu
执行,但是,有些检查需要root
权限才能执行,我们将允许用户sensu作为root执行任何检查,但是限制它的其他权限。
将以下内容粘贴到文件/etc/sudoers.d/sensu
中:
Defaults:sensu
secure_path=/opt/sensu/embedded/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
sensu ALL=(ALL) NOPASSWD: /opt/sensu/embedded/bin/check*.rb *
sensu ALL=(ALL) NOPASSWD: /opt/sensu/embedded/bin/metrics*.rb *
前两行定义默认路径,它允许你仅在检查命令中指定脚本名称,而不是在整个路径中指定脚本名称,例如只使用命令 sudo check-process.rb -p mysqld
将不需要指定整个路径( /opt/sensu/embedded/bin/check-process.rb -p mysqld
)。
其他行允许sensu
用户以root
执行任何检查脚本。
最后,启动sensu-client
服务,并且在引导时自动启动它:
systemctl start sensu-client
systemctl enable sensu-client
如果你安装了Uchiwa,新客户端应该出现在列表中。如果没有通过检查日志文件/var/log/sensu/sensu-client.log
来调试sensu-client