Shinken (software)
Encyclopedia
Shinken is an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 computer system and network monitoring
Network monitoring
The term network monitoring describes the use of a system that constantly monitors a computer network for slow or failing components and that notifies the network administrator in case of outages...

 software application compatible with Nagios
Nagios
Nagios is a popular open source computer system and network monitoring software application. It watches hosts and services, alerting users when things go wrong and again when they get better....

. It watches hosts
Node (networking)
In communication networks, a node is a connection point, either a redistribution point or a communication endpoint . The definition of a node depends on the network and protocol layer referred to...

 and services, alerting users when things go wrong and again when they get better. The major improvement of Shinken over Nagios is the availability to have a load balanced and high available architecture very easily. The administrator only has to manage one configuration, the system automatically "cuts" it into parts and dispatches it to worker nodes. It takes its name from this functionality, a Shinken
Shinken
is a Japanese term used to describe a Japanese sword that is sharp and used for real cutting or combat, as opposed to those that are blunted for other types of practice. Today, they are primarily used for high level iaido and/or tameshigiri practice. Unlike an iaito or mogito , a shinken has a...

 is a sharp Japanese sword.

Shinken was written by Jean Gabès as a proof of concept for a new Nagios architecture. Thinking this new implementation was faster and more flexible than the old in C, he's trying to propose it as the new development branch of Nagios 4 . The inclusion is not wished from Nagios authors, so now Shinken can be considered as a network monitoring
Network monitoring
The term network monitoring describes the use of a system that constantly monitors a computer network for slow or failing components and that notifies the network administrator in case of outages...

 software application compatible with Nagios
Nagios
Nagios is a popular open source computer system and network monitoring software application. It watches hosts and services, alerting users when things go wrong and again when they get better....

 .

Shinken was originally designed to run under all systems where Python runs. The development environment is under Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, but also runs well on other Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

 variants and Windows. The reactionner process (responsible for sending notifications) can be run under the Android OS. It is free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

, licensed under the terms of the Affero General Public License
Affero General Public License
The Affero General Public License, often abbreviated as Affero GPL and AGPL , refers to two distinct, though historically related, free software licenses:...

 as published by the Free Software Foundation
Free Software Foundation
The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to create, distribute and modify computer software...

.

