
Sensu is an open-source application and infrastructure monitoring solution, designed to solve monitoring challenges introduced by a mix of infrastructures (i.e., public, private, and hybrid clouds).
Sensu services use a message bus (i,e. RabbitMQ) to communicate check requests and check results, the data’s related to check, event, client information are stored persistently in Data store (i,e. Redis).
Sensu server publishes and schedules check execution requests to client subscriptions. Subscriptions can be simply referred as a list of roles (i,e. web server, database, os type), determines which checks are executed by the client.
Client machine runs Sensu client software, a fully featured monitoring agent that does the client registration, subscriptions, local check execution (scheduled by Sensu client, not by Sense server), and check requests scheduled by Sensu server.
When there is a check, for ex. to check the status of Apache web server. The check will run on the Sensu client. If the check reports a service down, then the Sensu server will pass the result to event processor which processes the check results and takes action like sending an email or notifying in dashboard via RESTful API.
Article Series:
PART 1: Install Sensu on Ubuntu 16.04 / Debian 9 / Debian 8
PART 2: Install Uchiwa – Dashboard for Sensu Core Monitoring Tool
PART 3: How to Add Remote Linux Host into Sensu Monitoring Tool
Release:
Sensu Core – an open source software project, released under a permissive MIT License.
Sensu Enterprise – the commercial version of Sense Core with added features, support, training, and many other benefits.
Features:
The following are the advantages of Sensu,
- Monitor servers, application health, services, and business KPIs
- Alerting and Notifications
- Dynamic client registration and de-registration
- Can be automated with Chef, Puppet, and Ansible
- Availability of commercial support
Environment:
HostName | IP Address | OS | Purpose |
---|---|---|---|
server.itzgeek.local | 10.128.0.3 | Ubuntu 16.04 | Sensu Server (Redis, RabbitMQ, and Uchiwa) |
debian.itzgeek.local | 10.128.0.4 | Debian 9 | Sensu Client |
This guide will take you through the installation Sensu on Ubuntu 16.04 / Debian 8.
Install Redis:
To begin, install Redis on Sensu server.
sudo apt-get update sudo apt-get -y install redis-server apt-transport-https
Start the Redis service, if required.
sudo service redis-server start
Verify that Redis is ready to use by running the below command.
redis-cli ping
Output
PONG
Install RabbitMQ:
Add Erlang repository as RabbitMQ runs on the Erlang runtime.
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb sudo dpkg -i erlang-solutions_1.0_all.deb
Add Erlang public key to your trusted key list.
wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -
Install RabbitMQ along with Erlang runtime using the following command.
sudo apt-get update && sudo apt-get install -y socat erlang-nox=1:19.3-1
RabbitMQ is included in standard Ubuntu and Debian repositories, but the versions are often quite old. This guide recommends you to install the latest version of RabiitMQ through the official repository.
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server_3.6.10-1_all.deb
Install the RabbitMQ repository package.
sudo dpkg -i rabbitmq-server_3.6.10-1_all.deb
Proceed to the installation of RabbitMQ server.
sudo apt-get update && sudo apt-get install -y rabbitmq-server
Start RabbbitMQ service.
sudo service rabbitmq-server start
Create a RabbitMQ vhost and user for Sensu. Replace password with the password of your choice. You will need this account details later to configure the Sensu server.
sudo rabbitmqctl add_vhost /sensu
sudo rabbitmqctl add_user sensu password
sudo rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
Install Sensu Core:
Sensu offers official repositories for Debian and Ubuntu operating systems. The Sensu Core package includes sensu-server, sensu-api, and sensu-client.
Install GPG public key and add APT configuration file at /etc/apt/sources.list.d/sensu.list.
wget -O- https://sensu.global.ssl.fastly.net/apt/pubkey.gpg | sudo apt-key add - echo "deb https://sensu.global.ssl.fastly.net/apt sensu main" | sudo tee /etc/apt/sources.list.d/sensu.list
Install Sensu using the following command.
sudo apt-get update && sudo apt-get install -y sensu
Configure Sensu server:
On Debian and Ubuntu systems, Sensu will load configuration from /etc/sensu/config.json and /etc/sensu/conf.d/ directory.
Sensu processes require extra configuration to tell them how to connect to the RabbitMQ transport bus.
sudo nano /etc/sensu/conf.d/rabbitmq.json
Update the file with following values. Replace password with the password you chosen few steps back.
{
"rabbitmq": {
"host": "127.0.0.1",
"port": 5672,
"vhost": "/sensu",
"user": "sensu",
"password": "password"
}
}
This guide does not cover securing transport (RabbitMQ), but we strongly recommend you to secure a Sensu installation.
READ: Secure the Sensu transport via SSL encryption
Create redis.json file to include the connection information for Sensu to access Redis.
sudo nano /etc/sensu/conf.d/redis.json
Add the below lines to the above file.
{ "redis": { "host": "127.0.0.1", "port": 6379 } }
Create api.json file to include the connection information for Sensu to access API service.
sudo nano /etc/sensu/conf.d/api.json
Add below lines to the above file.
{ "api": { "host": "localhost", "bind": "0.0.0.0", "port": 4567 } }
Sensu core does not come with the monitoring dashboard, so you would need to install Uchiwa which is an open source dashboard for Sensu.
READ: How to install Uchiwa dashboard.
That’s All, for now. Stay tuned for more articles on Sensu Monitoring Tool.