Monitoring is critical for every decent application that runs on production. Many of the monitoring tools widely used show their limits at the age of Infrastructure as Code and Cloud computing. Let's investigate how monitoring can face the new challenges: scalability, reproducability and automation
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The devops approach to monitoring, Open Source and Infrastructure as Code Style
1. ;
The devops approach to monitoring,The devops approach to monitoring,
Open Source and IAC StyleOpen Source and IAC Style
Julien PivottoJulien Pivotto
Open World ForumOpen World Forum
October 4, 2013October 4, 2013
2. ;
whoamiwhoami
• sysadmin @ inuitssysadmin @ inuits
• open-source defender for 7+ yearsopen-source defender for 7+ years
• devops believerdevops believer
• @roidelapluie on twitter/github@roidelapluie on twitter/github
Julien Pivotto DevOps and monitoring
4. ;
Monitoring is usuallyMonitoring is usually
an afterthoughtan afterthought
ENOTIME, ENOBUDGETENOTIME, ENOBUDGET
Julien Pivotto DevOps and monitoring
5. ;
#monitoringsucks#monitoringsucks
• A movement started in 2011A movement started in 2011
• http://github.com/monitoringsuckshttp://github.com/monitoringsucks
• A lot of tools and informationA lot of tools and information
Julien Pivotto DevOps and monitoring
6. ;
GoalsGoals
• Find when a service is unavailableFind when a service is unavailable
• Understand failure post-mortemUnderstand failure post-mortem
Julien Pivotto DevOps and monitoring
7. ;
GoalsGoals
• Find when a service is unavailableFind when a service is unavailable
• Understand failure post-mortemUnderstand failure post-mortem
• Learn from your infrastructureLearn from your infrastructure
• AnticipateAnticipate
Julien Pivotto DevOps and monitoring
9. ;
Monitor every environmentMonitor every environment
• See performance changes in devSee performance changes in dev
• Fix them before it hits productionFix them before it hits production
Julien Pivotto DevOps and monitoring
10. ;
MetricMetric
• Time + name + value = metricTime + name + value = metric
• Can be anythingCan be anything
Julien Pivotto DevOps and monitoring
11. ;
EventEvent
• Time + fields = metricTime + fields = metric
• Logs become usable dataLogs become usable data
• Can be transformed into metricsCan be transformed into metrics
Julien Pivotto DevOps and monitoring
12. ;
Metrics + eventsMetrics + events
• Overview of your infrastructureOverview of your infrastructure
• Usage and state of the servicesUsage and state of the services
• Combine several metricsCombine several metrics
• Extract business valuesExtract business values
Julien Pivotto DevOps and monitoring
13. ;
AutomationAutomation
• Infrastructure as CodeInfrastructure as Code
• Automate everythingAutomate everything
⇒ One source of truthOne source of truth
Julien Pivotto DevOps and monitoring
14. ;
DeploymentDeployment
• Definitions of a service includes monitoringDefinitions of a service includes monitoring
• Deployed ⇔ monitoredDeployed ⇔ monitored
Julien Pivotto DevOps and monitoring
15. ;
ToolsTools
• No all-in-one toolNo all-in-one tool
• No autodiscovery toolNo autodiscovery tool
• Text-based configurationText-based configuration
• ScalableScalable
⇒ The Unix philosphyThe Unix philosphy
Julien Pivotto DevOps and monitoring
16. ;
IcingaIcinga
• Fork of nagiosFork of nagios
• Large and vibrant communityLarge and vibrant community
• Configuration compatible with nagiosConfiguration compatible with nagios
• User-friendly interfaceUser-friendly interface
• Use Icinga Classic!Use Icinga Classic!
Julien Pivotto DevOps and monitoring
18. ;
SensuSensu
• FlexibilityFlexibility
• Compatible with nagios pluginsCompatible with nagios plugins
• Connects to your source of trustConnects to your source of trust
• Relies on RabbitMQRelies on RabbitMQ
Julien Pivotto DevOps and monitoring
19. ;
CollectdCollectd
• Statistics collection daemonStatistics collection daemon
• A lot of plugins available. . .A lot of plugins available. . .
• Can send data to graphiteCan send data to graphite
• Simple configurationSimple configuration
Julien Pivotto DevOps and monitoring
22. ;
LogstashLogstash
• Ship logs from any sourceShip logs from any source
• Filter themFilter them
• Index themIndex them
• Search themSearch them
• Backed with elasticsearchBacked with elasticsearch
Julien Pivotto DevOps and monitoring
24. ;
GraphiteGraphite
• GraphingGraphing
• Accept any metricAccept any metric
• Store data in files (whisper)Store data in files (whisper)
• A lot of helpers functionsA lot of helpers functions
• Listen on UDP and TCPListen on UDP and TCP
Julien Pivotto DevOps and monitoring
25. ;
Send data to graphiteSend data to graphite
echo "stats.sshd.login 1 $(date +%s)" | nc -u graphite.example.com 2003echo "stats.sshd.login 1 $(date +%s)" | nc -u graphite.example.com 2003
Julien Pivotto DevOps and monitoring
27. ;
StatsdStatsd
• Graphite friendGraphite friend
• Stats aggregationStats aggregation
• Simple countersSimple counters
• Flushes every XX seconds to graphiteFlushes every XX seconds to graphite
• UDPUDP
Julien Pivotto DevOps and monitoring
31. ;
KibanaKibana
• Kibana is a web interface for Logstash/ESKibana is a web interface for Logstash/ES
• Kibana 1 was written in PHPKibana 1 was written in PHP
• Kibana 2 was written in RubyKibana 2 was written in Ruby
• Kibana 3 is written in AngularJSKibana 3 is written in AngularJS
Julien Pivotto DevOps and monitoring
32. ;
Kibana 3Kibana 3
• Everything happens in the browserEverything happens in the browser
• The browser is connected to ElasticsearchThe browser is connected to Elasticsearch
• You can save dashboards into ESYou can save dashboards into ES
• You can write/template dashboards to filesYou can write/template dashboards to files
Julien Pivotto DevOps and monitoring
33. ;
Kibana queriesKibana queries
Example of a kibana query
@fields.syslog_program:"httpd" AND
@fields.http_host:"test.example.com" AND
@fields.response:"404"
• LLucene query syntax
• SSimple and effective
• PPoint & click web interface
Julien Pivotto DevOps and monitoring
37. ;
Toolchain exampleToolchain example
• Apache ships logs to rsyslogApache ships logs to rsyslog
• Rsyslog ships logs to logstashRsyslog ships logs to logstash
• Logstash ships metrics to statsdLogstash ships metrics to statsd
• Statsd ships metrics to GraphiteStatsd ships metrics to Graphite
• Icinga query metric from graphiteIcinga query metric from graphite
• https://github.com/etsy/nagios_toolshttps://github.com/etsy/nagios_tools
Julien Pivotto DevOps and monitoring
38. ;
Reusing Icinga/Nagios perfdataReusing Icinga/Nagios perfdata
• Icinga performs various checksIcinga performs various checks
• Icinga sends perfdata to graphiteIcinga sends perfdata to graphite
• Graphite stores the dataGraphite stores the data
• Gdash serves them inside dashboardsGdash serves them inside dashboards
• https://github.com/roidelapluie/icinga-to-graphitehttps://github.com/roidelapluie/icinga-to-graphite
Julien Pivotto DevOps and monitoring
39. ;
SharingSharing
• Build dashboard: dashing, teamdashBuild dashboard: dashing, teamdash
• Share with developersShare with developers
• Share with managersShare with managers
Julien Pivotto DevOps and monitoring
40. ;
Try them yourselfTry them yourself
https://github.com/KrisBuytaert/vagrant-graphitehttps://github.com/KrisBuytaert/vagrant-graphite
Julien Pivotto DevOps and monitoring