Icinga 2 @ SIG-NOC Meeting

Preview:

Citation preview

WWW.ICINGA.ORG

SIG-NOC Meeting - Stuttgart

04/08/2015 Icinga - Open Source Monitoring

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Me

• Michael Friedrich

• @dnsmichi, 31, Austrian

• Application Developer @NETWAYS

• Icinga responsibilities

• Core 1.x & 2.x Developer

• Release Manager

• On the team since 2009

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Agenda

• Icinga Project

• Icinga 1.x

• Icinga 2

• Icinga Web 2

• Demo

• Conclusion & Vision

THE ICINGA PROJECT

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

The Icinga Project – Introduction

#icinga

Open Source Enterprise Monitoring

Icinga is a scalable and extensible monitoring system

which checks the availability of your resources, notifies

users of outages and provides extensive BI data.

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

The Icinga Project – About us

• Originally forked from Nagios in April 2009

• Independent, redesigned version Icinga 2 since 2014

• Different teams with autonomic responsibilities

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

The Icinga Project - Icinga Exchange

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

The Icinga Project - Icinga Exchange - GitHub

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

The Icinga Project – Tools & Platform

Icinga Core 1.x

C-based source

MySQL, PostgreSQL, Oracle

Icinga Quality, Testing and Community Support

Website and Open Source Ticketing System

Icinga Reports

based on Jasper

Reports

Icinga Doc

based on

Markdown

3rd Party Tools Icinga Web 1.x based on PHP using ExtJS, Agavi MVC

IDOUTILS

Icinga Web 2 Based on PHP / responsive design

Icinga 2

C++-based source with

multiple components

IDO Livestatus Cluster …

ICINGA 1

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 1 - Overview

• Original fork from Nagios 3.2.0

• Improved Core, intergrated IDOUtils DB backend

• Enhanced Classic UI & new Icinga Web 1.x

• Stable version: 1.13.1 (5.4.2015)

• 38 releases until today

• We’ll keep it in maintenance!

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 1 – Changes 2014/2015

• Core

– Usability, security & performance fixes

– Recurring downtimes script

• Classic UI

– Enhanced filters for modified by attributes

– Support for compressed logfiles

• Icinga Web 1

– Rewritten session handling

– Custom variables in grids

ICINGA 2 - INTRODUCTION

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Host

Databases Network

Icinga 2 – Use cases

#icinga

Monitors

Apps

Hardware OS Storage

Host Switches Services

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 – Use cases

#icinga

Alerts Mail

SMS

Voice

Ticket

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 – Use cases

#icinga

Reports

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 - Overview

• Stable Version: 2.3.3 (26.3.2015)

• Next major version: 2.4.0 (Q4 2015)

• Supports all major distributions

• Puppet, Chef and Ansible support

• Packages and Vagrant Box available now!

https://dev.icinga.org/projects/i2/roadmap

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 - Overview

• Powerful CLI

• MySQL & PostgreSQL support

• New configuration format

• Includes a extensive template library

• Compatible with plugins, addons, UIs

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Vagrant

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Checker

Notify

Gelf

Perfdata Graphite

IDO

Compat

Livestatus

Icinga 2 - Architecture

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Livestatus

Icinga 2 - Enable Livestatus

#icinga

ICINGA 2 - CLUSTER

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

CA Zones API

Icinga 2 - Cluster Overview

Cluster

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#osmc

Icinga 2 - Cluster Architecture

• API communication using SSL

• Bidirectional connections supported

• Zone support for logic splits in the configuration

• Hash-based load distribution

• “binlog” like retention for monitoring events and messages

• Distributed components throughout the cluster

• Automatic redistribution of checks

• Integrated health check

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 - Cluster Distribution

Checker

Perfdata GELF

IDO

Open

TSDB

Graphite

Livestatus Checker

Statusdat

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 - Cluster Zones

IDO

Checker

Graphite

Livestatus Checker

Statusdat

Host Host

Host

#icinga

Checker

Perfdata IDO

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 – Resource optimization

0

100

200

300

400

500

600

700

800

0

500

1000

1500

2000

2500

3000

30.000 Services

CPU-Cycles Memory

Megabyte

Cycle

s in m

illio

ns

#icinga

ICINGA 2 - CONFIGURATION

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 - Configuration

• New configuration format

• Won’t miss the old config syntax!

• It is really time for change

• You will love it!

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Syntax Highlighting

# cd /usr/share/doc/icinga2-common*/syntax

# PREFIX=~/.vim

# mkdir –p $PREFIX/{syntax,ftdetect}

# cp vim/syntax/icinga2.vim $PREFIX/syntax/

# cp vim ftdetect/icinga2.vim $PREFIX/ftdetect/

# vim /etc/icinga2/icinga2.conf

• Use syntax highlighting!

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Console

# yum install rlwrap

# rlwrap icinga2 console

• Use ‘icinga2 console’ to test values, functions, etc!

• https://www.icinga.org/resources/live-console/

• Install rlwrap

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Value Types

• Get to know all the value types!

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Constants

• PluginDir, MysqlPassword, SnmpCommunity, …

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Templates

• Templates for generic attributes

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Custom Attributes

• Numbers, Strings, Booleans, Arrays, Dictionaries

• Filters, Match Conditions, additional information

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Commands

• Optional/conditional arguments, functions, default values

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Hosts and Services

• Checkable objects and attributes

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Apply Services

• Match on (custom) attributes, names (assign)

• Exclude objects (ignore)

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Apply For

• For loops over arrays/dictionaries

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Notifications

