Checkmk
to checkmk.com

If you use the Jira software for project management, software development or for tracking bugs, with the commercial editions you can send notifications from Checkmk to Jira and create Issues there. This works for the products Jira Work Management (formerly Jira Core), Jira Software and Jira Service Management (formerly Jira Service Desk).

The following options are supported:

  • Create issues for host and service problems.

  • Create issues with a defined Priority.

  • Create issues with a defined Label.

  • Set links to host/services in Checkmk from the generated Jira issues.

  • Set a Resolution in the issue when OK conditions occur.

To set up the connection between Checkmk and Jira, first create some new fields in Jira and define some Jira-IDs.

Next configure the notification method for Jira in Checkmk, entering the Jira IDs that have been created and read. You will gain more flexibility if you also use custom user attributes. Instead of entering the Jira IDs directly in the notification method, you can define some Jira IDs as custom user attributes. This makes it easy for individual users to create issues in a variety of JIRA projects.

Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

Se utilizzi il software Jira per la gestione di progetti, lo sviluppo di software o il tracciamento di bug, con le edizioni commerciali puoi inviare le notifiche da Checkmk a Jira e creare delle questioni. Questo funziona per i prodotti Jira Work Management (ex Jira Core), Jira Software e Jira Service Management (ex Jira Service Desk).

Sono supportate le seguenti opzioni:

  • Creare problemi per problemi di host e di servizio.

  • Creare problemi con una priorità definita.

  • Creare problemi con un'etichetta definita.

  • Impostare collegamenti a host/servizi in Checkmk dai problemi generati in Jira.

  • Impostare una risoluzione nel problema quando si verificano condizioni di OK.

Per impostare la connessione tra Checkmk e Jira, crea innanzitutto alcuni nuovi campi in Jira e definisci alcuni Jira-ID.

Quindi configura il metodo di notifica per Jira in Checkmk, inserendo gli ID Jira che sono stati creati e letti. Otterrai una maggiore flessibilità se utilizzi anche gli attributi utente personalizzati. Invece di inserire gli ID Jira direttamente nel metodo di notifica, puoi definire alcuni ID Jira come attributi utente personalizzati. In questo modo sarà più facile per i singoli utenti creare problemi in diversi progetti JIRA.

1. Configurazione di Jira

Quando interagisce con Jira, Checkmk ha bisogno di sapere quali notifiche hanno già creato un problema e quali no. Per rendere possibile questo, devi creare due cosiddetti campi personalizzati in Jira: uno per le notifiche sui problemi di host e uno per i problemi di servizio.

Per poter identificare correttamente i problemi relativi agli host e ai servizi, gli identificatori di questi problemi devono essere unici. Questo è il caso se la tua istanza Jira riceve notifiche da un solo sito Checkmk, poiché il nucleo di monitoraggio di un sito Checkmk garantisce l'unicità. Ora, nel monitoraggio distribuito, più siti Checkmk possono inviare notifiche se sono state configurate le notifiche decentralizzate. Se la tua istanza di Jira riceve notifiche da più siti Checkmk, molto probabilmente l'unicità viene meno, al più tardi quando l'ID di un problema host è già stato utilizzato da un altro sito Checkmk. In una configurazione di questo tipo è necessario un altro campo personalizzato per il sito Checkmk con il quale è di nuovo possibile un'assegnazione unica.

Per la configurazione in Checkmk sono necessari gli ID Jira dei campi personalizzati che hai creato e anche quelli di altri campi:

  • ID progetto

  • ID del tipo di problema

  • ID priorità (opzionale)

  • ID del campo personalizzato Host

  • ID del campo personalizzato del servizio

  • ID campo personalizzato del sito (opzionale)

  • ID transizione (workflow) (opzionale)

La maggior parte di questi ID può essere letta utilizzando lo script sottostante tramite una delle API REST di Jira. Gli amministratori di Jira possono anche recuperare gli ID tramite la GUI di Jira, anche quelli che non possono essere recuperati tramite le API e quindi lo script.

