Eu suponho que o cliente Sensu é uma máquina virtual do CentOS 7. Faça o login no SSH e siga os passos abaixo. Você não terá que alterar nada no servidor Sensu. Enquanto o cliente Sensu autenticar com sucesso com o servidor Sensu, as verificações serão executadas automaticamente.
Antes de começarmos, verifique se o firewall está configurado corretamente. Com uma configuração padrão, abra as portas TCP de saída 5671
e 5672
.
Etapa 1: adicione o repositório Sensu
O pacote sensu-client
não está nos repositórios padrão do CentOS. Adicione o repositório colando o seguinte conteúdo no arquivo /etc/yum.repos.d/sensu.repo
:
[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
gpgcheck=0
enabled=1
Em seguida, atualize yum
e instale sensu-client
:
yum update
yum install sensu
Todos os serviços ( sensu-server
, sensu-client
e sensu-api
) serão instalados com a instalação do sensu
pacote. Você pode ignorar com segurança todos os serviços, exceto os sensu-client
que serão usados. Não inicie o serviço ainda.
Etapa 2: instalar os plugins necessários
O modelo da Sensu é distribuir a carga sobre os clientes que resulta da execução de verificações e do envio dos resultados da verificação. Como resultado, você precisa instalar plug-ins do Sensu nos clientes em vez de no servidor Sensu. Alguns plugins são compilados localmente, o que significa que precisaremos de ferramentas de construção nos clientes:
yum groupinstall "Development tools"
Os seguintes plugins são muito populares e usados para muitas verificações. Execute cada um desses comandos para instalar os plugins depois que os pacotes de ferramentas de desenvolvimento forem instalados. Dependendo do tamanho do seu servidor, isso pode demorar um pouco:
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
Etapa 3: adicionar arquivos de configuração
Nós iremos adicionar quatro arquivos de configuração ao cliente Sensu.
/etc/sensu/conf.d/client.json
:Este arquivo contém assinaturas, o endereço IP para o cliente Sensu e o nome do cliente. Substitua os valores
ipaddress
e oshostname
valores que descrevem o cliente que você está adicionando. Além disso, especifique as assinaturas definidas no servidor Sensu ou, se você não tiver nenhuma, remova asubscriptions
seção inteira . Não se esqueça de remover a vírgula depois,name
se você fizer:{ "client": { "address": "-----ipaddress-----", "environment": "production", "name": "-----hostname-----", "subscriptions": [ "linux" ] } }
/etc/sensu/conf.d/transport.json
:Neste arquivo, definimos o transporte usado. Por padrão, o transporte usado é RabbitMQ. Cole o seguinte conteúdo no arquivo. Nenhum valor precisa ser alterado:
{ "transport": { "name": "rabbitmq", "reconnect_on_error": true } }
/etc/sensu/conf.d/rabbitmq.json
:O servidor e as credenciais do RabbitMQ são especificados neste arquivo. Substitua
hostname
pelo nome DNS. Por padrão, a porta é5672
para conexões não criptografadas. O usuário e a senha do RabbitMQ também devem ser substituídos. Esses detalhes podem diferir para cada cliente Sensu ou ser os mesmos para todos os clientes. Esta é uma decisão prática que é feita pelo usuário.O
vhost
é/
por padrão, mas muitas vezes é alterado para/sensu
. Se não tiver certeza de qual usar, tente os dois:{ "rabbitmq": { "host": "-----hostname-----", "password": "-----rabbitmq_password-----", "port": 5672, "user": "-----username-----", "vhost": "/sensu" } }
/etc/sensu/conf.d/checks.json
:O Sensu suporta dois tipos de verificações: verificações independentes e verificações de assinatura. As verificações de assinatura são definidas no servidor Sensu e as assinaturas são definidas no
client.json
arquivo em um cliente Sensu. Verificações autônomas são verificações definidas nos próprios clientes do Sensu. Geralmente, são verificações que se aplicam apenas a um servidor específico. Por exemplo, uma verificação que estaria em uma assinatura é uma verificação para ver se o servidor da Web ainda está em execução. Uma verificação independente pode ser uma verificação para ver se o servidor A pode alcançar o servidor B. Nenhum outro servidor precisa dessa verificação.Verificações autônomas são definidas neste arquivo. Abaixo você encontrará um exemplo de um
checks.json
arquivo com alguns exemplos de verificações independentes:{ "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 } } }
Depois de concluir a configuração do cliente Sensu, altere os direitos:
chown -R sensu:sensu /etc/sensu/conf.d
Etapa 4: conceda permissões ao sensu
usuário
As verificações são executadas como o usuário sensu
. Naturalmente, esse usuário tem direitos limitados. No entanto, algumas verificações precisam de root
permissões para serem executadas. Permitiremos que o usuário sensu
execute qualquer verificação, root
mas limite suas outras permissões.
Cole o seguinte conteúdo no arquivo /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 *
As duas primeiras linhas definem o caminho padrão, que permite especificar apenas o nome do script no comando de verificação, em vez de todo o caminho. Por exemplo, simplesmente usando o comando sudo check-process.rb -p mysqld
funcionará sem precisar especificar o caminho inteiro ( /opt/sensu/embedded/bin/check-process.rb -p mysqld
).
As outras linhas permitem que o sensu
usuário execute qualquer script de verificação como root
.
Finalmente, inicie o sensu-client
serviço e inicie-o automaticamente na inicialização:
systemctl start sensu-client
systemctl enable sensu-client
Se você tiver o Uchiwa instalado, o novo cliente deverá aparecer na lista. Se não, depure o sensu-client
inspecionando o arquivo de log/var/log/sensu/sensu-client.log