Cognos Auditing Blog – Tipps und Tricks für große und hochvolumige Umgebungen

by 17. Mai 2021Auditing0 Kommentare

Ein Blog von John Boyer und Mike Norris.

Einleitung

Es ist wichtig, dass die Cognos Auditing-Funktion funktioniert, um zu wissen und zu verstehen, wie Cognos von Ihrer Benutzer-Community verwendet wird, und um Fragen wie:

    • Wer nutzt das System?
    • Welche Berichte führen sie aus?
    • Wie sind die Berichtslaufzeiten?
    • Mit Hilfe anderer Tools, wie MotioCI, welcher Inhalt wird nicht verwendet?

Wenn man bedenkt, wie wichtig es ist, gesunde Cognos Analytics-Umgebungen aufrechtzuerhalten, wurde überraschend wenig über die Auditing-Datenbank über die Standardproduktdokumentation hinaus geschrieben. Vielleicht wird es als selbstverständlich angesehen, aber Organisationen, die es verwenden, wissen, dass die Abfrage der Audit-Datenbanktabellen mit der Zeit langsamer wird – insbesondere, wenn Ihr Unternehmen viele Benutzer hat, die viele Berichte ausführen und über einen langen Verlauf verfügen. Darüber hinaus kann sich die Protokollierung der Überwachungsaktivität selbst verzögern, weil sie in die Warteschlange gestellt wird, wenn sie beispielsweise nicht schnell genug zur Datenbank hinzugefügt werden kann. Dann beginnen Sie, über die Datenbankleistung nachzudenken, wie Sie es bei jeder operativen Datenbank tun würden, die Berichtsanforderungen hat.

Große Tabellen verlangsamen normalerweise die Abfrageleistung. Je größer die Tabelle, desto länger dauert das Einfügen und Abfragen. Denken Sie daran, dass diese Tabellen und die Audit-Datenbank im Grunde eine operative Datenbank sind; Schreibvorgänge finden häufig statt und wirken sich gegen uns aus, da wir sie nicht nur auf Lesevorgänge konzentrieren können, wie Sie es bei einem Data Mart tun würden.

Ähnlich wie beim Content Store muss der Zustand der Cognos-Umgebung auch den Zustand der Audit-Datenbank berücksichtigen. Das unbegrenzte Wachstum der Audit-Datenbank kann im Laufe der Zeit zu einem Problem werden und möglicherweise sogar die Gesamtleistung einer Cognos-Umgebung beeinträchtigen. In vielen Organisationen, denen externe Vorschriften auferlegt werden, kann das Fehlen eines vollständigen Auditprotokolls dazu führen, dass sie in eine Situation der Nichteinhaltung mit schwerwiegenden Folgen geraten. Wie gehen wir also damit um, dass wir so viele Daten für historische Prüfzwecke aufbewahren müssen – in einigen Fällen bis zu 10 Jahre – und trotzdem die Berichte erhalten, die wir benötigen, um die Umgebung zu erhalten und die Benutzer mit der Leistung zufrieden zu stellen?

Die Herausforderung

    • Das unbegrenzte Wachstum der Audit-Datenbank wirkt sich negativ auf den Zustand der Cognos-Umgebung aus
    • Die Berichterstellung aus der Audit-Datenbank ist langsam oder unbrauchbar geworden
    • Cognos hat Verzögerungen beim Schreiben von Datensätzen in die Audit-Datenbank
    • Die Audit-Datenbank hat keinen Speicherplatz mehr

All dies bedeutet, dass nicht nur die Berichte, die auf die Audit-Datenbank angewiesen sind, darunter leiden, sondern oft das gesamte System. Wenn sich die Audit-Datenbank auf demselben Server wie der Cognos Content Store befindet, wird die Leistung von Cognos in dieser Umgebung beeinträchtigt.

Die Einrichtung