• Dynamic notification rules

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Dependencies

• Host-on-Service, Service-on-Host, Classic

HOST router

SERVICE router-uplink

Icinga 2

HOST website-server

Reachable?

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Conditionals

• If-then-else

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Loops

• While, for and break/continue

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Type methods & Object Accessors

• Array#sort, Dictionary#contains, String#find, … • http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/language-reference#language-reference

• http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/library-reference#library-reference

• Object accessors

– get_host(), get_service(), etc

– Access config and runtime attributes

– e.g. get_host(NodeName).state

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration: Functions

• Use pre-defined or your own

– regex(), match(), …

• Custom attributes, command, argument values

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 – Configuration – Another cool thing

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Configuration – Time dependent thresholds

• Time dependent thresholds

ICINGA 2 - MIGRATION

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 - Migration

• Start with a fresh server

• Inventory of plugins & configuration

• Define your configuration strategy with Icinga 2

• Create the best Command and Apply definitions only once

• Only add hosts (and users) in the future

• More migration hints on the docs!

http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/migration#migration

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga 2 – Migration: Assign service to hosts in Icinga 1.x

define service{

host_name linux1,linux2,linux3,...,linux9

service_description ssh-check

other service directives ...

}

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Migration: Apply service to hosts in Icinga 2

apply Service "ssh" {

import "generic-service”

check_command = "ssh”

assign where host.address && host.vars.os == "Linux”

}

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#osmc

Icinga 2 – Migration – Assign members to Hostgroup in Icinga 1.x

define hostgroup{

hostgroup_name linux-servers

alias Linux Servers

members linux1,linux2,linux3

}

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#osmc

Icinga 2 – Migration – Assign members to Hostgroup in Icinga 1.x

object Host “mysql-server1" {

address = "10.0.0.1“

check_command = "hostalive“

}

object HostGroup "mysql-server" {

display_name = "MySQL Server“

assign where match("*mysql*", host.name)

}

ICINGA WEB 2

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2 - Motivation: Classic UI

• Not extendable

• Lacks real user management

– Authorization based on contacts - not enough for enterprise

needs

• Not usable on mobile devices

• Same machine as core

• Heavy I/O

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2 – Motivation: Icinga Web 1.x

• Complicated XML configuration

• Cached configuration

• Framework overhead

• Not useable on mobile devices

• Slow in big environments

• Complicated API

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2: Key features

• Lightweight like Classic UI & flexible as Icinga Web 1.x

• Easy to extend and embed into other projects

• Support for multiple authentication providers

– Internal DB

– LDAP

– HTTP Auth

• Support for IDO database & Livestatus

• Supports multiple backends simultaneously, as failover backend

• Responsive actions (tablet, mobile, etc)

• FAST!

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2 - Overview

• Beta Version: 2.0.0-beta3 (13.3.2015)

• Release Candidate: 2.0.0-rc1 (late May 2015)

• Final version: 2.0.0 (scheduled for Q2 2015)

• Supports all major distributions

• Apache & Nginx support

• Packages and Vagrant Box available now!

https://dev.icinga.org/projects/icingaweb2/roadmap

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Backends Authentication Setup Wizard

Framework / Icinga PHP Library Web 2

Icinga Web 2 - Foundation

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Web 2

Monitoring Docs

Icinga Web 2 - Modules

Business

Process Graphite PNP

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga Web 2 - Dashboard

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga Web 2 – Detail View

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga Web 2 – Event Grid

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga Web 2 – Service Grid

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2: CLI

• Uses Icinga Web 2 framework & backends

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2: Responsiveness

• Your dashboard

• Workstation

• Tablet

• Mobile

• …

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga Web 2 – Modules: PNP

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga Web 2 – Modules: Business Processes

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Icinga Web 2 – Modules: Ticketsystems

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2 – Modules: More, more, more

• Currently in development

– PNP (Graphing)

– Business Process

– Generic TTS (Ticket System Intergration)

• Coming

– Graphite (Graphing)

– Logstash as History Detail

– …

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga Web 2 – Modules: Prototypes

• Ask Mr. Gelf

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 - Demo

DEMO

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Icinga 2 – Demo

Get VirtualBox >= 4.2.16 && Vagrant >= 1.6.5

$ git clone --recursive https://github.com/Icinga/icinga-vagrant.git

$ cd icinga-vagrant

$ cd icinga2x-cluster

$ vagrant up

$ vagrant ssh icinga2a

$ vagrant ssh icinga2b

$> sudo –i

http://192.168.33.10 & http://192.168.33.20

THE COMMUNITY

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

The Community - Users

You?

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

The Community - Icinga Camps 2015

Kuala Lumpur 2015

June 9th

Portland 2015

October 10th

Antwerp 2015

April 13th

CONCLUSION

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Conclusion

• Download Icinga 2

– Use packages

– Play with Vagrant and VirtualBox

• Rethink you configuration strategy

– Follow extensive migration docs, it is time for a change!

• Install Icinga Web 2 and play with it

• Give us feedback

– dev.icinga.org

– IRC

– Twitter

#icinga

VISION

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

Vision

• No enterprise edition

• Enterprise integration

#icinga

EXCHANGE. DEV. WIKI. BLOG. DOC. | WWW.ICINGA.ORG

#icinga

Questions & Answers

Web www.icinga.org

Git git.icinga.org

Development dev.icinga.org

Wiki wiki.icinga.org

Support support.icinga.org

Twitter twitter.com/icinga

Facebook facebook.com/icinga Get support

Get involved

Get heard