Command Line UEH - Exception Analysis
Command Line UEH - Exception Analysis
Advantages : Command line scripts are light and quick, do not require any installation and, most of all, they are easily customizable
Customization :
- It can be used with Target Monitor log files or MoShell “te log read”
- Could run the command on some specific Mod only (lh modx ..) or device
- Add a grep to filter on specific Exc Code, CellId, IMSI, etc.
- Edit the sed and awk to print time tags together with filtering the Exc Code allows mapping the progression of Exception occurrence in time; day,
hour, minutes, seconds, ..
- Could be used for RNC_Exception, ERROR, or anything else..
> lh mod te log read 120 | $moshelldir/concat_segmented_rlib_traces.pl | grep 'ExceptionCode = ' | grep
-v UehEventHistoryBufferD | sed 's/(UEH_EXCEPTION) \.\.\/src\///' | sed 's/RncLmUePT//' | sed 's/[0-9]
[0-9][0-9][0-9][: , ]//' | sed 's/\[[0-9][0-9].*\]//' | sed 's/\.cpp:.*ExceptionCode/; ExceptionCode/' |
sed 's/[0-9][0-9]*: //' | sed 's/[0-9][0-9]*\///' | awk 'BEGIN {FS=";"} {printf ("%-30s %-30s %s\n", $1,
$2, $3)}' | sort -n | uniq -c | sort -nrk 1 | head -25
Some explanations :
- When using Trace Server log, this part would be like " cat <file name> " or " tail <file name> ", etc.
$moshelldir/concat_segmented_rlib_traces.pl
- When using MoShell; Call Concatenation script (when using MoShell)
- $Moshell will not work when using Trace Server log, find the appropriate path to the concatenation script
grep UEH_EXCEPTION
- Keep only UEH_Exception lines
grep -v UehEventHistoryBufferD
- Do not keep UEH_Exception history buffer lines
sed 's/(UEH_EXCEPTION) \.\.\/src\///'
- Remove "RncLmUePT(UEH_EXCEPTION) ../src/" strings
sed 's/RncLmUePT//'
- Remove "RncLmUePT" strings
sed 's/[0-9][0-9][0-9][0-9][: , ]//'
Some explanations :
PMR and KPI point to problems in some RBS or some cell in particular and you want to see the UEH_Exception for those only.
Some explanations : Just added to the initial search a grep for the required cell Id : grep 'cellId = 2034'
- List UEH_Exception per ModMP
This shows if some module or subrack in particular is responsible for most Exceptions
> lh mod te log read 120 | $moshelldir/concat_segmented_rlib_traces.pl | grep 'ExceptionCode = ' | grep
-v UehEventHistoryBufferD | sed 's/(UEH_EXCEPTION) \.\.\/src\///' | sed 's/RncLmUePT//' | sed
's/\.cpp:.*ExceptionCode/; ExceptionCode/' | sed 's/\[.*\]//' | awk 'BEGIN {FS =";"} {printf ("%-35s %-
24s %s\n", $1, $2, $3)}' | sort -n | uniq -c | sort -nk 2 -nrk 1
28 1217: UehCompModeStartC ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
17 1217: UehBehaviourBaseProcedure ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
15 1217: UehBehaviourBaseProcedure ExceptionCode = 312 Received signal NBAP RADIO LINK RECONFIGURATION FAILURE
4 1217: UehUeCtxtC ExceptionCode = 407 Received signal RRC CellUpdate with Failure Cause
4 1217: UehChSwitchFachToDchC ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
3 1217: UehUeCtxtC ExceptionCode = 54 Received signal spProcessingFailure on DcsIfEventP
3 1217: UehRrcConnSetupC ExceptionCode = 521 TIMER rrcSetuptimerId has expired
..
72 1216: UehUeCtxtReleaseCoordC ExceptionCode = 223 Received signal decreaseResourceReq on RnhIfCellEventP
26 1216: UehChSwitchFachToDchC ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
14 1216: UehRrcConnSetupC ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
2 1216: UehUeCtxtC ExceptionCode = 407 Received signal RRC CellUpdate with Failure Cause
2 1216: UehRrcConnSetupC ExceptionCode = 521 TIMER rrcSetuptimerId has expired
2 1216: UehRabEstComDedC ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
..
36 1215: UehBehaviourBaseProcedure ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
26 1215: UehChSwitchFachToDchC ExceptionCode = 171 Received signal admissionRej on rnhIfCellControlP
3 1215: UehRrcConnSetupC ExceptionCode = 521 TIMER rrcSetuptimerId has expired
3 1215: UehBehaviourBaseProcedure ExceptionCode = 310 Received signal NBAP RADIO LINK SETUP FAILURE
2 1215: UehUeCtxtC ExceptionCode = 54 Received signal spProcessingFailure on DcsIfEventP
..
Some explanations :
sed 's/;.*//'
- Remove everything after the “;”
You can use this method to report other thing thancellId : IMSI, causecode, the Connecion Type (connType), etc.
- List the cause code reported for ExceptionCode = xx
> lh mod te log read 120 | $moshelldir/concat_segmented_rlib_traces.pl | grep 'ExceptionCode = xx' | sed
's/.*; cause/cause/' | sed 's/.*causeCode/causecode/' | sed 's/.*; reason/reason/' | sed 's/;.*//' | sed
's/=/ = /' | sed 's/\ \ /\ /g' | sed 's/\.//' | sort -n | uniq -c | sort -n -k 2,2 | tail -25
167 causecode = 4
95 causecode = 1
32 causecode = 7
24 causecode = 23
16 causecode = 18
13 causecode = 5
8 cause = 9
6 causecode = 9
6 causecode = 22
4 cause = 1
3 reason 23
1 reason 22
Some explanations : The cause code field does not always have the same format so we need to be more carefull :
sed 's/;.*//' | sed 's/=/ = /' | sed 's/\ \ /\ /g' | sed 's/\.//'
- Remove everything after “;”
- Put one “ “ each side of the “=” sign
- Remove “.”
- Print the time distribution of "ExceptionCode = xx" by the hour, by the minute, the seconds, etc.
Comment: This is useful to find out when some specific UEH_Exception started to happen
We simply need to break the time tag with spaces and print the required field; [2010-11-14 01:52:56.608]
sed 's/.*\[//'
- Remove anything before the time tag.
sed 's/\..*//'
- Remove the milliseconds
by the hour :
{printf ("%s\n", $(NF-2) "h")}'
- Print the only the date and hour tag and append "h"
by the minute :
{printf ("%s%s\n", $(NF-2) "h", $(NF-1)"m")}'
- Print the only the date and hour tag and append "h"
- Print the minute tag and append "m"
by the second :
{printf ("%s%s%s\n", $(NF-2) "h", $(NF-1)"m", $NF"s")}'
- Print the only the date and hour tag and append "h"
- Print the minute tag and append "m"
- print the seconds tag and append "s"
ERROR analysis
Note : All indexes, fro Id, pointers, etc. are replaced by a “x” to count every ERROR type together.
Use the above examples or adapt them to your needs. Suggestions are welcome.
Short commands for WinFIOL
UEH_Exceptions command line analysis :
======================================
- List the **Drift RNC id** that gets most ExceptionCode = 350 :
- Print the **time** distribution of "ExceptionCode = 54" by the hour, by the minute, the seconds,
etc. :
%exctime%lh mod te log read 120 | $moshelldir/concat_segmented_rlib_traces.pl | grep 'ExceptionCode =
' | sed 's/.*\[//' | sed 's/\..*//' | awk 'BEGIN{FS = ":"} {printf ("%s%s%s\n", $(NF-2) "h", $(NF-
1)"m", $NF"s")}' | sort -n | uniq -c
- ERROR analysis :
%errorraw%cat <file name>.raw | grep "ERROR:" | sed 's/\[20.*\] //g'| sed 's/\.\.\/src\//;/g' | sed
's/\.cpp:[0-9]*/;/g' | sed 's/\.cc:[0-9]*/;/g' | sed 's/\:/\;/g' | sed 's/[0-9][0-9]*/x/g' | awk
'BEGIN { FS = ";" } {printf ("%-40s %-10s %-20s %-10s \n", $2, $3, $4, $5)}' | sort -n | uniq -c |
sort -nrk 1 | head -25
- UeRegPrint :
____________________________________________________________
RÉJEAN DROUIN Ing.
Services Professional
Region North America - Operations
This Communication is Confidential. We only send and receive email on the basis of the terms set out at www.ericsson.com/email_disclaimer