Sensu + Graphite + Grafana Install

Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

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 생성

$ wget -q https://eol-repositories.sensuapp.org/apt/pubkey.gpg -O- |


sudo apt-key add -

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 Plugin Install (Client Side)

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

Server Side Config

/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"
}
}

Client Side Config

/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
}
}

API Side Config

/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 생성

wget -q https://sensu.global.ssl.fastly.net/apt/pubkey.gpg -O- | apt-key


add -

Source 생성

export CODENAME=`lsb_release -c |awk '{ print $2 }'`


sudo "deb https://sensu.global.ssl.fastly.net/apt $CODENAME main" |
sudo tee /etc/apt/sources.list.d/sensu.list

Uchiwa Install

sudo apt-get update


sudo apt-get install uchiwa

Uchiwa Side Config

/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

sudo apt-get update


sudo apt-get install redis-server

Redis AUTH

# /etc/redis/redis.conf
sudo requirepass secret

Redis Side Config

/etc/redis/redis.conf

bind 0.0.0.0 # About 69 Line


requirepass secret # About 397 Line

Redis Check

만일 client가 등록 되었을때 아래와 같이 확인 가능, 그전엔 로그인해서 "select 1"로 확인 가능


redis-cli -h 192.168.10.104 -p 6379 -a secret
192.168.10.104:6379> keys *
1) "servers"
2) "result:sensu1"
3) "history:sensu1:keepalive"
4) "history:sensu0:keepalive:last_ok"
.
.

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"

Source List File

export CODENAME=`lsb_release -c |awk '{ print $2 }'`


sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian $CODENAME erlang
deb https://dl.bintray.com/rabbitmq/debian $CODENAME main
EOF

Erlang, RabbitMQ Install

sudo apt-get update


sudo apt-get install rabbitmq-server

RabbitMQ Server Start

sudo service rabbitmq-server start

Management UI Plugin 활성화


sudo rabbitmq-plugins enable rabbitmq_management

Management UI 사용자 추가

#
sudo rabbitmqctl list_users

#
sudo rabbitmqctl add_user sensu 'secret'

#
sudo rabbitmqctl set_user_tags sensu administrator

포트 설정

RabbitMQ는 클라이언트와 CLI Tool 연결을 위해 몇가지 포트를 사용한다.

따라서 방화벽을 사용하고 있다면 아래 포트를 열어줘야 한다.

4369 : epmd, 여러 rabbitmq 서버끼리 서로를 찾을 수 있는 네임 서버 역할을 하는 데몬에서 사용


5672, 5671 : AMQP 를 사용한 메시지 전달
25672 : inter-node 와 CLI Tool 연결
15672 : HTTP API, Management UI

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 또는 HTTP API를 통해 만들 수 있다.

# CLI Tool
rabbitmqctl add_vhost /sensu

사용자에게 vhost 에 접근할 수 있도록 권한 주기

새로운 vhost는 기본 exchange가 설정되지만 다른 구성 요소나 사용자는 없는 상태이다. 특정 사용자가 새로운 vhost 에 접속하기 위해서는
권한을 설정해야 한다.
# set_permissions [-p vhost] user conf write read
rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"

로그 관리

보통 /var/log/rabbitmq 경로에 로그가 남는다.

그리고 로그 파일 로테이션을 위해 logrotate 를 사용해서 일주일 단위로 로테이션 되도록 설정된다. 이 설정은 /etc/logrotate.d/rabbi
tmq-server 에서 확인하고 변경할 수 있다.

Grafana + Graphite + Sensu


Graphite Install

carbon install

sudo apt-get install -y graphite-carbon


sudo echo "CARBON_CACHE_ENABLED=true" > /etc/default/graphite-carbon
sudo service carbon-cache start

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

Relay Install (Sensu Server Side)

git clone https://github.com/opinionlab/sensu-metrics-relay.git


cd sensu-metrics-relay
sudo cp -R lib/sensu/extensions/* /etc/sensu/extensions

Relay Config (Sensu Server Side)

/etc/sensu/conf.d/relay.json

with the following contents


{
"relay": {
"graphite": {
"host": "graphite-relay Server IP",
"port": 2003
}
}
}

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

Grafana sensu plugin Install

sudo grafana-cli plugins install grafana-sensu-app

Sensu Data Sources Config


Graphite Data Source Config

You might also like