1.1. Impostazione dei campi personalizzati in Jira

Puoi scoprire come creare campi personalizzati in Jira nella documentazione di Jira, compresa l'assegnazione del campo alle cosiddette schermate dei problemi in Jira.

Quando crei i campi necessari per Checkmk, tieni presente i seguenti punti relativi al tipo di campo. Sei libero di nominare i campi come vuoi, ma i nomi dei campi indicati nella tabella seguente corrispondono allo script con cui puoi leggere gli ID di Jira nella sezione successiva Determinare gli ID di Jira con uno script esterno.

Campo personalizzato Tipo di campo Nome

Campo personalizzato host

Number field

CMK_HOST_FIELD (esempio)

Campo personalizzato Servizio

Number field

CMK_SVC_FIELD (esempio)

Campo personalizzato Sito (opzionale)

Text field (single line)

CMK_SITE_FIELD (esempio)

Assicurati anche che l'utente di Jira utilizzato da Checkmk per creare i problemi, cioè inserito nella regola di notifica personalizzata di Checkmk, abbia accesso in lettura e scrittura a questi campi personalizzati.

1.2. Determinare gli ID di Jira con uno script esterno

Puoi interrogare gli ID collettivamente con il seguente script, che utilizza l'API REST di Jira.

Sostituisci JIRA_USERNAME, JIRA_PASSWORD, PROJECT_KEY e https://jira.server.your-domain.de con i valori applicabili. Puoi anche determinare l'ID PROJECT_KEY dalla GUI di Jira senza richiedere i diritti di amministratore.

Important

Se utilizzi un prodotto Jira Cloud, lo script non viene autenticato con una password, ma con un token API. Le informazioni di base e le istruzioni per la creazione di un token API sono disponibili nella documentazione di Jira.In Jira, puoi copiare il token API generato negli appunti e incollarlo nel seguente script come JIRA_PASSWORD.

esempio_script.py
#!/usr/bin/env python3

import requests
import sys
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

user = "JIRA_USERNAME"
password = "JIRA_PASSWORD"
project_key = "PROJECT_KEY"
jira_instance = "https://jira.server.your-domain.de"
custom_field_1 = "CMK_HOST_FIELD"
custom_field_2 = "CMK_SVC_FIELD"
custom_field_3 = "CMK_SITE_FIELD" # don't edit if field is not used

def handle_response(user, password, jira_instance, what):
    url = "%s/rest/api/2/%s" % (jira_instance, what)
    sess = requests.Session()
    sess.auth = (user, password)
    response = sess.get(url, verify=False)

    return response

sys.stdout.write("=== IDs for project %s ===\n" % project_key)
infotext = ""
for section, id_name in [ ("Project_ID", "project"),
                          ("Issue", "issuetype"),
                          ("Priority", "priority"),
                          ("Field", "field"),
                        ]:

    json_response = handle_response(user,password,jira_instance,id_name).json()
    if id_name == "project":
        infotext = ""
        for project in json_response:
            if project["key"] == project_key:
                infotext += "%s\n\n" % project.get("id", "Project ID not found")
        if not infotext:
            infotext += "Project ID not found, project name existing?\n\n"
    else:
        types = ""
        for line in json_response:
            if id_name == "field":
                if line["name"].lower() == custom_field_1.lower() or \
                    line["name"].lower() == custom_field_2.lower() or \
                    line["name"].lower() == custom_field_3.lower():
                    types += "%s: %s\n" % (line["name"], line["id"].split("_")[1])
            else:
                types += "%s: %s\n" % (line["name"], line["id"])

        infotext += "=== %s types\n%s\n" % (section, types)

sys.stdout.write(infotext)

L'output dello script sarà simile a questo:

=== IDs for project MY_PROJECT ===
10401

=== Issue types
Test case: 10600
Epic: 10000
Task: 10003
Sub-task: 10004
Bug: 10006
Story: 10001
Feedback: 10200
New Feature: 10005
Support: 10500
Improvement: 10002