Wir nehmen an:

    1. Cognos Analytics ist installiert und wird ausgeführt
    2. Cognos ist für die Protokollierung in einer Audit-Datenbank konfiguriert
        • Verfügen Sie über eine Audit-Datenbank
        • Legen Sie geeignete Audit-Protokollierungsebenen in der Cognos-Administration fest
        • Datensätze werden von Cognos in die Datenbank geschrieben
    3. Die Audit-Datenbank ist seit mehr als einem Jahr im Einsatz
    4. Die Umgebung ist sehr aktiv mit Benutzern und Ausführungen
    5. Das Audit-Paket wird verwendet, um Cognos-Nutzungsdaten anzuzeigen
    6. Wir sind bestrebt, die Berichtsleistung der Audit-Datenbank zu verbessern
    7. Neu anzufangen oder alte Datensätze zu löschen ist nicht immer eine Option

Wenn Sie Cognos Audit noch nicht installiert und konfiguriert haben, können Sie Lodestar Solutions, a Motio Partner, hat ein ausgezeichnetes Post zum Aktivieren von Audit in Cognos BI /CA.

Die Lösung

Es gibt einige mögliche Lösungen, die sich schnell präsentieren:

    1. Reduzieren Sie das Datenvolumen durch:
        • Verschieben einiger der älteren Daten in eine andere Datenbank
        • Verschieben einiger der älteren Daten in eine andere Tabelle in derselben Datenbank
    2. Einfach löschen oder archive einige der Daten und mach dir keine Sorgen
    3. Lebe damit. Tritt die Dose runter road und pushen Sie den Datenbankadministrator für die Leistung
      Verbesserungen beim Anlegen von Handschellen, indem keine Änderungen des Schemas zugelassen werden oder
      Indizes

Wir werden uns nicht mit Option 3 befassen. Option 2, das Löschen der Daten, ist keine gute Option, und ich würde empfehlen, mindestens 18 Monate zu behalten. Aber wenn Sie so geneigt sind, bietet IBM ein Dienstprogramm, AuditDBCleanup (Cognos BI) oder a Skript (Cognos Analytics), die genau das tun wird. Das Dienstprogramm für Cognos BI löscht Datensätze basierend auf einem Zeitstempel, während die Skripts für Cognos Analytics nur die Indizes und Tabellen löschen.

Die Empfehlungen, die wir unseren Kunden zuvor diesbezüglich gegeben haben, waren die Aufteilung in zwei Datenbanken:

    1. Audit – Live : enthält die Daten der letzten Woche
    2. Audit – Historisch: enthält historische Daten (bis zu N Jahre)

Kurz gesagt, der Prozess wird wöchentlich ausgeführt, um die neuesten Datensätze von Audit Live nach Audit Historical zu verschieben. Audit Live beginnt neu, nachdem dieser Prozess ausgeführt wurde.

    1. Die Live-DB ist schnell und eng, sodass Inserts so schnell wie möglich erfolgen können
    2. Auditanfragen richten sich ausschließlich an die Historische DB

Bei diesem Ansatz gibt es kein implizites „Zusammenfügen“ der Live-Daten und der historischen Daten. Ich würde argumentieren, dass Sie es wahrscheinlich so behalten wollen.

In Cognos Administration können Sie zwei verschiedene Verbindungen für die Audit-Datenquelle hinzufügen. Wenn ein Benutzer einen Bericht für das Audit-Paket ausführt, wird er gefragt, welche Verbindung er verwenden möchte:

Audit-Datenbanken

Wenn Sie sich lieber Live-Audit-Daten als historische Audit-Daten ansehen möchten, wählen Sie einfach die Verbindung „Audit – Live“ aus, wenn Sie dazu aufgefordert werden (sollte die Ausnahme sein, nicht die Norm).

Wenn Sie WIRKLICH auch eine konsolidierte Ansicht von Live und Historie bereitstellen möchten, können Sie dies tun, aber dies würde die Leistung beeinträchtigen.

Sie können beispielsweise eine dritte Datenbank namens „Audit – Consolidated View“ erstellen und dann für jede Tabelle im Audit-Schema: Erstellen Sie eine gleichnamige Ansicht, die eine SQL-Union zwischen der Tabelle in der Live-DB und der Tabelle in der historische DB. In ähnlicher Weise könnte dies auch im Framework Manager-Modell erreicht werden, aber auch hier wäre die Leistung ein wichtiger Aspekt.

Einige unserer Kunden haben eine konsolidierte Ansicht erstellt. Unserer Meinung nach ist dies wahrscheinlich übertrieben. Die Leistung wäre in dieser konsolidierten Ansicht immer schlechter und wir sind nicht auf viele Anwendungsfälle gestoßen, die sowohl die Live-Datensätze als auch den Verlauf verwenden. Das Live wird für die Fehlerbehebung und das Historical für Trendberichte verwendet.

Ab Cognos Analytics 11.1.7 ist die Audit-Datenbank auf 21 Tabellen angewachsen. Weitere Informationen finden Sie an anderer Stelle in der Audit-Datenbank, Beispiel-Audit-Berichten und dem Framework Manager-Modell. Die Standardprotokollierungsebene ist Minimal, aber Sie können die nächste Ebene, Basic, verwenden, um Nutzungsanforderungen, Benutzerkontenverwaltung und Laufzeitnutzung zu erfassen. Eine Möglichkeit, die Systemleistung aufrechtzuerhalten, besteht darin, die Protokollierungsstufe auf der niedrigsten erforderlichen Stufe zu halten. Je mehr Protokollierung der Server durchführt, desto stärker kann die Gesamtleistung des Servers beeinträchtigt werden.

Die Schlüsseltabellen, an denen die meisten Administratoren interessiert sind, sind die 6 Tabellen, die die Benutzeraktivität und die Berichtsaktivität im System protokollieren.

  • COGIPF_USERLOGON : Speichert Informationen zur Benutzeranmeldung (einschließlich Abmeldung)
  • COGIPF_RUNREPORT : Speichert Informationen über Berichtsausführungen
  • COGIPF_VIEWREPORT : Speichert Informationen zu Berichtsansichtsanfragen
  • COGIPF_EDITQUERY : Speichert Informationen über Abfrageläufe
  • COGIPF_RUNJOB : Speichert Informationen über Jobanfragen
  • COGIPF_ACTION : Zeichnet Benutzeraktionen in Cognos auf (diese Tabelle kann viel schneller wachsen als die anderen)

Die Out-of-the-Box-Konfiguration sieht wie folgt aus:

Standard-Audit-Konfiguration

Empfohlene Konfiguration:

Empfohlene Audit-Konfiguration

Die Cognos Audit Database – Live enthält 1 Woche Auditdaten. Daten, die älter als 1 Woche sind, werden in die Cognos Audit Database – Historical verschoben.

Die Zeile von Cognos Audit Database – Live zu Cognos Audit Database – Historical im Diagramm ist verantwortlich für:

  • Kopieren von Daten von Live-Audit in historisches Audit
  • Entfernen Sie alle Zeilen im Live-Audit, die älter als 1 Woche sind
  • Entfernen Sie alle Zeilen im historischen Audit, die älter als x Jahre sind
  • Entfernen Sie alle Zeilen in COGIPF_ACTION, die älter als 6 Monate sind

Indizes

Unterschiedliche Datenbanktypen haben unterschiedliche Indizierungstypen. Ein Datenbankindex ist eine Datenstruktur, die einer Tabelle (oder Ansicht) zugeordnet ist und verwendet wird, um die Ausführungszeit von Abfragen beim Abrufen der Daten aus dieser Tabelle (oder Ansicht) zu verbessern. Arbeiten Sie mit Ihrem DBA zusammen, um die optimale Strategie zu entwickeln. Sie werden die Antworten auf Fragen wie diese wissen wollen, um die besten Entscheidungen darüber zu treffen, welche Spalten indiziert werden sollen. Natürlich könnte der Datenbankadministrator die Antworten auf einige oder alle dieser Fragen ohne Ihre Hilfe herausfinden, aber es würde einige Recherchen und einige Zeit erfordern:

  • Wie viele Datensätze haben die Tabellen und bis zu welcher Größe sollen sie anwachsen? (Das Indizieren einer Tabelle ist nur dann sinnvoll, wenn die Tabelle eine große Anzahl von Datensätzen enthält.)
  • Wissen Sie, welche Spalten einzigartig sind? Erlauben sie NULL-Werte? Welche Spalten haben den Datentyp Integer oder Big Integer? (Die Spalten mit numerischen Datentypen, die UNIQUE und NOT NULL sind, sind starke Kandidaten für die Teilnahme am Indexschlüssel.)
  • Wo liegen heute Ihre größten Performance-Probleme? Sind sie beim Abrufen der Daten? Gibt es spezielle Anfragen oder Berichte, die eher ein Problem darstellen? (Dies kann den Datenbankadministrator zu bestimmten Spalten führen, die optimiert werden können.)
  • Welche Felder werden in Verknüpfungstabellen für die Berichterstellung verwendet?
  • Welche Felder werden zum Filtern, Sortieren, Gruppieren und Aggregieren verwendet?

Es überrascht nicht, dass dies dieselben Fragen sind, die beantwortet werden müssen, um die Leistung von Datenbanktabellen zu verbessern.

IBM-Support empfiehlt Erstellen eines Indexes für die Spalten „COGIPF_REQUESTID“, „COGIPF_SUBREQUESTID“ und „COGIPF_STEPID“ für die folgenden Tabellen, um die Leistung zu verbessern:

  • COGIPF_NATIVEQUERY
  • COGIPF_RUNJOB
  • COGIPF_RUNJOBSTEP
  • COGIPF_RUNREPORT
  • COGIPF_EDITQUERY

Plus auf anderen weniger genutzten Tischen:

  • COGIPF_POWERPLAY
  • COGIPF_HUMANTASKSERVICE
  • COGIPF_HUMANTASKSERVICE_DETAIL

Sie können dies als Ausgangspunkt verwenden, aber ich würde die obigen Fragen beantworten, um die beste Antwort für Ihre Organisation zu erhalten.

Weitere Überlegungen

  1. Audit FM-Modell. Denken Sie daran, dass das von IBM bereitgestellte Framework Manager-Modell den Standardtabellen und -feldern nachempfunden ist. Alle Änderungen, die Sie an den Berichtstabellen vornehmen, müssen im Modell widergespiegelt werden. Die Leichtigkeit oder Komplexität dieser Änderungen – oder Ihre organisatorische Kompetenz, diese Änderungen vorzunehmen – kann die von Ihnen gewählte Lösung beeinflussen.
  2. Weitere Felder. Wenn Sie dies tun möchten, ist es jetzt an der Zeit, zusätzliche Felder für Kontext- oder Referenzdaten hinzuzufügen, um die Auditberichte zu verbessern.
  3. Übersichtstabellen. Anstatt die Daten einfach in Ihre historische Tabelle zu kopieren, komprimieren Sie sie. Sie können die Daten auf Tagesebene aggregieren, um die Berichterstellung effizienter zu gestalten.
  4. Ansichten statt Tabellen. Andere sagen: „Anstelle einer 'aktuellen' Datenbank und einer 'historischen' Datenbank sollten Sie also nur eine Datenbank haben und allen Tabellen darin sollte 'historisch' vorangestellt werden. Dann sollten Sie eine Reihe von Ansichten erstellen, eine für jede Tabelle, die Sie als "aktuell" anzeigen möchten, und jede Ansicht die historischen Zeilen herausfiltern lassen, die Sie nicht sehen möchten, und nur die aktuellen durchlassen."
    https://softwareengineering.stackexchange.com/questions/276395/two-database-architecture-operational-and-historical/276419#276419

Zusammenfassung

Unterm Strich sollten Sie mit den hier bereitgestellten Informationen gut vorbereitet sein, um ein produktives Gespräch mit Ihrem DBA zu führen. Die Chancen stehen gut, dass sie ähnliche Probleme schon einmal gelöst hat.

Die vorgeschlagenen Änderungen in der Architektur der Cognos-Audit-Datenbank verbessern die Leistung sowohl in der direkten Berichterstellung als auch in Anwendungen von Drittanbietern, die darauf angewiesen sind, wie z Motio ReportCard und Inventar.

Übrigens, wenn Sie dieses Gespräch mit Ihrem DBA geführt haben, würden wir gerne davon hören. Wir würden auch gerne hören, ob Sie das Problem einer schlecht funktionierenden Audit-Datenbank gelöst haben und wie Sie es gemacht haben.