Components of the Monitoring Pipeline ===================================== The complete performance monitoring infrastructure consist of several components forming a processing pipeline. The following graph visualizes the contained components and their data flow connections. .. graphviz:: digraph component { compound = true; node [shape=record]; "rsb-process-monitor*" -> "rsbperfmon-db-adapter" [label="rst.monitoring.ProcessCues"]; "rsb-host-monitor*" -> "rsbperfmon-db-adapter" [label="rst.device.generic.HostInformation"]; subgraph clusterbackend { label = "Timeseries Backend"; "Graphite"; "backenddummy" [shape=point style=invis]; "InfluxDB"; } "rsbperfmon-db-adapter" -> "backenddummy" [lhead=clusterbackend,minlen=1]; "backenddummy" -> "Grafana Dashboard" [ltail=clusterbackend]; } Measurement Layer ----------------- :ref:`rsb-process-monitor` and :ref:`rsb-host-monitor` perform the measurement of performance counters. Instances of the former program collect data for one or several processes identified via PID. :ref:`rsb-host-monitor` instances collect general performance data regarding a single computers. Both programs expose their data in a cyclic fashion via :ref:`RSB ` using :ref:`RST ` data types. Backend Layer ------------- In order to visualize the gathered performance data, a timeseries backend is filled with them so that visualizations can work on such a specific architecture. :ref:`rsbperfmon-db-adapter` accepts the incoming data via :ref:`RSB ` and converts it in to a format suitable for timeseries databases like `InfluxDB `_ or Graphite (whisper) `Graphite `_. Afterwards, the converted data is inserted into one of the available database backends. Visualization Layer ------------------- In order to visualize the gathered data, the `Grafana `_ dashboard system is used. Grafana pulls the timeseries data from one of the database backends and visualizes it in a browser-based dashboard using client-side Javascript plotting.