=== Priority types
Blocker: 1
High: 2
Medium: 3
Low: 4
Lowest: 5
Informational: 10000
Critical impact: 10101
Significant impact: 10102
Limited impact: 10103
Minimal impact: 10104

=== Field types
CMK_HOST_FIELD: 11400
CMK_SVC_FIELD: 11401
CMK_SITE_FIELD: 11403

1.3. Determinare gli ID di Jira utilizzando la GUI

In alternativa all'esecuzione di script, puoi anche leggere gli ID tramite la GUI di Jira, ma per farlo devi accedere a Jira con un account executive. Atlassian, il produttore di Jira, ha descritto questa procedura utilizzando l'esempio dell'ID del progetto nelle sue istruzioni.

Gli ID degli altri campi e tipi di problemi possono essere letti modificando il rispettivo elemento nella GUI dell'amministratore di Jira. L'ID è di solito l'ultimo valore nella barra degli indirizzi del browser.

2. Configurazione di Checkmk

Hai già appreso come impostare le notifiche di Checkmk in generale nell'articolo sulle notifiche.

Per utilizzare le notifiche di Jira, procedi come segue in Checkmk:

  1. Se vuoi utilizzare attributi utente personalizzati, puoi crearli per i seguenti ID Jira: ID progetto (jiraproject), ID tipo di problema (jiraissuetype), ID priorità (jirapriority) e ID transizione (jiraresolution). I nomi che inserisci come Name attributo sono indicati tra parentesi. Crei un attributo utente personalizzato con Setup > Users > Custom user attributes > Add attribute:

    A custom attribute for the Jira Project ID.

    Assicurati che il checkbox Make this variable available in notifications sia impostato per tutti gli attributi utente personalizzati creati per Jira.
    Nelle proprietà di un utente, puoi quindi inserire in questi attributi gli ID Jira di cui questo utente è responsabile.
    Per ogni attributo utente personalizzato, lascia vuoto il campo dell'ID Jira associato nella regola di notifica personalizzata creata nei passi successivi. Questi campi vengono quindi riempiti con gli attributi utente personalizzati.

  2. Crea una nuova regola di notifica con Setup > Events > Notifications > Add rule.

  3. Per Notification Method scegli JIRA (Commercial editions only:

    The notification method settings for Jira.
  4. Nel campo JIRA URL inserisci l'URL della tua istanza Jira, ad es. jira.server.your-domain.com.

  5. In User Name e Password archivia i dati dell'account Jira per questo accesso.

  6. Per Project ID e Issue type ID sono necessari gli ID precedentemente identificati in Jira, ad esempio "10401" per l'ID del progetto e "10006" per il tipo di problema "Bug".

  7. Per Host custom field ID, Service custom field ID e (facoltativamente) Site custom field ID inserisci gli ID dei campi personalizzati creati in Jira.

  8. Per poterti collegare direttamente a Checkmk da qualsiasi problema generato, alla voce Monitoring URL inserisci l'URL della tua istanza Checkmk, ad esempio: https://mycmkserver/mysite

Inoltre, hai a disposizione le seguenti impostazioni opzionali:

  • Con Priority ID puoi definire con quale priorità vengono creati i problemi in Jira. Qui puoi inserire uno dei "tipi di priorità" letti nello script, da "1" a "5".

  • Puoi modificare le descrizioni che vengono create per i problemi di host e di servizio nei problemi tramite le opzioni Summary for host notifications e Summary for service notifications.

  • Puoi usare l'opzione Label per definire se vuoi passare le etichette quando crei i problemi in Jira. Se attivi l'opzione Etichetta senza inserire un valore, verrà impostato monitoring.
    Checkmk scrive il valore dell'etichetta nel campo labels di Jira, ma questo funziona solo se questo campo esiste nell'applicazione Jira, come nel caso di Jira Software, ma non di Jira Software-as-a-service, ad esempio.

  • Se vuoi anche inserire un Resolution nel problema in Jira quando notifichi un cambiamento di stato in OK in Checkmk, puoi definirlo in Activate resolution with following resolution transition ID.
    Per poter determinare l'ID corretto, devi avere i diritti di amministratore in Jira. Torna all'area Issues e clicca su Workflows. Poi clicca su View nella riga del workflow standard del progetto Jira che stai utilizzando. Se ora vedi un diagramma di flusso, cambia la visualizzazione cliccando su Text. Potrai leggere l'ID desiderato nella colonna Transitions (id).

  • Con Set optional timeout for connections to JIRA puoi configurare il timeout per le connessioni a Jira. Se non inserisci nulla, verrà applicato il valore predefinito di 10 secondi.

Quando utilizzi il box Contact selection, tieni presente i seguenti punti:

  1. Quando selezioni i contatti, assicurati che le notifiche vengano inviate solo a un contatto, ad esempio selezionando un singolo utente. Con i metodi di notifica per i sistemi di ticket ecc. la selezione del contatto serve solo a specificare l' invio delle notifiche. Tuttavia, le notifiche non vengono inviate all'utente selezionato, ma al sistema di ticket. Tieni presente che la selezione di un contatto tramite gruppi di contatti, tutti i contatti di un oggetto o simili genera di solito diverse notifiche identiche per un evento, che finiscono poi nel sistema di ticket due, tre o anche più volte.

  2. Se il primo punto è soddisfatto, ma l'utente è utilizzato in più regole di notifica per lo stesso metodo, allora si applica solo l'ultima regola in ogni caso. È quindi consigliabile creare un utente funzionale separato per ciascuna di queste regole di notifica.

  3. Il tema della selezione dei contatti è un po' diverso quando si utilizzano gli attributi utente personalizzati, in quanto si tratta di assegnare ID Jira diversi a utenti diversi. Pertanto, in questo caso di solito vorrai informare diversi contatti, cioè gli utenti a cui hai assegnato gli attributi personalizzati. Se questi utenti utilizzano ID Jira diversi, non verranno generate notifiche identiche.

Puoi scoprire come testare il nuovo metodo di notifica nell'articolo sulle notifiche. Con la nuova funzione Test notifiche, puoi verificare se la tua nuova regola di notifica si applica a determinati host e servizi.

Per inviare effettivamente delle notifiche di prova tramite questo metodo di notifica, devi continuare a utilizzare i risultati di Fake check in Checkmk 2.3.0.

3. Opzioni di diagnostica

Se non arrivano ticket in Jira dopo aver impostato la regola di notifica in Checkmk, controlla il file di log associato ~/var/log/notify.log. Di solito Jira restituisce messaggi di errore piuttosto utili, che possono aiutarti nella diagnosi del problema. Di seguito elenchiamo alcuni esempi.

Messaggio di errore: Impossibile creare un problema, codice di risposta JIRA 400, Il campo 'etichette' non può essere impostato.

È possibile che il tuo prodotto Jira non abbia le etichette. Disabilita semplicemente l'uso delle etichette per le regole di notifica in Checkmk, deselezionando Label.

Messaggio di errore: Impossibile creare un problema, codice di risposta JIRA 400, b'project is required'.

Questo messaggio indica che l'ID inserito nella regola di notifica per il campo in questione (in questo caso: ID progetto) non è corretto.

Messaggio di errore: Impossibile risolvere https://jira.server.your-domain.de/browse/ISSUE-123, codice di risposta JIRA 500, b'Internal server error'.

Se ricevi questo messaggio di errore quando un ticket in Jira dovrebbe essere chiuso automaticamente da Checkmk o dovrebbe essere cambiato in un altro stato, questo potrebbe essere un indizio del fatto che l'ID di transizione inserito non è corretto. L'ID di transizione si trova nella regola di notifica nel campo Activate resolution with following resolution transition ID. Come regola, dovresti confrontare nuovamente questo ID con l'interfaccia web di Jira.

In questa pagina