Alerta monitoring system - hilbix/netdata GitHub Wiki
The alerta monitoring system is a tool used to consolidate and de-duplicate alerts from multiple sources for quick ‘at-a-glance’ visualisation. With just one system you can monitor alerts from many other monitoring tools on a single screen.
When receiving alerts from multiple sources you can quickly become overwhelmed. With Alerta any alert with the same environment and resource is considered a duplicate if it has the same severity. If it has a different severity it is correlated so that you only see the most recent one. Awesome.
main site http://www.alerta.io
We can send Netadata alarms to Alerta so yo can see in one place alerts coming from many Netdata hosts or also from a multihost Netadata configuration.
The big advantage over other notifications method is that you have in a main view all active alarms with only las state, but you can also search history.
Setting up an Alerta server with Ubuntu 16.04
Here we will set a basic Alerta server to test it with Netdata alerts.
More advanced configurations are out os scope of this tutorial.
source: http://alerta.readthedocs.io/en/latest/gettingstarted/tutorial-1-deploy-alerta.html
I recommend to set up the server in a separated server, VM or container.
If you have other Nginx or Apache server in your organization, I recommend to proxy to this new server.
Set us as root for easiest working
sudo su
cd
Install Mongodb https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.6.list
apt-get update
apt-get install -y mongodb-org
systemctl enable mongod
systemctl start mongod
systemctl status mongod
Install Nginx and Alerta uwsgi
apt-get install -y python-pip python-dev nginx
pip install alerta-server uwsgi
Install web console
cd /var/www/html
mkdir alerta
cd alerta
wget -q -O - https://github.com/alerta/angular-alerta-webui/tarball/master | tar zxf -
mv alerta*/app/* .
cd
Services configuration
Create a wsgi python file
nano /var/www/wsgi.py
fill with
from alerta import app
Create uWsgi configuration file
nano /etc/uwsgi.ini
fill with
[uwsgi]
chdir = /var/www
mount = /alerta/api=wsgi.py
callable = app
manage-script-name = true
master = true
processes = 5
logger = syslog:alertad
socket = /tmp/uwsgi.sock
chmod-socket = 664
uid = www-data
gid = www-data
vacuum = true
die-on-term = true
Create a systemd configuration file
nano /etc/systemd/system/uwsgi.service
fill with
[Unit]
Description=uWSGI service
[Service]
ExecStart=/usr/local/bin/uwsgi --ini /etc/uwsgi.ini
[Install]
WantedBy=multi-user.target
enable service
systemctl start uwsgi
systemctl status uwsgi
systemctl enable uwsgi
Configure nginx to serve Alerta as a uWsgi application on /alerta/api
nano /etc/nginx/sites-enabled/default
fill with
server {
listen 80 default_server;
listen [::]:80 default_server;
location /alerta/api { try_files $uri @alerta/api; }
location @alerta/api {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
root /var/www/html;
}
}
restart nginx
service nginx restart
Config web console
nano /var/www/html/config.js
fill with
'use strict';
angular.module('config', [])
.constant('config', {
'endpoint' : "/alerta/api",
'provider' : "basic",
'colors' : {},
'severity' : {},
'audio' : {}
});
Config Alerta server
source: http://alerta.readthedocs.io/en/latest/configuration.html
Create a random string to use as SECRET_KEY
cat /dev/urandom | tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= | head -c 32 && echo
will output something like
0pv8Bw7VKfW6avDAz_TqzYPme_fYV%7g
Edit alertad.conf
nano /etc/alertad.conf
fill with (take care about all single quotes)
BASE_URL='/alerta/api'
AUTH_REQUIRED=True
SECRET_KEY='0pv8Bw7VKfW6avDAz_TqzYPme_fYV%7g'
ADMIN_USERS=['<here put you email for future login>']
restart
systemctl restart uwsgi
- go to console to http://yourserver/alerta/
- go to Login -> Create an account
- use your email for login so and administrative account will be created
create an API KEY
You need an API KEY to send messages from any source.
To create an API KEY go to Configuration -> Api Keys
Then create a API KEY with write permisions.
configure Netdata to send alarms to Alerta
On your system run:
/etc/netdata/edit-config health_alarm_notify.conf
and set
# enable/disable sending alerta notifications
SEND_ALERTA="YES"
# here set your alerta server API url
# this is the API url you defined when installed Alerta server,
# it is the same for all users. Do not include last slash.
ALERTA_WEBHOOK_URL="http://yourserver/alerta/api"
# Login with an administrative user to you Alerta server and create an API KEY
# with write permissions.
ALERTA_API_KEY="you last created API KEY"
# you can define environments in /etc/alertad.conf option ALLOWED_ENVIRONMENTS
# standard environments are Production and Development
# if a role's recipients are not configured, a notification will be send to
# this Environment (empty = do not send a notification for unconfigured roles):
DEFAULT_RECIPIENT_ALERTA="Production"
Test alarms
We can test alarms with standard
sudo su -s /bin/bash netdata
/opt/netdata/netdata-plugins/plugins.d/alarm-notify.sh test
exit
But the problem is that Netdata will send 3 alarms, and because last alarm is "CLEAR" you will not se them in main Alerta page, you need to select to see "closed" alarma in top-right lookup.
A little change in alarm-notify.sh that let us test each state one by one will be useful.