Académique Documents
Professionnel Documents
Culture Documents
CPS
Introduction
Reporting Suite overview
Report definitions and interface
Counters files
KPI file
Report file
Report Customisation with Report Customizer
• Query Engine
A multi-pass engine for efficient extraction of KPI & Report definitions
(XML files)
data based on report definitions
• Adaptation Support
Technology specific (e.g. RAN, BSS …)
configuration of the engine enabling support Query engine
for different object topologies and DB layout
The NetAct components used by a RS
• NetAct Reporting API Adaptation support
In current deliveries this is the Perl based
ODR, but porting to the Java based NetAct Reporting API
WebScripting is ongoing
• Netact Database NetAct Database
The RC or GR Oracle DB storing the PM data
3G
3G RAN
RAN NSS
NSS MGW
MGW …
Note
The query engine is the same for all
NW technologies. Only the adaptation
support and content (i.e. KPIs and
reports) are changed.
The core task of the reporting engine is to transform the raw counters into KPIs that enables
efficient analysis of the network performance and capacity utilization
To do this the engine needs definitions of the KPIs and reports. When defining KPIs and
reports there are a number of principles that should be taken into considerations
• Key priorities for the engine and the KPI definition format
– Generic KPI definitions
Reports are needed on many different object and time aggregation levels
Open possibilities for advanced UI operations such as drill down and KPI analysis
– Focus on reuse
KPIs are typically required in different contexts, which typically means that a KPI will appear in multiple
reports
To ensure correctness and maintainability it is important that a KPI is defined only once.
– Focus on documentation
The KPI definition and the related documentation should be kept in close proximity to ensure consistency
– Clarify and Transparency
keep it simple
– Performance
• A reference reports on the other side contains references to KPIs that again
contains references to counters. This means that KPIs and counter aggregation
definitions can be used in multiple reports and still having all definitions made
only once. This generally makes report definition a lot easier and simplifies
maintenance as definitions are made only once and then reused as needed.
<kpi name="simple_kpi">
<formula>
servlev.rrc_conn_stp_att
</formula>
<kpi_alias>Simple KPI</kpi_alias>
<kpi_format>float:2</kpi_format>
<kpi_info> ... </kpi_info>
</kpi>
</conf_file>
… … …
RNC_183c.xml RSRAN000.xml
cellres.xml
RNC_232c.xml RSRAN009.xml
service.xml
M1013C0.xml RSRAN046.xml
autosho.xml
<kpi name="RNC_328a">
<formula>servlev.RRC_CONN_STP_FAIL_HC</formula>
</kpi>
</conf_file>
RS RS
/m/ossvar/shared/content3/
├───conf
│ └───doc Scheduler
├───bss Web Web
│ ├───conf Script Script
│ ├───ui_conf Shared
disk
│ ├───counters Tier 2
│ ├───kpis
│ └───reports
├───rsran
│ ├───conf Shared disk
│ ├───ui_conf NetAct
│ ├───counters DB Mail
│ ├───kpis Server
WS Quartz
│ └───reports Cache tables
└───custom
├───conf Tier 3
│ ├───doc
│ ├───nav HTTP JDBC, RS intiated
│ └───ui_conf File Access JDBC, WS intiated
└───ran
SMB Mount File copy, eg
├───conf
SMTP ftp, usb disk etc
├───ui_conf
├───counters
12
├───kpis
Soc Classification level
© Nokia Siemens Networks /
└───reports
Measurement Tables Result of aggregation The Final Report
Measurement A
Date obj obj2 att fail
01-jan 00:00 bts1 trx1 11 1
01-jan 00:00 bts1 trx2 9 2
Date obj att fail
01-jan 12:00 bts1 trx1 9 7
01-jan 12:00 bts1 trx2 5 1
01-jan bts1 34 11
02-jan 00:00 bts1 trx1 11 2 02-jan bts1 31 6
Succ HO
02-jan 00:00 bts1 trx2 3 1 Date obj Rate Succ
02-jan 12:00 bts1 trx1 5 2 01-jan bts1 68% 86%
02-jan 12:00 bts1 trx2 12 1 02-jan bts1 81% 82%
Measurement B
Date obj ho_succ ho_fail
01-jan 00:00 bts1 9 3 Date obj ho_succ ho_fail
01-jan 12:00 bts1 21 2 01-jan bts1 30 5
02-jan 00:00 bts1 11 2 02-jan bts1 14 3
02-jan 12:00 bts1 3 1
The formulas for both the Aggregation Step and KPI Step is written in Oracle Sql
syntax, which adds a lot of expressive power to the definitions.
• Aggregation definition examples
<counter alias="prxtot_denom_4">sum(prxtot_denom_4)</counter>
<counter alias="ave_prxtot_class_4">decode(nvl(sum(prxtot_denom_4),0),0,-112,
log(10,(sum(prxtot_denom_4*0.001*power(10,(-
112+ave_prxtot_class_4/10)))/sum(prxtot_denom_4))/0.001))</counter>
• KPI defintion example
<formula>
100*((cellres.prxtot_denom_0 + cellres.prxtot_denom_1+
cellres.prxtot_denom_2 + cellres.prxtot_denom_3+
cellres.prxtot_denom_4)/(cellres.period_duration*60*5))
</formula>
When the results of the Aggregation Step is being combined one the
measurements has to be selected as driver. In most cases the driver can be
selected freely between the measurements being used.
Succ HO Succ HO
Date obj Rate Succ Date obj att fail Date obj Rate Succ
01-jan bts1 68% 86% 01-jan bts1 34 11 01-jan bts1 68% 86%
02-jan bts1 81% 82% 02-jan bts1 31 6 02-jan bts1 81% 82%
01-jan bts2 84% 89% 01-jan bts2 43 7 01-jan bts2 84% 89%
02-jan bts2 23 8 02-jan bts2 65%
Report result using bottom Report result using top
table as driver table as driver
Date obj ho_succ ho_fail
01-jan bts1 30 5
02-jan bts1 14 3
01-jan bts2 25 3
In order to ensure the correct output, the Query Engine builds SQL that employees
outer joins between the measurement tables.
A “normal” join finds values in two tables that are in relation is equality (=). It only
returns rows that are present in both tables for the compared columns.
A row whose column-value is not found in the other table’s joined columns is not
returned at all.
As it is required to return the fullest possible result set, outer join is used.
In an outer join you define a master table. When the outer join is made all the
columns in the master will be returned even if they do not have a value in the other
table.
<kpi name="RNC_328a">
<formula>servlev.RRC_CONN_STP_FAIL_HC</formula>
</kpi>
</conf_file>
All KPI files are placed under the kpis folder in the /custom/”adaptation”/kpis folder.
e.g. /custom/training/kpis/
A KPI file consists of :
• temp table references
• KPI definitions.
The temp table reference is created with the tag <temp_table_ref>.
That has one attribute: src.
The attribute src is used to identify the referenced table, e.g.
src="custom/sbm/counters/kcc.xml“.
It is possible to add new counter aggregations to the referenced temp table, in a basic
inheritance approach. Name clashes will result in an error.
<conf_file>
<temp_table_ref src=“rsran/counters/servlev.xml" />
…
</conf_file>
Every KPI added to a KPI file is created within the KPI tag. The KPI tag has a
attribute name.
The attribute name is the id of a KPI. Nokia defined KPIs uses an official Nokia
naming convention, e.g. ava_45.
Max length of this attribute is 30 characters, it is recommended to use lower case
only, and spaces are not allowed.
<conf_file>
<temp_table_ref src="custom/counters/servlev.xml" />
<kpi name=“rnc_5a“>
…
</kpi>
…
</conf_file>
…
<kpi_info>
<title>RRC setup success rate</title>
<use>Ratio of RRC setup complete to attempt</use>
…
</kpi_info>
…
<conf_file>
<temp_table_ref src="custom/sbm/counters/kcc.xml" />
<kpi name=“rnc_154c" impl_stage="functional">
<formula>nvl(decode(
( kcc.RRC_CONN_STP_ATT ),0, null,
100*( kcc.RRC_CONN_ACC_COMP )
/
( kcc.RRC_CONN_STP_ATT )),null)</formula>
…
</kpi>
…
</conf_file>
Soc Classification level
26 © Nokia Siemens Networks /
Create a new KPI
The kpi_alias is a short descriptive name of the KPI. The kpi_alias is the
descriptive header used in the report output.
It should be kept under 40 characters. Spaces between words are encouraged as it
improves the visual appearance of the final report.
<conf_file>
<temp_table_ref src="custom/sbm/counters/kcc.xml" />
<kpi name=“rnc_154c" impl_stage="functional">
<formula>nvl(decode(
( kcc.RRC_CONN_STP_ATT ),0, null,
100*( kcc.RRC_CONN_ACC_COMP )
/
( kcc.RRC_CONN_STP_ATT )),null)</formula>
<kpi_alias>RRC Setup Success Rate</kpi_alias>
</kpi>
…
</conf_file>
The <kpi_format> tag must follow the webscript conventions, e.g. float:2 and
float:0.
<conf_file>
<temp_table_ref src="custom/sbm/counters/kcc.xml" />
<kpi name=“rnc_154c" impl_stage="functional">
<formula>nvl(decode(
( kcc.RRC_CONN_STP_ATT ),0, null,
100*( kcc.RRC_CONN_ACC_COMP )
/
( kcc.RRC_CONN_STP_ATT )),null)</formula>
<kpi_format>float:2</kpi_format>
…
</kpi>
…
</conf_file>
The example above marks all cells within a KPI column red that has a value less than
80. It also colors the cells yellow that has values that are equal or greater than 80 but
less than or equal to 95.
Soc Classification level
29 © Nokia Siemens Networks /
Create a new KPI
<kpi_info> cont.
The <formula> tag is defined within the <kpi_info> tag and is used for
documentation in web pages. It is free format and does not have to adhere to
the SQL syntax. For formatted output is allowed to use html formatting option,
but the text and tags should be enclosed in a CDATA section. If you want to
preserve the indentation it is possible to use the <pre> ... </pre>. If you use
encapsulation by <pre> ... </pre>you have to remember that all spaces counts,
so it is a good idea avoid heading spaces added by indentation in the xml file.
…
<kpi_info>
<title>RRC setup success rate</title>
<use>Ratio of RRC setup complete to attempt</use>
<formula><![CDATA[<pre>
sum(RRC_CONN_STP_ATT) / sum(RRC_CONN_ACC_COMP)
</pre>]]></formula>
…
</kpi_info>
…
…
<kpi_info>
<title>RRC setup success rate</title>
<use>Ratio of RRC setup complete to attempt</use>
<formula><![CDATA[<pre>
sum(RRC_CONN_STP_ATT) / sum(RRC_CONN_ACC_COMP)
</pre>]]></formula>
<unit>%</unit>
<tables>nokrww_ps_kcc_mnc1_raw</tables>
</kpi_info>
…
The Unit column is used to specify the unit of the kpi. The current supported list of
units: Whole number = Integer number, nb., number, no., no,[#],#
Percent =%
Decimal = Decimal number, None
Erlang = erlangs, erlang, E, Erl
Minutes = minutes
Kbit per sec = kbps, kbit/s
Mbit = Mbit
dB = dB
seconds = seconds, s, sec
min = min
hrs = h
kB = kB, kbyte, kbytes
MB = MB, Mbyte
GB = GB
TB = TB
Soc Classification level
33 © Nokia Siemens Networks /
Create a new report
A complete report that uses one KPI reference
<conf_file>
<info>
<header>Example report</header>
<help-text>
<![CDATA[ This report is a example report.]]>
</help-text>
<report-description>Example report</report-description>
</info>
<kpi_ref ref="custom/kpis/c090_qos.xml#NBR_OF_TBF_ALLOCATIONS"/>
<column_order>
<NBR_OF_TBF_ALLOCATIONS GROUP=”Test”/>
</column_order>
<master_temp_table_names>
qos
</master_temp_table_names>
</conf_file>
<conf_file>
<info>
<header>Example report</header>
…
</info>
…
</conf_file>
<conf_file>
<info>
<header>Example report</header>
<help-text><![CDATA[ This report is a simple example report.]]></help-text>
<report-description>This a example report.</report-description>
…
</info>
…
</conf_file>
The next step is to make a reference entry in the report XML to existing KPI’s in
the KPI library. The existing KPI libraries is divided into different adaptations. The
library is found under the folder custom/”adaptation”/kpis, e.g.
”custom/training/kpis/”
Existing KPI’s are referenced with the <kpi_ref> tag.
…
<kpi_ref ref="custom/training/kpis/sbm_kcc.xml#RNC_154c"/>
…
The KPI library file used in this example is …/sbm_kcc.xml. Multiple KPI’s
may be defined within a file. The hashmark symbol (#) identifies the KPI to
use.
Good behavior is to only keep one KPI definition per KPI file and the filename
the same as the KPI id.
The <column order> tag specifies the order in which the KPIs will be displayed on
the web page. For each KPI-reference in the report, an element with the name
(@name) of the KPI is used as element name.
KPIs can be grouped under different headers in the result output. If the user wants
to use grouping it should be defined here. If several KPIs are part of the same
group attribute the group must be defined for each KPI that belongs to the group.
…
<column_order>
<RNC_154c />
</column_order>
…
By looking within the <formula> tag in a KPI definition one can see that the
temp-table(s) aliases that is used for the counters included. For this example
the KPI uses a counter RRC_CONN_STP_ATT that is defined in temp table
with the alias ”kcc”. The alias “kcc” was defined as a master in the
<master_temp_table_names> tag.
...
<kpi name=" rnc_154c ">
<formula>nvl(decode(
( kcc.RRC_CONN_STP_ATT ),0, null,
100*( kcc.RRC_CONN_ACC_COMP )
/
( kcc.RRC_CONN_STP_ATT )),null)</formula>
...
</kpi>
...
To directory: custom/customizedReports
Soc Classification level
44 © Nokia Siemens Networks /
Run test report
The Reporting Suites have two main configuration files to set the
application configuration parameters and to reference external
resources. These files are
conf/engine.properties
custom/conf/custom.properties
The absolute location seen from tier 2 is
/mnt/sharedrw/content3/conf/engine.properties
/mnt/sharedrw/content3/custom/conf/custom.properties
Only files in the custom/ directory may be edited, so to edit properties
it is important to edit custom.properties. The file engine.properties will
be overwritten during later upgrades and any changes will be lost.
custom.properties takes precedence over engine.properties so if any
properties are defined in both files the setting from custom.properties
will be used.
Soc Classification level
48 © Nokia Siemens Networks /
Installation customized report into NetAct
# naming of custom.properties
#com.nokia.oss.qengine.customProps=custom/conf/prop/custom.properties
custom\conf
com.nokia.oss.qengine.customProps=custom/conf/custom.properties
linas.com.nokia.oss.qengine.customProps=/mnt/sharedrw/content3/custom/conf/custom.properties
laptop.com.nokia.oss.qengine.customProps=custom/conf/custom.properties
<node>
<navTreeEntry>
<id>Custom Reports</id>
<label>Custom Reports</label>
<type>folder</type>
</navTreeEntry>
<node>
<navTreeEntry>
<id>Test Report</id>
<label>Test Report</label>
<url>/repsuite/jflx.web?uiConf=custom/Test/ui_conf/newConf.xml&reportValidation=true</url>
<helpUrl>/repsuite/doc/reportTutorial.web</helpUrl>
</navTreeEntry>
</node>
</node>
custom/Test/ui_conf/newConf.xml
- indicates which reports in the drop down selection