SlideShare a Scribd company logo
Mar 8, 2016 1 / 26
Icinga Camp BerlinIcinga Camp Berlin
March 1March 1stst
20162016
Icinga meets education: MoniTutorIcinga meets education: MoniTutor
Mark SwillusMark Swillus
Camp Berlin 2016Camp Berlin 2016 22Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Motivation
Creative use of Icinga
Technical details
Future of MoniTutor
Lessons Learned + Q&A
MoniTutor
Monitoring madness
Camp Berlin 2016Camp Berlin 2016 33Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
FH-Aachen
Electrical Engineering and Information Technology
Prof. Andreas Claßen
IT-Infrastructure, Fault tolerant systems
Camp Berlin 2016Camp Berlin 2016 44Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Applying concepts in virtual environment
Hands-On lessons
Complex problems, scalability, no overview, no state information
Lab environment
ITSclient
ITSserver
X.500
LDAP
X.500
LDAP
Online resources
Script
Lecture
Scenario
Hypervisor
Student
Camp Berlin 2016Camp Berlin 2016 55Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Hands-On lessons
Scenario life cycle
Basic Setup Server configuration Client config.
✔
Iface.-config
✔
Internet access
✔
Client reaches Server
✔
slapd installed
✔
slapd running
✔
Port 389 listening
✔
ldapsearch xyz successful
Milestone1
Milestone2
Milestone3
✔
libdnss-ldap installed
✔
pam configured
✔
nsswitch configured
✔
Remote-login successful
Service-check
Camp Berlin 2016Camp Berlin 2016 66Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Hands-On lessons
Lab environment
ITSclient
ITSserver
ITSclient
ITSserver
Lab environment Lab environment
ITSclient
ITSserver
State information
Central overview
Automated checks
Remote access
Data repository
Interactive help
NAT
student1 student2 student3
Camp Berlin 2016Camp Berlin 2016 77Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
MoniTutor
Student Monitoring in workshop environments
Multiplatform
Supports arbitrary, self-defined scenarios
Penetrates firewalls and NAT
Completely free and open source
Camp Berlin 2016Camp Berlin 2016 88Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Use of Icinga
Command pipe
(icinga.cmd)
Templates
(inheritance)
Database
(DBIDO)
Custom vars
Camp Berlin 2016Camp Berlin 2016 99Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Icinga & Web2py
Define structure
(Hosts, Milestones, Checks)
Program parameters
Camp Berlin 2016Camp Berlin 2016 1010Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
hosts,services
Icinga & Web2py
Define structure
(Hosts, Milestones, Checks)
Deploy
Camp Berlin 2016Camp Berlin 2016 1111Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Icinga & Web2py
Define structure
(Hosts, Milestones, Checks)
Deploy
Monitoring
Lab environment
Execute Check2
Send result to Icinga3
Deploy Check Program1
Prg1
MoniTutor DB
student1
Prg1
Camp Berlin 2016Camp Berlin 2016 1212Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Icinga & Web2py
Define structure
(Hosts, Milestones, Checks)
Deployment
Monitoring
Display progress
WebGui / student login1
Extract status2
Reconstruct Structure3
Display4
servicestatus
hoststatus
Camp Berlin 2016Camp Berlin 2016 1414Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Deployment
Scenario / workshop
Milestone1 Milestone
2
Check1: Host: “itsserver”
Check2: Host: “itsclient”
Check3: Host: “itsserver”
...
...
Templates
(inheritance)
Camp Berlin 2016Camp Berlin 2016 1818Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Deployment
Templates
(inheritance)
Icinga Documentation:
Apply For and Custom Attribute Override
Defining dictionaries.
object Host "cisco-catalyst-6509-34" {
import "generic-host"
display_name = "Catalyst 6509 #34 VIE21"
address = "127.0.1.4"
/* "GigabitEthernet0/2" is the interface name,
* and key name in service apply for later on
*/
vars.interfaces["GigabitEthernet0/2"] = {
/* define all custom attributes with the
* same name required for command parameters/arguments
* in service apply (look into your CheckCommand definition)
*/
iftraffic_units = "g"
iftraffic_community = IftrafficSnmpCommunity
iftraffic_bandwidth = 1
vlan = "internal"
qos = "disabled"
}
vars.interfaces["GigabitEthernet0/4"] = {
iftraffic_units = "g"
//iftraffic_community = IftrafficSnmpCommunity
iftraffic_bandwidth = 1
vlan = "renote"
qos = "enabled"
}
vars.interfaces["MgmtInterface1"] = {
iftraffic_community = IftrafficSnmpCommunity
vlan = "mgmt"
interface_address = "127.99.0.100" #special management ip
}
}
apply Service "if-" for (interface_name => interface_config in host.vars.interfaces) {
import "generic-service"
check_command = "iftraffic"
display_name = "IF-" + interface_name
/* use the key as command argument (no duplication of values in host.vars.interfaces) */
vars.iftraffic_interface = interface_name
vars.iftraffic_units = interface_config.iftraffic_units
vars.iftraffic_community = interface_config.iftraffic_community
vars += interface_config
if (interface_config.iftraffic_bandwidth == "") {
vars.iftraffic_bandwidth = 1
}
if (interface_config.vlan == "") {
vars.vlan = "not set"
}
if (len(interface_config.iftraffic_community) == 0 || len(vars.iftraffic_community) == 0)
{
vars.iftraffic_community = IftrafficSnmpCommunity
}
notes = "Interface check for " + interface_name + " (units: '" + 
interface_config.iftraffic_units + "') in VLAN '" + vars.vlan + 
"' with ' QoS '" + vars.qos + "'"
notes_url = "http://foreman.company.com/hosts/" + host.name
action_url = "http://snmp.checker.company.com/" + host.name + "/if-" + interface_name
}
Camp Berlin 2016Camp Berlin 2016 1919Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Deployment
Templates
(inheritance)
Icinga Documnetation:
Apply For and Custom Attribute Override
Defining dictionaries.
///Created by monitutor
template Service "Install_Configure_LDAP_Server" {
vars.scenario_milestones["ldap01"] = {
display_name = "LDAP Hands-On Lab"
hidden = "false"
milestones["Install_Configure_LDAP_Server"] = {
name = "Install_Configure_LDAP_Server"
display_name = "Install & Configure LDAP Server"
description = "Basic LDAP Server install & configure steps 
that students have to do.<br>"
order = "0"
hidden = false
}
}
}
Camp Berlin 2016Camp Berlin 2016 2222Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Deployment
Templates
(inheritance)paul2
paul2_itsserver monitutor-system
+ basic host configuration
itsserver
+ itsserver specific configuration
Monitutor-check
+ basic service configuration
paul2_Check_ldap_utils_
Package_Installed
host
service
Check_ldap_utils_Package_Installed
+ check_ldap… specific configuration
Install_Configure_LDAP_Server
+ Milestone Install… specific configuration
Dictionary
Camp Berlin 2016Camp Berlin 2016 2323Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Deployment
Camp Berlin 2016Camp Berlin 2016 2525Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Monitoring
Command pipe
(icinga.cmd)
MoniTutor DB
Daemon Init
paul2
connect
Username, hostname
QueueHandler
ClientThread
Read
Write
{“user-host”:Priority_Queue()}
Send check
Interpreter, program, params,
servicename
/tmp/monitutor
Checkprogram?Request code
program name
Server Client
Camp Berlin 2016Camp Berlin 2016 2626Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Monitoring
Command pipe
(icinga.cmd)
MoniTutor DB
Daemon Init
paul2
QueueHandler
ClientThread
Read
Write
{“user-host”:Priority_Queue()}
Send code
Interpreter, program, params,
servicename, code
/tmp/monitutor
Check
Server Client
Execute
Send Result
servicename, output,
exit code….
ResultHandler
standard libraries only
DBIDO
Request code
program name
Camp Berlin 2016Camp Berlin 2016 2727Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Display
Camp Berlin 2016Camp Berlin 2016 2929Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Display
SELECT c.varname, c.varvalue, h.display_name
FROM icinga_customvariables c, icinga_hosts h
WHERE object_id = host_object_id AND varname = 'owner' AND varvalue = 'paul2';
varname | varvalue | display_name
---------+----------+--------------
owner | paul2 | ITS Server
SELECT c.varname, c.varvalue, h.display_name, s.output, ser.display_name
FROM icinga_customvariables c, icinga_hosts h, icinga_servicestatus s , icinga_services ser
WHERE c.object_id = h.host_object_id
AND h.host_object_id = ser.host_object_id
AND ser.service_object_id = s.service_object_id
AND c.varname = 'owner' AND c.varvalue = 'paul2';
varname | varvalue | display_name | output | display_name
---------+----------+--------------+-----------------------------------------------+------------------------------------------------
owner | paul2 | ITS Server | PASSED | Check NW Interface Existence eth1 on itsclient
owner | paul2 | ITS Server | File /etc/ldap/ldap.conf does not exist (yet) | Check configuration entry BASE on LDAP Server
owner | paul2 | ITS Server | File /etc/ldap/ldap.conf does not exist (yet) | Check configuration entry URI on LDAP Server
owner | paul2 | ITS Server | PASSED | Check NW Interface Existence eth1 on itsserver
owner | paul2 | ITS Server | SW package slapd not installed | Check: slapd SW package installed
owner | paul2 | ITS Server | PASSED | Check: ldap-utils SW package installed
owner | paul2 | ITS Server | CRITICAL - Host Unreachable (10.0.0.1) | ping4
owner | paul2 | ITS Server | PING OK - Packet loss = 0%, RTA = 0.05 ms | ping6
Camp Berlin 2016Camp Berlin 2016 3030Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Display
SELECT varname, varvalue FROM icinga_customvariables WHERE varname = 'scenario_milestones' LIMIT 3;
varname | varvalue
---------------------+------------------------------------------------------------------------------------------------------------------------
scenario_milestones | {"ldap01":{"display_name":"LDAP Hands-On Lab","hidden":"false","milestones":{"Install_Configure_LDAP_Server":{"descr...
scenario_milestones | {"ldap01":{"display_name":"LDAP Hands-On Lab","hidden":"false","milestones":{"Install_Configure_LDAP_Server":{"descr...
scenario_milestones | {"ldap01":{"display_name":"LDAP Hands-On Lab","hidden":"false","milestones":{"Install_Configure_LDAP_Server":{"descr...
(3 rows)
milestone_queue={}
for milestone in milestones:
if milestone.get("name") not in milestone_queue:
milestone_queue[milestone.get("name")] = {"order": milestone.get("order"),
"display_name": milestone.get("display_name"),
"description": milestone.get("description"),
"hidden": milestone.get("hidden"),
"services": []}
milestone_queue[milestone.get("name")]["services"].append(service[0].service_id)
return dict(milestones=sorted(milestone_queue.items(), key=lambda x: x[1]["order"]))
Camp Berlin 2016Camp Berlin 2016 3131Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Future of MoniTutor
Further development
One semester testing (fault tolerant systems)
Release in summer (Free & OpenSource)
Other environments
Online-Hands-On lessons (?)
Camp Berlin 2016Camp Berlin 2016 3232Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Lessons learned
Camp Berlin 2016Camp Berlin 2016 3333Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Lessons learned
Camp Berlin 2016Camp Berlin 2016 3434Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor
Mark Swillus
Student FH Aachen
mark.swillus@alumni.fh-aachen.de
0xB2FF4A4C: 40A5 A4F1 D548 6054 4D7F CE08 F22C 2E99 B2FF 4A4C
Prof. Dr. Andreas Claßen
FH Aachen
a.classen@fh-aachen.de
Tel.: +49.241.6009 52128

More Related Content

PPTX
Icinga at Flossuk 2015 in York
PDF
Icinga Web 2 at Icinga Camp San Francisco
PPTX
Introduction into Icinga
PPTX
Presentation about Icinga at Kiratech DevOps Day in Verona
PPTX
Icinga @ OSMC 2014
PPTX
Afpified Monitoring with Icinga2
PPTX
Monitoring OpenNebula with Icinga2
PDF
Icinga Director
Icinga at Flossuk 2015 in York
Icinga Web 2 at Icinga Camp San Francisco
Introduction into Icinga
Presentation about Icinga at Kiratech DevOps Day in Verona
Icinga @ OSMC 2014
Afpified Monitoring with Icinga2
Monitoring OpenNebula with Icinga2
Icinga Director

What's hot (20)

PPTX
Open Source Monitoring with Icinga at Fossasia 2015
PDF
Why favour Icinga over Nagios @ OSDC 2015
PPTX
IcingaCamp Portland 2015 - Welcome
PPTX
Log Monitoring Simplified - Get the best out of Graylog2 & Icinga 2
PDF
Icinga 1, Icinga 2 @ FrOSCon 2014
PPTX
Icinga Camp Barcelona - Icinga
PPTX
Icinga2 in the middle of your toolstack
PPTX
Icinga Camp Antwerp - Icinga2 Cluster
PPTX
Icinga Camp San Diego 2016 - Icinga Web 2
PPTX
Loadays 2015 - Enterprise Monitoring with Icinga
PPTX
Icinga Camp Berlin 2017 - Integrations all the way
PDF
Icinga 2012 Development at 6th TF-NOC Meeting
PDF
Icinga @OSMC 2013
PDF
Icinga Camp San Diego: Apify them all
PPTX
Icinga Camp Antwerp - Current State of Icinga
PDF
Icinga 2012 at Monitoring Workshop
PPTX
Icinga 2 at Icinga Camp San Francisco
PDF
Icinga Camp Barcelona - Icinga Web 2
PDF
Icinga @GUUG 2013
PPTX
Introduction into Icinga Web 2
Open Source Monitoring with Icinga at Fossasia 2015
Why favour Icinga over Nagios @ OSDC 2015
IcingaCamp Portland 2015 - Welcome
Log Monitoring Simplified - Get the best out of Graylog2 & Icinga 2
Icinga 1, Icinga 2 @ FrOSCon 2014
Icinga Camp Barcelona - Icinga
Icinga2 in the middle of your toolstack
Icinga Camp Antwerp - Icinga2 Cluster
Icinga Camp San Diego 2016 - Icinga Web 2
Loadays 2015 - Enterprise Monitoring with Icinga
Icinga Camp Berlin 2017 - Integrations all the way
Icinga 2012 Development at 6th TF-NOC Meeting
Icinga @OSMC 2013
Icinga Camp San Diego: Apify them all
Icinga Camp Antwerp - Current State of Icinga
Icinga 2012 at Monitoring Workshop
Icinga 2 at Icinga Camp San Francisco
Icinga Camp Barcelona - Icinga Web 2
Icinga @GUUG 2013
Introduction into Icinga Web 2
Ad

Viewers also liked (20)

PPTX
Icinga2 - Apify them all
PDF
Saluki - do it like a user
PPTX
Icinga Camp Berlin 2016 - Opening
PDF
Collaborative communication
PPTX
Monitoring Open Source Databases with Icinga
PDF
Icinga 2 and Puppet automate monitoring
PPTX
Working in and with Open Source Communities
PDF
Icinga Camp Amsterdam - Icinga2 and Puppet
PPTX
Icinga Camp Amsterdam - Monitoring – When to start
ODP
Icinga Camp Belgrade - ITAF Introduction
PDF
Icinga Camp Amsterdam - Icinga Director
PPTX
IcingaCamp Stockholm - Icinga Web2
PDF
Icinga 2 - Apify them all at Icinga Camp Amsterdam 2016
ODP
Icinga Camp Amsterdam - Infrastructure as Code
PDF
IcingaCamp Stockholm - How to make your monitoring shut up
PPTX
IcingaCamp Stockholm - Opening
PDF
Icinga Camp Amsterdam - Icinga2 and Ansible
ODP
Icinga Camp Belgrade - ITAF Monitoring best practices & demo
PPTX
Icinga Camp Belgrade - State of Icinga
PPTX
Icinga Camp Belgrade - Icinga Web 2
Icinga2 - Apify them all
Saluki - do it like a user
Icinga Camp Berlin 2016 - Opening
Collaborative communication
Monitoring Open Source Databases with Icinga
Icinga 2 and Puppet automate monitoring
Working in and with Open Source Communities
Icinga Camp Amsterdam - Icinga2 and Puppet
Icinga Camp Amsterdam - Monitoring – When to start
Icinga Camp Belgrade - ITAF Introduction
Icinga Camp Amsterdam - Icinga Director
IcingaCamp Stockholm - Icinga Web2
Icinga 2 - Apify them all at Icinga Camp Amsterdam 2016
Icinga Camp Amsterdam - Infrastructure as Code
IcingaCamp Stockholm - How to make your monitoring shut up
IcingaCamp Stockholm - Opening
Icinga Camp Amsterdam - Icinga2 and Ansible
Icinga Camp Belgrade - ITAF Monitoring best practices & demo
Icinga Camp Belgrade - State of Icinga
Icinga Camp Belgrade - Icinga Web 2
Ad

Similar to MoniTutor (20)

PPTX
Serverless survival kit
PDF
Concourse, Spinnaker, Cloud Foundry, Oh My! Creating Sophisticated Deployment...
PDF
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
PPTX
Microservices With SenecaJS
PDF
Rock the activity stream api
PDF
apidays LIVE New York - Automation API Testing: with Postman collection are ...
PDF
NSA for Enterprises Log Analysis Use Cases
PDF
Cisco Paris DevNet Hackathon slideshow - Intro
PDF
Splunk's api how we built it
PPTX
CI/CD and TDD in deploying kamailio
PPTX
Eyeing the Web
PDF
OSMC 2011 | Neues von Icinga by Icinga Team
PDF
Spring and Pivotal Application Service - SpringOne Tour Dallas
PDF
apidays LIVE Paris - Automation API Testing by Guillaume Jeannic
PDF
PAD-3126 - Evolving the DevOps Organization around IBM PureApplication System...
PDF
21st Docker Switzerland Meetup - ISTIO
PDF
IPMA. Istanbul World Congress
PDF
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
PDF
Dataiku meetup 12 july 2018 Amsterdam
PDF
Why favour Icinga over Nagios @ FrOSCon 2015
Serverless survival kit
Concourse, Spinnaker, Cloud Foundry, Oh My! Creating Sophisticated Deployment...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Microservices With SenecaJS
Rock the activity stream api
apidays LIVE New York - Automation API Testing: with Postman collection are ...
NSA for Enterprises Log Analysis Use Cases
Cisco Paris DevNet Hackathon slideshow - Intro
Splunk's api how we built it
CI/CD and TDD in deploying kamailio
Eyeing the Web
OSMC 2011 | Neues von Icinga by Icinga Team
Spring and Pivotal Application Service - SpringOne Tour Dallas
apidays LIVE Paris - Automation API Testing by Guillaume Jeannic
PAD-3126 - Evolving the DevOps Organization around IBM PureApplication System...
21st Docker Switzerland Meetup - ISTIO
IPMA. Istanbul World Congress
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
Dataiku meetup 12 july 2018 Amsterdam
Why favour Icinga over Nagios @ FrOSCon 2015

More from Icinga (20)

PDF
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
PDF
Extending Icinga Web with Modules: powerful, smart and easily created - Icing...
PDF
Infrastructure Monitoring for Cloud Native Enterprises - Icinga Camp Milan 2023
PDF
Incident management: Best industry practices your team should know - Icinga C...
PDF
Monitoring Cooling Units in a pharmaceutical GxP regulated environment - Icin...
PDF
SNMP Monitoring at scale - Icinga Camp Milan 2023
PPTX
Monitoring Kubernetes with Icinga - Icinga Camp Milan 2023
PPTX
Current State of Icinga - Icinga Camp Milan 2023
PDF
Efficient IT operations using monitoring systems and standardized tools - Ici...
PPTX
Tornado Complex Event Processing Framework for Icinga - Icinga Camp Zurich 2019
PDF
Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019
PDF
Moving from Icinga 1 to Icinga 2 + Director - Icinga Camp Zurich 2019
PDF
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
PDF
Current State of Icinga - Icinga Camp Zurich 2019
PDF
NetEye 4 based on Icinga 2 - Icinga Camp Milan 2019
PDF
Integrating Icinga 2 and ntopng - Icinga Camp Milan 2019
PDF
DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...
PPTX
Current State of Icinga - Icinga Camp Milan 2019
PPTX
Best of Icinga Modules - Icinga Camp Milan 2019
PPTX
hallenges of Monitoring Big Infrastructure - Icinga Camp Milan 2019
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Extending Icinga Web with Modules: powerful, smart and easily created - Icing...
Infrastructure Monitoring for Cloud Native Enterprises - Icinga Camp Milan 2023
Incident management: Best industry practices your team should know - Icinga C...
Monitoring Cooling Units in a pharmaceutical GxP regulated environment - Icin...
SNMP Monitoring at scale - Icinga Camp Milan 2023
Monitoring Kubernetes with Icinga - Icinga Camp Milan 2023
Current State of Icinga - Icinga Camp Milan 2023
Efficient IT operations using monitoring systems and standardized tools - Ici...
Tornado Complex Event Processing Framework for Icinga - Icinga Camp Zurich 2019
Signalilo: Visualizing Prometheus alerts in Icinga2 - Icinga Camp Zurich 2019
Moving from Icinga 1 to Icinga 2 + Director - Icinga Camp Zurich 2019
Icinga Director and vSphereDB - how they play together - Icinga Camp Zurich 2019
Current State of Icinga - Icinga Camp Zurich 2019
NetEye 4 based on Icinga 2 - Icinga Camp Milan 2019
Integrating Icinga 2 and ntopng - Icinga Camp Milan 2019
DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...
Current State of Icinga - Icinga Camp Milan 2019
Best of Icinga Modules - Icinga Camp Milan 2019
hallenges of Monitoring Big Infrastructure - Icinga Camp Milan 2019

Recently uploaded (20)

PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
Chapter 5: Probability Theory and Statistics
PPTX
The various Industrial Revolutions .pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Modernising the Digital Integration Hub
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
1 - Historical Antecedents, Social Consideration.pdf
PPTX
TLE Review Electricity (Electricity).pptx
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
observCloud-Native Containerability and monitoring.pptx
Enhancing emotion recognition model for a student engagement use case through...
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Web App vs Mobile App What Should You Build First.pdf
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Chapter 5: Probability Theory and Statistics
The various Industrial Revolutions .pptx
NewMind AI Weekly Chronicles - August'25-Week II
Modernising the Digital Integration Hub
Getting started with AI Agents and Multi-Agent Systems
DP Operators-handbook-extract for the Mautical Institute
1 - Historical Antecedents, Social Consideration.pdf
TLE Review Electricity (Electricity).pptx
A contest of sentiment analysis: k-nearest neighbor versus neural network
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Developing a website for English-speaking practice to English as a foreign la...
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Group 1 Presentation -Planning and Decision Making .pptx
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf

MoniTutor

  • 1. Mar 8, 2016 1 / 26 Icinga Camp BerlinIcinga Camp Berlin March 1March 1stst 20162016 Icinga meets education: MoniTutorIcinga meets education: MoniTutor Mark SwillusMark Swillus
  • 2. Camp Berlin 2016Camp Berlin 2016 22Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Motivation Creative use of Icinga Technical details Future of MoniTutor Lessons Learned + Q&A MoniTutor Monitoring madness
  • 3. Camp Berlin 2016Camp Berlin 2016 33Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor FH-Aachen Electrical Engineering and Information Technology Prof. Andreas Claßen IT-Infrastructure, Fault tolerant systems
  • 4. Camp Berlin 2016Camp Berlin 2016 44Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Applying concepts in virtual environment Hands-On lessons Complex problems, scalability, no overview, no state information Lab environment ITSclient ITSserver X.500 LDAP X.500 LDAP Online resources Script Lecture Scenario Hypervisor Student
  • 5. Camp Berlin 2016Camp Berlin 2016 55Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Hands-On lessons Scenario life cycle Basic Setup Server configuration Client config. ✔ Iface.-config ✔ Internet access ✔ Client reaches Server ✔ slapd installed ✔ slapd running ✔ Port 389 listening ✔ ldapsearch xyz successful Milestone1 Milestone2 Milestone3 ✔ libdnss-ldap installed ✔ pam configured ✔ nsswitch configured ✔ Remote-login successful Service-check
  • 6. Camp Berlin 2016Camp Berlin 2016 66Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Hands-On lessons Lab environment ITSclient ITSserver ITSclient ITSserver Lab environment Lab environment ITSclient ITSserver State information Central overview Automated checks Remote access Data repository Interactive help NAT student1 student2 student3
  • 7. Camp Berlin 2016Camp Berlin 2016 77Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor MoniTutor Student Monitoring in workshop environments Multiplatform Supports arbitrary, self-defined scenarios Penetrates firewalls and NAT Completely free and open source
  • 8. Camp Berlin 2016Camp Berlin 2016 88Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Use of Icinga Command pipe (icinga.cmd) Templates (inheritance) Database (DBIDO) Custom vars
  • 9. Camp Berlin 2016Camp Berlin 2016 99Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Icinga & Web2py Define structure (Hosts, Milestones, Checks) Program parameters
  • 10. Camp Berlin 2016Camp Berlin 2016 1010Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor hosts,services Icinga & Web2py Define structure (Hosts, Milestones, Checks) Deploy
  • 11. Camp Berlin 2016Camp Berlin 2016 1111Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Icinga & Web2py Define structure (Hosts, Milestones, Checks) Deploy Monitoring Lab environment Execute Check2 Send result to Icinga3 Deploy Check Program1 Prg1 MoniTutor DB student1 Prg1
  • 12. Camp Berlin 2016Camp Berlin 2016 1212Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Icinga & Web2py Define structure (Hosts, Milestones, Checks) Deployment Monitoring Display progress WebGui / student login1 Extract status2 Reconstruct Structure3 Display4 servicestatus hoststatus
  • 13. Camp Berlin 2016Camp Berlin 2016 1414Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Deployment Scenario / workshop Milestone1 Milestone 2 Check1: Host: “itsserver” Check2: Host: “itsclient” Check3: Host: “itsserver” ... ... Templates (inheritance)
  • 14. Camp Berlin 2016Camp Berlin 2016 1818Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Deployment Templates (inheritance) Icinga Documentation: Apply For and Custom Attribute Override Defining dictionaries. object Host "cisco-catalyst-6509-34" { import "generic-host" display_name = "Catalyst 6509 #34 VIE21" address = "127.0.1.4" /* "GigabitEthernet0/2" is the interface name, * and key name in service apply for later on */ vars.interfaces["GigabitEthernet0/2"] = { /* define all custom attributes with the * same name required for command parameters/arguments * in service apply (look into your CheckCommand definition) */ iftraffic_units = "g" iftraffic_community = IftrafficSnmpCommunity iftraffic_bandwidth = 1 vlan = "internal" qos = "disabled" } vars.interfaces["GigabitEthernet0/4"] = { iftraffic_units = "g" //iftraffic_community = IftrafficSnmpCommunity iftraffic_bandwidth = 1 vlan = "renote" qos = "enabled" } vars.interfaces["MgmtInterface1"] = { iftraffic_community = IftrafficSnmpCommunity vlan = "mgmt" interface_address = "127.99.0.100" #special management ip } } apply Service "if-" for (interface_name => interface_config in host.vars.interfaces) { import "generic-service" check_command = "iftraffic" display_name = "IF-" + interface_name /* use the key as command argument (no duplication of values in host.vars.interfaces) */ vars.iftraffic_interface = interface_name vars.iftraffic_units = interface_config.iftraffic_units vars.iftraffic_community = interface_config.iftraffic_community vars += interface_config if (interface_config.iftraffic_bandwidth == "") { vars.iftraffic_bandwidth = 1 } if (interface_config.vlan == "") { vars.vlan = "not set" } if (len(interface_config.iftraffic_community) == 0 || len(vars.iftraffic_community) == 0) { vars.iftraffic_community = IftrafficSnmpCommunity } notes = "Interface check for " + interface_name + " (units: '" + interface_config.iftraffic_units + "') in VLAN '" + vars.vlan + "' with ' QoS '" + vars.qos + "'" notes_url = "http://foreman.company.com/hosts/" + host.name action_url = "http://snmp.checker.company.com/" + host.name + "/if-" + interface_name }
  • 15. Camp Berlin 2016Camp Berlin 2016 1919Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Deployment Templates (inheritance) Icinga Documnetation: Apply For and Custom Attribute Override Defining dictionaries. ///Created by monitutor template Service "Install_Configure_LDAP_Server" { vars.scenario_milestones["ldap01"] = { display_name = "LDAP Hands-On Lab" hidden = "false" milestones["Install_Configure_LDAP_Server"] = { name = "Install_Configure_LDAP_Server" display_name = "Install & Configure LDAP Server" description = "Basic LDAP Server install & configure steps that students have to do.<br>" order = "0" hidden = false } } }
  • 16. Camp Berlin 2016Camp Berlin 2016 2222Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Deployment Templates (inheritance)paul2 paul2_itsserver monitutor-system + basic host configuration itsserver + itsserver specific configuration Monitutor-check + basic service configuration paul2_Check_ldap_utils_ Package_Installed host service Check_ldap_utils_Package_Installed + check_ldap… specific configuration Install_Configure_LDAP_Server + Milestone Install… specific configuration Dictionary
  • 17. Camp Berlin 2016Camp Berlin 2016 2323Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Deployment
  • 18. Camp Berlin 2016Camp Berlin 2016 2525Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Monitoring Command pipe (icinga.cmd) MoniTutor DB Daemon Init paul2 connect Username, hostname QueueHandler ClientThread Read Write {“user-host”:Priority_Queue()} Send check Interpreter, program, params, servicename /tmp/monitutor Checkprogram?Request code program name Server Client
  • 19. Camp Berlin 2016Camp Berlin 2016 2626Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Monitoring Command pipe (icinga.cmd) MoniTutor DB Daemon Init paul2 QueueHandler ClientThread Read Write {“user-host”:Priority_Queue()} Send code Interpreter, program, params, servicename, code /tmp/monitutor Check Server Client Execute Send Result servicename, output, exit code…. ResultHandler standard libraries only DBIDO Request code program name
  • 20. Camp Berlin 2016Camp Berlin 2016 2727Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Display
  • 21. Camp Berlin 2016Camp Berlin 2016 2929Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Display SELECT c.varname, c.varvalue, h.display_name FROM icinga_customvariables c, icinga_hosts h WHERE object_id = host_object_id AND varname = 'owner' AND varvalue = 'paul2'; varname | varvalue | display_name ---------+----------+-------------- owner | paul2 | ITS Server SELECT c.varname, c.varvalue, h.display_name, s.output, ser.display_name FROM icinga_customvariables c, icinga_hosts h, icinga_servicestatus s , icinga_services ser WHERE c.object_id = h.host_object_id AND h.host_object_id = ser.host_object_id AND ser.service_object_id = s.service_object_id AND c.varname = 'owner' AND c.varvalue = 'paul2'; varname | varvalue | display_name | output | display_name ---------+----------+--------------+-----------------------------------------------+------------------------------------------------ owner | paul2 | ITS Server | PASSED | Check NW Interface Existence eth1 on itsclient owner | paul2 | ITS Server | File /etc/ldap/ldap.conf does not exist (yet) | Check configuration entry BASE on LDAP Server owner | paul2 | ITS Server | File /etc/ldap/ldap.conf does not exist (yet) | Check configuration entry URI on LDAP Server owner | paul2 | ITS Server | PASSED | Check NW Interface Existence eth1 on itsserver owner | paul2 | ITS Server | SW package slapd not installed | Check: slapd SW package installed owner | paul2 | ITS Server | PASSED | Check: ldap-utils SW package installed owner | paul2 | ITS Server | CRITICAL - Host Unreachable (10.0.0.1) | ping4 owner | paul2 | ITS Server | PING OK - Packet loss = 0%, RTA = 0.05 ms | ping6
  • 22. Camp Berlin 2016Camp Berlin 2016 3030Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Display SELECT varname, varvalue FROM icinga_customvariables WHERE varname = 'scenario_milestones' LIMIT 3; varname | varvalue ---------------------+------------------------------------------------------------------------------------------------------------------------ scenario_milestones | {"ldap01":{"display_name":"LDAP Hands-On Lab","hidden":"false","milestones":{"Install_Configure_LDAP_Server":{"descr... scenario_milestones | {"ldap01":{"display_name":"LDAP Hands-On Lab","hidden":"false","milestones":{"Install_Configure_LDAP_Server":{"descr... scenario_milestones | {"ldap01":{"display_name":"LDAP Hands-On Lab","hidden":"false","milestones":{"Install_Configure_LDAP_Server":{"descr... (3 rows) milestone_queue={} for milestone in milestones: if milestone.get("name") not in milestone_queue: milestone_queue[milestone.get("name")] = {"order": milestone.get("order"), "display_name": milestone.get("display_name"), "description": milestone.get("description"), "hidden": milestone.get("hidden"), "services": []} milestone_queue[milestone.get("name")]["services"].append(service[0].service_id) return dict(milestones=sorted(milestone_queue.items(), key=lambda x: x[1]["order"]))
  • 23. Camp Berlin 2016Camp Berlin 2016 3131Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Future of MoniTutor Further development One semester testing (fault tolerant systems) Release in summer (Free & OpenSource) Other environments Online-Hands-On lessons (?)
  • 24. Camp Berlin 2016Camp Berlin 2016 3232Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Lessons learned
  • 25. Camp Berlin 2016Camp Berlin 2016 3333Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Lessons learned
  • 26. Camp Berlin 2016Camp Berlin 2016 3434Mark Swillus – Icinga meets education: MoniTutorMark Swillus – Icinga meets education: MoniTutor Mark Swillus Student FH Aachen mark.swillus@alumni.fh-aachen.de 0xB2FF4A4C: 40A5 A4F1 D548 6054 4D7F CE08 F22C 2E99 B2FF 4A4C Prof. Dr. Andreas Claßen FH Aachen a.classen@fh-aachen.de Tel.: +49.241.6009 52128