Uploaded image for project: 'Product Roadmaps'
  1. Product Roadmaps
  2. MMF-998

System Info page should provide all the required information about a SQ Cluster

    XMLWordPrintable

    Details

    • Type: MMF
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Labels:

      Description

      Problems

      As an ops who operates a SonarQube cluster,

      • I want to check the health of the application and look at the main KPIs to make sure that the service is working well or to get a first idea of what's going wrong.
      • I want to easily share system information with the support team so that the support has all the information it needs about the cluster.

      But, for the time being,

      • The system info page doesn't really give an indication about the status of the application.
      • And, in case of a SonarQube cluster, the page doesn't provide detailed information about all the nodes of the cluster.

      Solution

      Web Service

      The api/system/info webservice should provide the following pieces of information.

      • the overall status of SQ
        • General status of SQ: Green / Yellow / Red
        • The reason when status is Yellow / Red
        • Uptime of SQ, i.e. how long the status is Green / Yellow: 6m / 60d / 10h / 30min
      • detailed info for SQ
        • Version : 6.7.0.20000
        • Server id
        • First Start Time: 18/05/2017 18:00
        • Official distribution: true | false
        • High Availability: true | false
        • Force authentication: true | false
        • External identify provider: GitHub
        • External identify provider whose users are allowed to sign up: GitHub
        • Number of lines of code: 15315978
        • Database
          • Vendor and version: PostgreSQL 9.5.4
          • URL: jdbc:postgresql://...
          • Username
          • Version status: up_to_date
          • (nice-to-have) Tables, with for each:
            • Rows count: 3M
        • Compute Engine
          • Reports waiting time: 20min
          • Pending Tasks: 0
          • In Progress Tasks: 0
          • Tasks Processed With Error: 0
          • Tasks Processed With Success: 358
          • Processing Time (ms): 1062477
          • Worker Count: 1
          • Max Worker Count: 10
        • Search
          • Search Health: Green / Yellow / Red
          • Number of nodes: 3
          • Indices, with per index:
            • Docs: 3M
            • Shards: 10
            • Store size: 300M
      • detailed info about the Application (Web, Compute Engine):
        • with for each application node in case of a cluster / globally in case of a single instance:
          • Node name if any / hostname (cluster only)
          • IP address & port (cluster only)
          • Type: application (cluster only)
          • Health: Green / Yellow / Red (cluster only)
          • The reason when status is Yellow / Red (cluster only)
          • Start Time
          • Log level: INFO | DEBUG | TRACE
          • Home dir
          • Data dir
          • Logs dir
          • Temp dir
          • Processors (of the node): 2
          • System Load Average (last minute): 1.0%
          • Free Memory: 150Mb
          • Web Process:
            • DB connectivity: Green / Red
            • Search connectivity: Green / Red
            • JVM Heap Usage: 33%
            • JVM Heap Used: 300Mb
            • JVM Heap Init: 128Mb
            • JVM Heap Committed: 539Mb
            • JVM Heap Max: 900Mb
            • JVM Non Heap Used: 90Mb
            • JVM Non Heap Init: 128Mb
            • JVM Non Heap Committed: 539Mb
            • Threads Count: 80
            • Threads Peak: 82
            • Daemon Thread: 66
            • Loaded Classes: 21648
            • Total Loaded Classes: 22162
            • Unloaded Classes: 514
            • Database Connection
              • Driver and version: PostgreSQL JDBC Driver 42.1.1
              • Pool Initial Size: 0
              • Pool Active Connections: 0
              • Pool Max Active Connections: 30
              • Pool Idle Connections: 2
              • Pool Min Idle Connections: 2
              • Pool Max Idle Connections: 5
              • Pool Max Wait (ms): 5000
              • Pool Remove Abandoned: false
              • Pool Remove Abandoned Timeout (seconds): 300
            • JVM (vendor, name & version): Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_u131
            • JVM properties, including System / Boot / Library Classpath...
          • Compute Engine Process:
            • DB connectivity: Green / Red
            • Search connectivity: Green / Red
            • JVM Heap Usage: 33%
            • JVM Heap Used: 300Mb
            • JVM Heap Init: 128Mb
            • JVM Heap Committed: 539Mb
            • JVM Heap Max: 900Mb
            • JVM Non Heap Used: 90Mb
            • JVM Non Heap Init: 128Mb
            • JVM Non Heap Committed: 539Mb
            • Threads Count: 80
            • Threads Peak: 82 ?
            • Daemon Thread: 66
            • Loaded Classes: 21648
            • Total Loaded Classes: 22162
            • Unloaded Classes: 514
            • Database Connection
              • Driver and version: PostgreSQL JDBC Driver 42.1.1
              • Pool Initial Size: 0
              • Pool Active Connections: 0
              • Pool Max Active Connections: 30
              • Pool Idle Connections: 2
              • Pool Min Idle Connections: 2
              • Pool Max Idle Connections: 5
              • Pool Max Wait (ms): 5000
              • Pool Remove Abandoned: false
              • Pool Remove Abandoned Timeout (seconds): 300
            • JVM (vendor, name & version): Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_u131
            • JVM properties, including System / Boot / Library Classpath...
      • detailed info about the Search:
        • with for each search node in case of a cluster / globally in case of a single instance:
          • Node name if any / hostname (cluster only)
          • IP address & port (cluster only)
          • Type: search (cluster only)
          • Health: Green / Yellow / Red (cluster only)
          • The reason when status is Yellow / Red (cluster only)
          • Start Time
          • Log level: INFO | DEBUG | TRACE
          • Home dir
          • Data dir
          • Logs dir
          • Temp dir
          • Processors (of the node): 2
          • System Load Average (last minute): 1.0%
          • Free Memory: 150Mb
          • Disk available: 84GB
          • Store Size: 146MB
          • Open files: 371
          • JVM Heap Usage: 33%
          • JVM Heap Used: 300Mb
          • JVM Heap Max: 900Mb
          • JVM Non Heap Used: 90Mb
          • Threads count: 80
          • Field Data Memory: 1MB
          • Field Data Circuit Breaker Limit: 604MB
          • Field Data Circuit Breaker Estimation: 1MB
          • Request Circuit Breaker Limit: 402MB
          • Request Circuit Breaker Estimation: 0
          • Query Cache Memory: 262KB
          • Request Cache Memory: 0
          • JVM (vendor, name & version) (bootstrapper JVM): Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM, 1.8.0_u131
          • JVM properties, including System / Boot / Library Classpath...

      As currently, this WS will also provide the following general information:

      • Installed plugins (name & version)
      • Settings, including licenses
      • Statistics, with the information whether anonymous statistics are sent or not.

      In case of a cluster, as for MMF-993, the WS will rely on Hazelcast as a shared memory to collect the status from each node. Here, the WS will also rely on Hazelcast to request all the nodes about their detailed information.
      In standalone mode, the WS will behave the same way than when in cluster mode but the answer won't mention nodes or any related info (node health, name, ip, type).

      System info page

      The info page should display all the information coming from the api/system/info webservice, at the exception of:

      • sensitive (encrypted) information such as licenses
      • the extra info about plugins, settings, statistics.

      On top of the page, a first section will clearly display the overall status of SQ.
      By default, in the rest of that page, only basic info will be displayed such as the name/IP and status of each node. Detailed info could be collapsed.

      Related changes: Logs and restart

      In case of a cluster, the options to download logs and to restart the server won't be available from the UI. Those actions apply to a single node and for application node only.
      Still, before having to the collect log files from the different servers, an administrator wants to be able to dynamically change the log level of all the application nodes from the UI. User will have the possibility to change the log level of the application nodes all at once.

      Current design solution

      By default, the System Info page displays collapsed informations. Only the title and health status are displayed.

      In Cluster mode:

      In Standalone mode:

      When the health status is yellow or green, a "?" icon appears next to it. Hovering it gives the user more information about what's wrong.

      Clicking on the right arrow of a card expands it to show more information

      Clicking on the button "Download System Info" will download a .json file with all information of this page.
      Clicking on "Download Logs" will display a submenu with the same items as in current version. Clicking on one of them will download a .log file with the requested logs.

      A user can edit the logs level by clicking on the pen icon next to the top right buttons.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              christophe.levis Christophe Levis
              Reporter:
              freddy.mallet Freddy Mallet (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: