26
Use Saltstack to deploy a full monitoring and supervision stack #cfgmgmtcamp18 Arthur Lutz ‐ Logilab #cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Use Saltstack to deploy a fullmonitoring and supervisionstack#cfgmgmtcamp18Arthur Lutz ‐ Logilab

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 2: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

(part of) who am IArthur Lutz

Logilab

Python dev / Sysadmin / Debian / Devops

SaltStack Certi�ed Engineer

Paris Salt Meetup

Python Nantes Meetup / Nantes MonitoringMeetup

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 3: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Big picture ‐ scien�fic cloudapplica�on

Complex scaling parameters

salt-based auto-scaling, scale up and down basedon application logic

scaling is based on metrics collected by salt

automatically deploy application-orientedmonitoring

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 4: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

dashboards from diversedata

grafana provides data source diversity

we're looking for data origin diversity, and agileways to deploy them

system (internal) data

cloud (external) data

application-speci�c data

autoscaling state, etc...

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 5: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

agility by design

consistency by designeasily de�ne and add metrics

compare and test metrics from different points ofview

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 6: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Overview of componentsSaltStack - huge toolkit to manage infrastructure

Netdata - collect metrics, visualise "realtime"status of server

Sensu - devops oriented monitoring system

Graphite / Carbon - to collect and query timeseries data

Grafana - to build and display dashboards on thecollected data

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 7: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Components usedsalt pillars

salt scheduler

salt mine

salt returners

salt runners

salt reactor

salt-cloud

... "which ones did we not use?"

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 8: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 9: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Salt formulassalt-formula (what else?)

nginx-formula

nfs-formula

nagios-formula

sensu-formula

rabbitmq-formula

redis-formula

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 10: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Role based approach

Pillars (with pillar_merge_list: True ) :

base: '*': - role.sensu-client 'saltmaster.local': - role.sensu-server

States :

base: 'I@role:sensu-client': - sensu.client 'I@role:sensu-server': - sensu.server

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 11: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Salt minesend unique ID used by Netdata to stream clientsto central instance states :

{{ salt['mine.get']('role:netdata-master', 'network.interface_ip' expr_form='pillar').values()[0] }}

use to retrieve location of Rabbitmq server used by Sensu . pillars :

{% set rabbitmq = salt.saltutil.runner("mine.get", tgt='role:rabbitmq', fun="network.interface_ip", tgt_type='pillar').values() %}

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 12: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Salt returnersCarbon returner to push metrics from applicationand infrastructure

returner address is con�gured in pillars (cfextraction from mine)

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 13: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Salt custom modulesCustom modules are shipped by salt master from _modules folder

celery statistics (use app.inspect.stats )

core application metrics using HTTP API

sentry (error collector) metrics using the sentrypython binding (which uses the sentry HTTP API)

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 14: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Custom module ‐ celery inspectdef stats(): ''' Provide stats from celery tasks via app.inspect.stats() [snip] ''' ret = __salt__['redis.sentinel_get_master_ip']('name') r_url = 'redis://{}:{}/0' app = Celery(broker=r_url.format(ret['master_host'], ret['master_port'])) stats = app.control.inspect().stats() _clean(stats) return stats

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 15: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Salt‐cloudenables custom auto-scaling system

portable between cloud infrastructures

enables to run infrastructure on local openstack(or even devstack)

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 16: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Salt reactor ‐ event driven!react to new VM connecting

get info about VM (for example kernelversion )

upgrade kernel to linux-backports

reboot system

deploy monitoring

deploy application

Ended up being replaced by Packer generated AMI.

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 17: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Let's zoom in

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 18: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Visualising complexity

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 19: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

monitoring ‐ howlaunch a salt runner to pool the metrics

salt.execute runner is used to get infrastructureview of a given metric

cloud.profile runner is used to provision new VMs

cloud.destroy runner is used to scale down unusedVMs

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 20: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

monitoring ‐ howNetdata sends system metrics

central Netdata sends data to Graphite

Salt sends custom metrics to Graphite

Sensu executes checks (subscriber based model)

Sensu collects metrics and sends them to Graphite

Grafana uses the metrics stored in Graphite todisplay dashboards

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 21: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

MASTER

sensu­serversensu­api

web

minion

storage

minion

client

com

pute

nod

e

minion

client

com

pute

nod

e

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 22: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Demo �me!install netdata

role based architecture

auto con�gure streaming by pushing the API id tothe mine

install graphite

deploy netdata graphite con�guration

install grafana

con�gure grafana datasource with salt

con�gure grafana dashboard with salt#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 23: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

Demo �me!install rabbitmq with rabbitmq-formula for sensu

install sensu with sensu-formula

use roles to con�gure subscribed sensu checks

con�gure uchiwa for web ui

con�gure sensu metrics to send data to graphite

update grafana dashboard with salt

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 24: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

What's next / Roadmapconvert schedulers to beacons

various optimisations

use reactor instead of polling

look into salt's thorium (complex reactor system)

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 25: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

EndThanks for your attention

Questions ?

Comments ?

Improvements ?

#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab

Page 26: Use Saltstack to deploy a full monitoring and supervision ...slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdfSaltStack - huge toolkit to manage infrastructure Netdata -

sourceshttp://slides.logilab.fr/2018/cfgmgmtcamp_saltstack_monitoring.pdf

Demo : https://github.com/arthurlogilab/salt-vagrant-demo

Contact / Follow us : https://www.logilab.fr

@logilab

@arthurlutz

[email protected]#cfgmgmtcamp18 | January 2018 | Arthur Lutz @arthurlutz | Logilab