Sensu + Graphite + Grafana Install
Sensu + Graphite + Grafana Install
Sensu + Graphite + Grafana Install
Install Overview
https://docs.sensu.io/sensu-core/1.6/installation/overview/
Architecture
https://docs.sensu.io/sensu-core/1.6/overview/architecture/
Install Item
DataStore : Redis
Sensu-Server : sensu 1.6.2-2
TransPort : RabbitMQ
Sensu-Client : sensu 1.6.2-2
sensu install (Server, Client, API)
Key 생성
Source File 생성
$ export CODENAME=`lsb_release -c |awk '{ print $2 }'`
$ echo "deb https://eol-repositories.sensuapp.org/apt $CODENAME
main" | sudo tee /etc/apt/sources.list.d/sensu.list
Sensu Install
apt-get update
apt-get install sensu=1.6.*
sensu-install -p cpu-checks
sensu-install -p disk-checks
sensu-install -p memory-checks
sensu-install -p nginx
sensu-install -p process-checks
sensu-install -p load-checks
sensu-install -p vmstats
sensu-install -p mailer
/etc/sensu/conf.d/rabbitmq.json
{
"rabbitmq": {
"host": "192.168.10.103",
"port": 5672,
"vhost": "/sensu",
"user": "sensu",
"password": "secret",
"heartbeat": 30,
"prefetch": 50
}
}
/etc/sensu/conf.d/transport.json
{
"transport": {
"name": "rabbitmq",
"reconnect_on_error": true
}
}
/etc/sensu/conf.d/redis.json
{
"redis": {
"host": "192.168.10.104",
"port": 6379,
"password": "secret"
}
}
/etc/sensu/conf.d/client.json
{
"client": {
"name": "sensu0",
"address": "192.168.10.100",
"keepalive": {
"thresholds": {
"warning": 300,
"critical": 600
}
},
"environment": "development",
"subscriptions": [
"all",
"dev",
"ubuntu-hosts"
]
}
}
/etc/sensu/conf.d/rabbitmq.json
{
"rabbitmq": {
"host": "192.168.10.103",
"port": 5672,
"vhost": "/sensu",
"user": "sensu",
"password": "secret",
"heartbeat": 30,
"prefetch": 50
}
}
/etc/sensu/conf.d/transport.json
{
"transport": {
"name": "rabbitmq",
"reconnect_on_error": true
}
}
/etc/sensu/conf.d/api.json
{
"api": {
"host": "192.168.10.102",
"bind": "192.168.10.102",
"port": 4567
}
}
/etc/sensu/conf.d/rabbitmq.json
{
"rabbitmq": {
"host": "192.168.10.103",
"port": 5672,
"vhost": "/sensu",
"user": "sensu",
"password": "secret",
"heartbeat": 30,
"prefetch": 50
}
}
/etc/sensu/conf.d/transport.json
{
"transport": {
"name": "rabbitmq",
"reconnect_on_error": true
}
}
/etc/sensu/conf.d/redis.json
{
"redis": {
"host": "192.168.10.104",
"port": 6379,
"password": "secret"
}
}
/etc/sensu/conf.d/check/
/etc/sensu/conf.d/check_cpu_linux.json
{
"checks": {
"check-cpu-linux": {
"handlers": ["matric"],
"command": "/opt/sensu/embedded/bin/check-cpu.rb -w 80 -c 90
",
"interval": 60,
"occurrences": 5,
"subscribers": [ "dev" ]
}
}
}
/etc/sensu/conf.d/check_memory_linux.json
{
"checks": {
"check_memory_linux": {
"handlers": ["matric"],
"command": "/opt/sensu/embedded/bin/check-memory-percent.rb -w 90
-c 95",
"interval": 60,
"occurrences": 5,
"subscribers": [ "dev" ]
}
}
}
/etc/sensu/conf.d/check_disk_usage_linux.json
{
"checks": {
"check-disk-usage-linux": {
"handlers": ["matric"],
"command": "/opt/sensu/embedded/bin/check-disk-usage.rb -w 80
-c 90",
"interval": 60,
"occurrences": 5,
"subscribers": [ "dev" ]
}
}
}
Uchiwa Install
Key 생성
Source 생성
Uchiwa Install
/etc/sensu/uchiwa.json
{
"sensu": [
{
"name": "Sensu VB",
"host": "192.168.10.102",
"port": 4567,
"timeout": 10
}
],
"uchiwa": {
"host": "192.168.10.101",
"port": 3000,
"refresh": 10
}
}
Redis
Redis Install
Redis AUTH
# /etc/redis/redis.conf
sudo requirepass secret
/etc/redis/redis.conf
Redis Check
RebbitMQ
Key 생성
curl -fsSL
https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-
release-signing-key.asc | sudo apt-key add -
sudo apt-key adv --keyserver "hkps://keys.openpgp.org" --recv-keys
"0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
Management UI 사용자 추가
#
sudo rabbitmqctl list_users
#
sudo rabbitmqctl add_user sensu 'secret'
#
sudo rabbitmqctl set_user_tags sensu administrator
포트 설정
Virtual Hosts
RabbitMQ 는 connection, exchange, queue, binding, user, policy 들을 virtual hosts 를 통해 논리적인 그룹으로 분리해서 운영할 수 있다.
Apache의 virtual hosts 와 Nginx의 server 블록과 유사한 개념이다.
RabbitMQ 는 vhost 단위로 자원에 대한 권한을 갖는다. 따라서 사용자는 전체 권한을 갖을 수 없고 하나 이상의 vhost 단위로 권한을 부여
받는다.
vhost 마다 이름이 지정되고, 클라이언트는 지정한 vhost 에 대한 연결을 맺는다. 이 연결을 통해 오직 해당 vhost의 exchange, queue, binding
만 접근할 수 있게 된다.
vhost 만들기
# CLI Tool
rabbitmqctl add_vhost /sensu
새로운 vhost는 기본 exchange가 설정되지만 다른 구성 요소나 사용자는 없는 상태이다. 특정 사용자가 새로운 vhost 에 접속하기 위해서는
권한을 설정해야 한다.
# set_permissions [-p vhost] user conf write read
rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
로그 관리
그리고 로그 파일 로테이션을 위해 logrotate 를 사용해서 일주일 단위로 로테이션 되도록 설정된다. 이 설정은 /etc/logrotate.d/rabbi
tmq-server 에서 확인하고 변경할 수 있다.
carbon install
UI
sudo apt-get install -y graphite-web apache2 libapache2-mod-wsgi
sudo -u _graphite graphite-manage syncdb --noinput
sudo rm -f /etc/apache2/sites-enabled/000-default.conf
sudo cp /usr/share/graphite-web/apache2-graphite.conf
/etc/apache2/sites-enabled/graphite.conf
sudo service apache2 restart
/etc/sensu/conf.d/relay.json
Grafana
Grafana Install
wget https://dl.grafana.com/oss/release/grafana_6.6.2_amd64.deb
sudo apt-get install ./grafana_6.6.2_amd64.deb