/terminga

Primary LanguagePythonMIT LicenseMIT

   _                      _
  | |_ ___ _ __ _ __ ___ (_)_ __   __ _  __ _
  | __/ _ \ '__| '_ ` _ \| | '_ \ / _` |/ _` |
  | ||  __/ |  | | | | | | | | | | (_| | (_| |
   \__\___|_|  |_| |_| |_|_|_| |_|\__, |\__,_|
                                  |___/
  https://github.com/seibert-media/terminga


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


A TUI for Icinga2.


Dependencies
------------

    - Python 3.7+
    - python-requests


Installation
------------

Clone this repo and run `terminga`. Don't forget the configuration, of
course.


Configuration
-------------

Create ~/.terminga, which consists of a JSON dict:

    {
        "icinga_url": "https://icinga-terminga-proxy.your-company.com",
        "api_auth": {
            "username": "myapiuser",
            "password": "myapiuserspassword"
        },
        "external_tool": "mytool -s __SELECTION__",
        "group_filters": {
            "hostgroup": "is_customer-no",
            "servicegroup": "is_customer-no"
        }
    }

Use a valid API user, not your regular Icinga user.

"external_tool" contains a path to a user-supplied script and this
setting is optional. It will be invoked when you press "e" in terminga.
"__SELECTION__" will be replaced by the path to a file that contains
your selection: First line is host name, second line service name, third
line check output (with lines separated by \r rather than \n). This
repeats for each selected item, i.e. your script will only be called
once, no matter how many items you selected. It is the responsibility of
your script to remove this file after it has been read.

You will want to use terminga-proxy on your Icinga server, if you're
still running a version of Icinga2 that leaks memory on API requests:

https://github.com/seibert-media/terminga-proxy

"group_filters" is optional, too. It can be used to view only those host
and service objects that belong to certain groups (must be configured
within Icinga). "group_filters" is ONLY supported if you are using
terminga-proxy.