wir betreiben einen Alertmanager, welcher über einen Webservice direkt Tickets im Znuny erzeugt.
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<xsl:template match="RootElement">
<xsl:for-each select="//alerts">
<xsl:copy>
<UserLogin>$username</UserLogin>
<Password>$password</Password>
<Ticket>
<QueueID><xsl:value-of select="labels/Queue" /></QueueID>
<StateID><xsl:value-of select="labels/State" /></StateID>
<Type>Incident</Type>
<Priority><xsl:value-of select="labels/Priority" /></Priority>
<Title><xsl:value-of select="labels/alertname" /></Title>
<CustomerUser><xsl:value-of select="labels/UserLogin" /></CustomerUser>
</Ticket>
<Article>
<Subject><xsl:value-of select="annotations/summary" /></Subject>
<Body><p><xsl:value-of select="annotations/description" /></p><p><a href='<xsl:value-of select="annotations/runbook_url" />'>Runbook Link</a></p></Body>
<MimeType>text/html</MimeType>
<Charset>utf-8</Charset>
</Article>
<DynamicField>
<Name>AlertmanagerFingerprint</Name>
<Value><xsl:value-of select="fingerprint" /></Value>
</DynamicField>
<xsl:if test="labels/instance">
<DynamicField>
<Name>InstanceUrl</Name>
<Value><xsl:value-of select="labels/instance" /></Value>
</DynamicField>
</xsl:if>
<xsl:if test="labels/alertname">
<DynamicField>
<Name>AlertAlertname</Name>
<Value><xsl:value-of select="labels/alertname" /></Value>
</DynamicField>
</xsl:if>
<xsl:if test="labels/cluster">
<DynamicField>
<Name>AlertCluster</Name>
<Value><xsl:value-of select="labels/cluster" /></Value>
</DynamicField>
</xsl:if>
<xsl:if test="labels/container">
<DynamicField>
<Name>AlertContainer</Name>
<Value><xsl:value-of select="labels/container" /></Value>
</DynamicField>
</xsl:if>
<xsl:if test="labels/namespace">
<DynamicField>
<Name>AlertNamespace</Name>
<Value><xsl:value-of select="labels/namespace" /></Value>
</DynamicField>
</xsl:if>
<xsl:if test="labels/pod">
<DynamicField>
<Name>AlertPod</Name>
<Value><xsl:value-of select="labels/pod" /></Value>
</DynamicField>
</xsl:if>
<xsl:if test="labels/severity">
<DynamicField>
<Name>AlertSeverity</Name>
<Value><xsl:value-of select="labels/severity" /></Value>
</DynamicField>
</xsl:if>
</xsl:copy>
</xsl:for-each>
</xsl:template>
</xsl:transform>
Da die Tickets jetzt aber direkt per Webservice erstellt werden und nicht per E-Mail, wollte ich fragen, wie ich die Nachrichten basierend auf dem Fingerprint mergen kann, bevor sie eine neue Ticket-Notification herausschicken.
Oder habe ich hier ein komplett falsches Verständnis?
Gruß
Silvio