如何添加Centos 7 Sensu客户端

・8 分钟阅读

在指南"CentOS 7如何安装和配置Sensu监测器"中,你学习了如何设置Sensu服务器,本教程是第二部分你将学习如何添加Sensu客户端,

登录SSH并按照以下步骤操作,你不必更改Sensu服务器上的任何内容,只要Sensu客户端成功地与Sensu服务器进行身份验证就会自动执行检查。

在开始之前,请确保你的防火墙配置正确,使用默认设置,打开传出TCP端口56715672

步骤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-serversensu-clientsensu-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地址和客户端名称,用描述要添加的客户端的值替换ipaddresshostname值,另外,指定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

Anne655 profile image