Overview

  • Monitoring of network services (SMTP
    Simple Mail Transfer Protocol
    Simple Mail Transfer Protocol is an Internet standard for electronic mail transmission across Internet Protocol networks. SMTP was first defined by RFC 821 , and last updated by RFC 5321 which includes the extended SMTP additions, and is the protocol in widespread use today...

    , POP3
    Post Office Protocol
    In computing, the Post Office Protocol is an application-layer Internet standard protocol used by local e-mail clients to retrieve e-mail from a remote server over a TCP/IP connection. POP and IMAP are the two most prevalent Internet standard protocols for e-mail retrieval. Virtually all modern...

    , HTTP
    Hypertext Transfer Protocol
    The Hypertext Transfer Protocol is a networking protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web....

    , NNTP
    Network News Transfer Protocol
    The Network News Transfer Protocol is an Internet application protocol used for transporting Usenet news articles between news servers and for reading and posting articles by end user client applications...

    , ICMP
    Internet Control Message Protocol
    The Internet Control Message Protocol is one of the core protocols of the Internet Protocol Suite. It is chiefly used by the operating systems of networked computers to send error messages indicating, for example, that a requested service is not available or that a host or router could not be...

    , SNMP
    Simple Network Management Protocol
    Simple Network Management Protocol is an "Internet-standard protocol for managing devices on IP networks. Devices that typically support SNMP include routers, switches, servers, workstations, printers, modem racks, and more." It is used mostly in network management systems to monitor...

    , FTP
    File Transfer Protocol
    File Transfer Protocol is a standard network protocol used to transfer files from one host to another host over a TCP-based network, such as the Internet. FTP is built on a client-server architecture and utilizes separate control and data connections between the client and server...

    , SSH
    Secure Shell
    Secure Shell is a network protocol for secure data communication, remote shell services or command execution and other secure network services between two networked computers that it connects via a secure channel over an insecure network: a server and a client...

    )
  • Monitoring of host resources (processor
    Central processing unit
    The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...

     load, disk
    Hard disk
    A hard disk drive is a non-volatile, random access digital magnetic data storage device. It features rotating rigid platters on a motor-driven spindle within a protective enclosure. Data is magnetically read from and written to the platter by read/write heads that float on a film of air above the...

     usage, system logs) on a majority of network operating system
    Network operating system
    A networking operating system , also referred to as the Dialoguer, is the software that runs on a server and enables the server to manage data, users, groups, security, applications, and other networking functions...

    s, including Microsoft Windows
    Microsoft Windows
    Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

     with the NSClient++ plugin.
  • Monitoring of anything else like probes (temperature, alarms...) which have the ability to send collected data via a network to specifically written plugins
  • Monitoring via remotely-run scripts via Nagios Remote Plugin Executor (An embedded pure-Python implementation is available for Shinken)
  • Remote monitoring supported through SSH
    Secure Shell
    Secure Shell is a network protocol for secure data communication, remote shell services or command execution and other secure network services between two networked computers that it connects via a secure channel over an insecure network: a server and a client...

     or SSL encrypted
    Encryption
    In cryptography, encryption is the process of transforming information using an algorithm to make it unreadable to anyone except those possessing special knowledge, usually referred to as a key. The result of the process is encrypted information...

     tunnels.
  • Simple plugin design that allows users to easily develop their own service checks depending on needs, by using the tools of choice (shell scripts, C++
    C++
    C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

    , Perl
    Perl
    Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

    , Ruby
    Ruby (programming language)
    Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...

    , Python
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

    , PHP
    PHP
    PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

    , C#, etc.)
  • Plugins available for graphing of data (Nagiosgraph, Nagiosgrapher, PNP4Nagios, and others available)
  • Parallelized service and host checks available
  • Ability to define network host hierarchy using "parent" hosts, allowing detection of and distinction between hosts that are down and those that are unreachable
  • Contact notifications when service or host problems occur and get resolved (via e-mail
    E-mail
    Electronic mail, commonly known as email or e-mail, is a method of exchanging digital messages from an author to one or more recipients. Modern email operates across the Internet or other computer networks. Some early email systems required that the author and the recipient both be online at the...

    , pager
    Pager
    A pager is a simple personal telecommunications device for short messages. A one-way numeric pager can only receive a message consisting of a few digits, typically a phone number that the user is then requested to call...

    , SMS
    Short message service
    Short Message Service is a text messaging service component of phone, web, or mobile communication systems, using standardized communications protocols that allow the exchange of short text messages between fixed line or mobile phone devices...

    , or any user-defined method through plugin system)
  • Ability to define event handlers to be run during service or host events for proactive problem resolution
  • Support for implementing easily redundant
    Redundancy (engineering)
    In engineering, redundancy is the duplication of critical components or functions of a system with the intention of increasing reliability of the system, usually in the case of a backup or fail-safe....

    and load balanced monitoring hosts
  • Support for UTF-8 objects names
  • Support for multi sites (like monitoring multiple customers with one administration point)
  • Support for integrated business rules
  • Support for filtering alerts by showing only root problems
  • Support for native messaging api of Android
  • Support for recurring downtimes through the maintenance_period attribute
  • Ability to route checks to dedicated pollers (processes specialised in executing plugins)

Architecture

A Shinken installation consists of several processes, each optimized for a sort of task.
  • Arbiter
    • Load the configuration files and dispatch the host and service objects to the scheduler(s)
    • Constantly check all other processes and initiate failovers if an error is detected

  • Scheduler
    • Plan the next run of host and service checks
    • Dispatch checks to the poller(s)
    • Raise Notifications and dispatch them to the reactionner(s)
    • Update the retention file (or other retention backends)
    • Send broks (internal events of any kind) to the broker(s)

  • Poller
    • Get checks from the scheduler, execute plugins and send the results to the scheduler

  • Reactionner
    • Get notifications and eventhandlers from the scheduler, execute plugins/scripts and send the results to the scheduler

  • Broker
    • Has multiple modules (usually running in their own process)
    • Gets broks from the scheduler and forwards them to the broker modules
    • Modules decide if they handle a brok depending on a brok's type (log, initial service/host status, check result, begin/end downtime, ...)
    • Modules process the broks in many different ways. Some of the modules are:
      • ndodb - updates an ndo database (MySQL or Oracle)
      • merlindb - updates a Merlin database which can then be used by the Ninja GUI
      • livestatus - updates in-memory objects which can be queried by GUIs like Thruk or MultiSite
      • webui - updates in-memory objects and provides a webserver for the native Shinken GUI
      • simple_log - writes log messages to a file
      • status_dat - writes to a status.dat file which can be read by the classic cgi-based GUI

  • Receiver (optional)
    • Listens for NSCA events and forwards them to the arbiter
    • Reads the command pipe and forwards external commands to the arbiter
    • Allows to setup a "farm" of NSCA-daemons to handle a high rate of incoming events


There can be multiple instances for each type of process, either on a single host or spread over many hosts. Adding more processes automatically distributes the load.

External links

  • Shinken-monitoring.org, official website
  • Nagios Plugins the home of the official plugins
  • NagiosExchange overview of plugins, addons for Nagios that can be used for Shinken too
  • Linux Magazine article about Shinken in issue 115 (june 2010) of Linux Magazine
  • Linux Magazin article about Shinken in the german Linux Magazin 04/2010
  • freeX comparison of Nagios, Icinga, Zabbix and Shinken in the german magazine freeX
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK