Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Report Manager

    Scheduled Pinned Locked Moved Betrieb
    10 Posts 2 Posters 1.6k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T Offline
      twallutis
      last edited by

      Hi,

      mal wieder eine Frage zu Reports…

      Ich möchte gerne über den Abfrage-Editor einen Report erstellen, der u.a. die installierte Software enthält. Dazu wähle ich die Attribute wie im angehängten Bild aus.

      Überraschenderweise (zumindest überraschend für mich) stehen im Report unter "Anwendungen" die installierten Betriebssysteme.

      Wo liegt mein Fehler?

      Bis denn

      Thomas Wallutis

      PS: Im SQL Editor sieht die Abfrage wie folgt aus:

      SELECT
      obj_main.isys_obj__id AS 'id',
      obj_main.isys_obj__title AS 'LC__UNIVERSAL__TITLE###1',
      j14.isys_obj__title AS 'LC__UNIVERSAL__TITLE#LC__CMDB__CATG__APPLICATION_OBJ_APPLICATION###1',
      j7.isys_catg_cpu_list__cores AS 'LC__CMDB__CATG__CPU_CORES###4',
      j9.isys_memory_title__title AS 'LC__CMDB__CATG__TITLE###5',
      j10.isys_catg_memory_list__id AS 'isys_cmdb_dao_category_g_memory::dynamic_property_callback_capacity::isys_catg_memory_list__id::LC__CMDB_CATG__MEMORY_CAPACITY',
      j1.isys_catg_stor_list__id AS 'isys_cmdb_dao_category_g_stor::dynamic_property_callback_capacity::isys_catg_stor_list__id::LC__CMDB_CATG__MEMORY_CAPACITY',
      j13.isys_obj__title AS 'LC__UNIVERSAL__TITLE#Betriebssystem###1'

      FROM isys_obj AS obj_main
      INNER JOIN isys_cmdb_status AS obj_main_status ON obj_main_status.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id
      LEFT JOIN isys_catg_stor_list AS j1 ON j1.isys_catg_stor_list__isys_obj__id = obj_main.isys_obj__id
      LEFT JOIN isys_catg_application_list AS j4 ON j4.isys_catg_application_list__isys_obj__id = obj_main.isys_obj__id AND j4.isys_catg_application_list__isys_catg_application_priority__id IS NOT NULL
      LEFT JOIN isys_connection AS j3 ON j3.isys_connection__id = j4.isys_catg_application_list__isys_connection__id
      LEFT JOIN isys_obj AS job3 ON j3.isys_connection__isys_obj__id = job3.isys_obj__id
      LEFT JOIN isys_catg_cpu_list AS j7 ON j7.isys_catg_cpu_list__isys_obj__id = obj_main.isys_obj__id
      LEFT JOIN isys_catg_memory_list AS j10 ON j10.isys_catg_memory_list__isys_obj__id = obj_main.isys_obj__id
      LEFT JOIN isys_memory_title AS j9 ON j9.isys_memory_title__id = j10.isys_catg_memory_list__isys_memory_title__id
      LEFT JOIN isys_obj AS j13 ON j13.isys_obj__id = job3.isys_obj__id
      LEFT JOIN isys_obj AS j14 ON j14.isys_obj__id = job3.isys_obj__id
      LEFT JOIN isys_obj_type AS j15 ON j15.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id
      LEFT JOIN isys_catg_global_list AS j18 ON j18.isys_catg_global_list__isys_obj__id = obj_main.isys_obj__id
      LEFT JOIN isys_purpose AS j17 ON j17.isys_purpose__id = j18.isys_catg_global_list__isys_purpose__id
      LEFT JOIN isys_cmdb_status AS j12 ON j12.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id

      WHERE TRUE

      AND  ( (j15.isys_obj_type__id != '60' ) AND (j15.isys_obj_type__id != '63' ) ) AND ( (j15.isys_obj_type__id = '5' ) ) AND ( (j17.isys_purpose__id != '4' ) ) AND ( (j12.isys_cmdb_status__id = '6' ) ) ORDER BY obj_main.isys_obj__title DESC;

      Attribute.PNG

      1 Reply Last reply Reply Quote 0
      • T Offline
        twallutis
        last edited by

        Nachtrag: ich habe jetzt mal eine ganz kleine Abfrage erstellt. Unter "Gewählte Attribute" habe ich nur "Name (Allgemein)" und "Anwendung (Softwarezuweisung)" ausgewählt. Bei "Anwendung (Softwarezuweisung)" habe ich über die Lupe noch "Name (Allgemein)" ausgewählt.

        Trage ich bei den Bedingungen nur einen Hostnamen ein, so werden mir für diesen Server auch alle installierten SW-Produkte angezeigt (inkl. Betriebssystem).

        Nehme ich die Bedingung raus, dann erhalte ich einen report mit zwei Spalten: "Name" und "Anwendung -> Name"

        Unter "Name" finde ich dann bunt gemixt die Namen von Applikationen, Servern und Betriebssystemen.

        Hier die Abfrage im SQL Editor:

        Snip–---

        SELECT
        obj_main.isys_obj__id AS 'id',
        obj_main.isys_obj__title AS 'LC__UNIVERSAL__TITLE###1',
        j6.isys_obj__title AS 'LC__UNIVERSAL__TITLE#LC__CMDB__CATG__APPLICATION_OBJ_APPLICATION###1'

        FROM isys_obj AS obj_main
        INNER JOIN isys_cmdb_status AS obj_main_status ON obj_main_status.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id
        LEFT JOIN isys_catg_application_list AS j3 ON j3.isys_catg_application_list__isys_obj__id = obj_main.isys_obj__id
        LEFT JOIN isys_connection AS j2 ON j2.isys_connection__id = j3.isys_catg_application_list__isys_connection__id
        LEFT JOIN isys_obj AS job2 ON j2.isys_connection__isys_obj__id = job2.isys_obj__id
        LEFT JOIN isys_obj AS j6 ON j6.isys_obj__id = job2.isys_obj__id
        LEFT JOIN isys_obj_type AS j7 ON j7.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id

        WHERE TRUE

        AND  ( (j7.isys_obj_type__id != '60' ) AND (j7.isys_obj_type__id != '63' ) ) ORDER BY obj_main.isys_obj__title DESC;

        Snip-----

        Bei einigen Servern steht unter "Name" der Server und unter "Anwendung (Name)" die installierte SW bzw. das OS.

        Nicht ganz was ich erwartet hätte...

        1 Reply Last reply Reply Quote 0
        • T Offline
          twallutis
          last edited by

          Gerade gesehen: auch die Lizenzen stehen unter "Name".

          1 Reply Last reply Reply Quote 0
          • J Offline
            jkondek
            last edited by

            Hallo twallutis,

            wenn ich mir Deine WHERE Bedingung so anschaue, wundert mich nicht, dass Dir so viele verschiedene Objekttypen dargestellt werden.

            AND  ( (j7.isys_obj_type__id != '60' ) AND (j7.isys_obj_type__id != '63' ) ) ORDER BY obj_main.isys_obj__title DESC;

            Die Bedingung beinhaltet ja nur, dass die Objekttypen weder Beziehungen noch parallele Beziehungen sein duerfen, alles andere ist erlaubt.
            Du kannst eine Bedingung einfuegen, die prueft, dass die Objekte in der ersten Spalte (obj_main) nur Server sein duerfen und die Objekte in der zweiten Spalte (j6) nur Software sein darf.
            Das auf einem Server installierte Betriebssystem wird in der Kategorie Softwarezuweisung dargestellt, auch wenn es ueber die Kategorie Betriebssystem gepflegt wird. Dadurch taucht diese Information ebenfalls in dem Report auf.

            Gruss,
            jkondek

            1 Reply Last reply Reply Quote 0
            • T Offline
              twallutis
              last edited by

              Tja, nur habe ich keine Ahnung, woher diese Bedingung kommt. Ich erstelle alle Abfragen über die GUI, da mein SQL-KnowHow eher bescheiden ist.

              1 Reply Last reply Reply Quote 0
              • T Offline
                twallutis
                last edited by

                So, noch mal überprüft:

                AND  ( (j7.isys_obj_type__id != '60' ) AND (j7.isys_obj_type__id != '63' ) ) ORDER BY obj_main.isys_obj__title DESC;

                Das steht in jeder Abfrage. Schon mal was gelernt.

                Das auf einem Server installierte Betriebssystem wird in der Kategorie Softwarezuweisung dargestellt, auch wenn es ueber die Kategorie Betriebssystem gepflegt
                wird. Dadurch taucht diese Information ebenfalls in dem Report auf.

                Das halte ich für eher unglücklich.

                Aber vielleicht sollte ich mal formulieren, was ich eigentlich will: eine Liste aller Server, in denen Folgendes drin steht:

                • Name des Servers
                • Anzahl CPUs/Kerne
                • RAM-Größe gesamt
                • Größe der Festplatten (nicht zwingend Partitionen)
                • Betriebssystem
                • installierte Anwendungen (ohne(!) OS)

                Bis denn

                Thomas Wallutis

                1 Reply Last reply Reply Quote 0
                • T Offline
                  twallutis
                  last edited by

                  So langsam habe ich echt Zweifel an der Qualität des Report Managers…

                  Ich habe jetzt mal zwei Testabfragen erstellt. Es sollen nur die unter "Server" eingetragenen Objekte angezeigt werden und auch nur dann, wenn sie "In Betrieb" sind. Angezeigt werden sollen im ersten Fall nur "Anwendungen (Name)" und "Betriebssystem (Name)", im zweiten Fall nur "Anwendungen (Name)".

                  Hier die SQL-Abfragen:

                  Abfrage 1:

                  SELECT
                  obj_main.isys_obj__id AS 'id',
                  j5.isys_obj__title AS 'LC__UNIVERSAL__TITLE#Betriebssystem###1',
                  j6.isys_obj__title AS 'LC__UNIVERSAL__TITLE#LC__CMDB__CATG__APPLICATION_OBJ_APPLICATION###1'

                  FROM isys_obj AS obj_main
                  INNER JOIN isys_cmdb_status AS obj_main_status ON obj_main_status.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id
                  LEFT JOIN isys_catg_application_list AS j2 ON j2.isys_catg_application_list__isys_obj__id = obj_main.isys_obj__id AND j2.isys_catg_application_list__isys_catg_application_priority__id IS NOT NULL
                  LEFT JOIN isys_connection AS j1 ON j1.isys_connection__id = j2.isys_catg_application_list__isys_connection__id
                  LEFT JOIN isys_obj AS job1 ON j1.isys_connection__isys_obj__id = job1.isys_obj__id
                  LEFT JOIN isys_obj AS j5 ON j5.isys_obj__id = job1.isys_obj__id
                  LEFT JOIN isys_obj AS j6 ON j6.isys_obj__id = job1.isys_obj__id
                  LEFT JOIN isys_obj_type AS j7 ON j7.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id
                  LEFT JOIN isys_cmdb_status AS j4 ON j4.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id

                  WHERE TRUE

                  AND  ( (j7.isys_obj_type__id != '60' ) AND (j7.isys_obj_type__id != '63' ) ) AND ( (j7.isys_obj_type__id = '5' ) ) AND ( (j4.isys_cmdb_status__id = '6' ) ) ORDER BY j5.isys_obj__title DESC;

                  Abfrage 2:

                  SELECT
                  obj_main.isys_obj__id AS 'id',
                  j5.isys_obj__title AS 'LC__UNIVERSAL__TITLE#LC__CMDB__CATG__APPLICATION_OBJ_APPLICATION###1'

                  FROM isys_obj AS obj_main
                  INNER JOIN isys_cmdb_status AS obj_main_status ON obj_main_status.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id
                  LEFT JOIN isys_catg_application_list AS j2 ON j2.isys_catg_application_list__isys_obj__id = obj_main.isys_obj__id
                  LEFT JOIN isys_connection AS j1 ON j1.isys_connection__id = j2.isys_catg_application_list__isys_connection__id
                  LEFT JOIN isys_obj AS job1 ON j1.isys_connection__isys_obj__id = job1.isys_obj__id
                  LEFT JOIN isys_obj AS j5 ON j5.isys_obj__id = job1.isys_obj__id
                  LEFT JOIN isys_obj_type AS j6 ON j6.isys_obj_type__id = obj_main.isys_obj__isys_obj_type__id
                  LEFT JOIN isys_cmdb_status AS j4 ON j4.isys_cmdb_status__id = obj_main.isys_obj__isys_cmdb_status__id

                  WHERE TRUE

                  AND  ( (j6.isys_obj_type__id != '60' ) AND (j6.isys_obj_type__id != '63' ) ) AND ( (j6.isys_obj_type__id = '5' ) ) AND ( (j4.isys_cmdb_status__id = '6' ) ) ORDER BY j5.isys_obj__title DESC;

                  Im ersten Fall habe ich angeblich 31 Treffer, wobei aber maximal 20 Zeilen angezeigt werden. In beiden Spalten steht dasselbe, nämlich das Betriebssystem.

                  Bei der zweiten Abfrage (Kopie der ersten Abfrage; nur eine Anzeigeoption entfernt) bekomme ich 212 Treffer. Hier sind die ersten angezeigten Anwendungen zwar auch Betriebssysteme, aber danach folgen zumindest "richtige Anwendungen".

                  Die Logik dahinter will sich mir nicht erschliessen.

                  Bis denn

                  Thomas Wallutis

                  Edit: nur um die Anmerkung "Die Logik dahinter will sich mir nicht erschliessen" mal zu erklären: ich gehe davon aus, dass die meisten Leute die Abfragen über die GUI erstellen. Das erhaltene Ergebnis weicht IMHO von dem erwarteten Ergebnis ab; insbesondere wenn ich nur einen Punkt ändere.

                  1 Reply Last reply Reply Quote 0
                  • J Offline
                    jkondek
                    last edited by

                    Hallo Thomas,

                    Tja, nur habe ich keine Ahnung, woher diese Bedingung kommt. Ich erstelle alle Abfragen über die GUI, da mein SQL-KnowHow eher bescheiden ist.

                    Die Bedingung kommt durch folgenden Teil in der GUI (Ausgabe):
                    Beziehungsobjekte mit ausgeben? Ja/Nein
                    Da "Nein" vorausgewaehlt ist und Du das vermutlich nicht auf "Ja" geaendert hast, kommt diese Bedingung zustande.

                    Zu Abfrage 1:
                    Es war mir zu kompliziert, durch das ganze GUI-produzierte SQL durchzublicken, daher hier eine passende Abfrage:

                    SELECT
                    a.Server,
                    a.Betriebssystem,
                    b.Anwendung

                    FROM

                    (SELECT
                    j1.isys_obj__id AS ID,
                    j1.isys_obj__title AS Server,
                    j4.isys_obj__title AS Betriebssystem

                    FROM isys_obj AS j1

                    LEFT JOIN isys_catg_application_list AS j2
                    ON j2.isys_catg_application_list__isys_obj__id = j1.isys_obj__id
                    AND j2.isys_catg_application_list__isys_catg_application_type__id = 2

                    LEFT JOIN isys_connection AS j3
                    ON j3.isys_connection__id = j2.isys_catg_application_list__isys_connection__id

                    LEFT JOIN isys_obj AS j4
                    ON j4.isys_obj__id = j3.isys_connection__isys_obj__id

                    WHERE TRUE
                    AND j1.isys_obj__isys_cmdb_status__id = 6
                    AND j1.isys_obj__isys_obj_type__id = 5) a

                    LEFT JOIN

                    (SELECT
                    j1.isys_obj__id AS ID,
                    j4.isys_obj__title AS Anwendung

                    FROM isys_obj AS j1

                    LEFT JOIN isys_catg_application_list AS j2
                    ON j2.isys_catg_application_list__isys_obj__id = j1.isys_obj__id
                    AND j2.isys_catg_application_list__isys_catg_application_type__id = 1

                    LEFT JOIN isys_connection AS j3
                    ON j3.isys_connection__id = j2.isys_catg_application_list__isys_connection__id

                    LEFT JOIN isys_obj AS j4
                    ON j4.isys_obj__id = j3.isys_connection__isys_obj__id

                    WHERE TRUE
                    AND j4.isys_obj__isys_obj_type__id = 2) b

                    ON a.ID = b.ID

                    Nicht ueber die verschachtelten SELECT-Statements wundern, musste die Anwendungen auslagern, damit auch Server ohne Anwendungen in der Ergebnisliste auftauchen. Es werden nun alle in Betrieb befindlichen Server im Ergebnis dargestellt, egal ob mit/ohne Betriebssystem oder Anwendung.

                    Falls Du bei der weiteren Report-Erstellung mit den noch benoetigten Informationen Hilfe brauchst meld Dich gerne.

                    • Anzahl CPUs/Kerne
                    • RAM-Größe gesamt
                    • Größe der Festplatten (nicht zwingend Partitionen)

                    Gruss,
                    jkondek

                    1 Reply Last reply Reply Quote 0
                    • T Offline
                      twallutis
                      last edited by

                      Es war mir zu kompliziert, durch das ganze GUI-produzierte SQL durchzublicken, daher hier eine passende Abfrage:

                      YMMD!

                      Ja, das sieht gut aus. Danke!

                      • Anzahl CPUs/Kerne
                      • RAM-Größe gesamt
                      • Größe der Festplatten (nicht zwingend Partitionen)

                      Bei den ersten beiden Punkten scheint die Schwierigkeit zu sein, die Gesamtzahl herauszubekommen (und nicht die Einzelpunkte).

                      Ich bastle auch gerade mit dem Dokumente-AddOn herum; vielleicht kriege ich es ja da hin.

                      Bis denn

                      Thomas

                      Edit: die SQL Statements könnten auch in Alt-Aramäisch sein…;-)

                      1 Reply Last reply Reply Quote 0
                      • J Offline
                        jkondek
                        last edited by

                        Hallo Thomas,

                        • Anzahl CPUs/Kerne
                        • RAM-Größe gesamt
                        • Größe der Festplatten (nicht zwingend Partitionen)

                        Bei den ersten beiden Punkten scheint die Schwierigkeit zu sein, die Gesamtzahl herauszubekommen (und nicht die Einzelpunkte).

                        Dafuer wirst Du nicht um SQL drum herum kommen, da der Report Manager keine Funktion zum Summieren der Ergebnisse hat.

                        Gruss,
                        jkondek

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post