Merge "fix section header levels in ofp e2e meters"
[docs.git] / manuals / developer-guide / src / main / asciidoc / openflowplugin / odl-ofp-message-spy.adoc
1 === Internal message statistics API
2
3 To aid in testing and diagnosis, the OpenFlow plugin provides information about the number and rate of different internal events.
4
5 The implementation does two things: collects event counts and exposes counts. Event counts are grouped by message type, e.g., *PacketInMessage*, and checkpoint, e.g., _TO_SWITCH_ENQUEUED_SUCCESS_. Once gathered, the results are logged as well as being exposed using OSGi command line (deprecated) and JMX.
6
7 [[collect]]
8 ==== Collect
9
10 Each message is counted as it passes through various processing checkpoints. The following checkpoints are defined as a Java enum and tracked:
11
12 [source, java]
13 ----
14   /**
15     * statistic groups overall in OFPlugin
16     */
17   enum STATISTIC_GROUP {
18        /** message from switch, enqueued for processing */
19        FROM_SWITCH_ENQUEUED,
20        /** message from switch translated successfully - source */
21        FROM_SWITCH_TRANSLATE_IN_SUCCESS,
22        /** message from switch translated successfully - target */
23        FROM_SWITCH_TRANSLATE_OUT_SUCCESS,
24        /** message from switch where translation failed - source */
25        FROM_SWITCH_TRANSLATE_SRC_FAILURE,
26        /** message from switch finally published into MD-SAL */
27        FROM_SWITCH_PUBLISHED_SUCCESS,
28        /** message from switch - publishing into MD-SAL failed */
29        FROM_SWITCH_PUBLISHED_FAILURE,
30        
31        /** message from MD-SAL to switch via RPC enqueued */
32        TO_SWITCH_ENQUEUED_SUCCESS,
33        /** message from MD-SAL to switch via RPC NOT enqueued */
34        TO_SWITCH_ENQUEUED_FAILED,
35        /** message from MD-SAL to switch - sent to OFJava successfully */
36        TO_SWITCH_SUBMITTED_SUCCESS,
37        /** message from MD-SAL to switch - sent to OFJava but failed*/
38        TO_SWITCH_SUBMITTED_FAILURE
39   }
40 ----
41
42 When a message passes through any of those checkpoints then counter assigned to
43 corresponding checkpoint and message is incremented by 1.
44
45 [[expose-results]]
46 ==== Expose statistics
47
48 As described above, there are three ways to access the statistics:
49
50 * OSGi command line (this is considered deprecated)
51 +
52 ::
53   `osgi> dumpMsgCount`
54 * OpenDaylight logging console (statistics are logged here every 10 seconds)
55 +
56 ::
57   required logback settings :
58   `<logger name="org.opendaylight.openflowplugin.openflow.md.queue.MessageSpyCounterImpl" level="DEBUG"\/>`
59 * JMX (via JConsole)
60 ::
61   start OpenFlow plugin with the +-jmx+ parameter
62 ::
63   start JConsole by running `jconsole`
64 ::
65   the JConsole MBeans tab should contain org.opendaylight.controller
66 ::
67   RuntimeBean has a msg-spy-service-impl
68 ::
69   Operations provides makeMsgStatistics report functionality
70
71 [[example-result]]
72 ===== Example results
73
74 image::openflowplugin/odl-ofp-ofplugin-debug-stats.png[OFplugin Debug stats.png,title="OFplugin Debug stats.png" width="500"]
75
76 ----
77 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_ENQUEUED: MSG[PortStatusMessage] -> +0 | 1
78 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_ENQUEUED: MSG[MultipartReplyMessage] -> +24 | 81
79 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_ENQUEUED: MSG[PacketInMessage] -> +8 | 111
80 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_IN_SUCCESS: MSG[PortStatusMessage] -> +0 | 1
81 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_IN_SUCCESS: MSG[MultipartReplyMessage] -> +24 | 81
82 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_IN_SUCCESS: MSG[PacketInMessage] -> +8 | 111
83 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[QueueStatisticsUpdate] -> +3 | 7
84 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[NodeUpdated] -> +0 | 3
85 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[NodeConnectorStatisticsUpdate] -> +3 | 7
86 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[GroupDescStatsUpdated] -> +3 | 7
87 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[FlowsStatisticsUpdate] -> +3 | 19
88 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[PacketReceived] -> +8 | 111
89 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[MeterFeaturesUpdated] -> +0 | 3
90 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[GroupStatisticsUpdated] -> +3 | 7
91 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[GroupFeaturesUpdated] -> +0 | 3
92 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[MeterConfigStatsUpdated] -> +3 | 7
93 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[MeterStatisticsUpdated] -> +3 | 7
94 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[NodeConnectorUpdated] -> +0 | 12
95 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_OUT_SUCCESS: MSG[FlowTableStatisticsUpdate] -> +3 | 8
96 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_TRANSLATE_SRC_FAILURE: no activity detected
97 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[QueueStatisticsUpdate] -> +3 | 7
98 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[NodeUpdated] -> +0 | 3
99 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[NodeConnectorStatisticsUpdate] -> +3 | 7
100 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[GroupDescStatsUpdated] -> +3 | 7
101 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[FlowsStatisticsUpdate] -> +3 | 19
102 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[PacketReceived] -> +8 | 111
103 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[MeterFeaturesUpdated] -> +0 | 3
104 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[GroupStatisticsUpdated] -> +3 | 7
105 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[GroupFeaturesUpdated] -> +0 | 3
106 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[MeterConfigStatsUpdated] -> +3 | 7
107 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[MeterStatisticsUpdated] -> +3 | 7
108 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[NodeConnectorUpdated] -> +0 | 12
109 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_SUCCESS: MSG[FlowTableStatisticsUpdate] -> +3 | 8
110 DEBUG o.o.o.s.MessageSpyCounterImpl - FROM_SWITCH_PUBLISHED_FAILURE: no activity detected
111 DEBUG o.o.o.s.MessageSpyCounterImpl - TO_SWITCH_ENQUEUED_SUCCESS: MSG[AddFlowInput] -> +0 | 12
112 DEBUG o.o.o.s.MessageSpyCounterImpl - TO_SWITCH_ENQUEUED_FAILED: no activity detected
113 DEBUG o.o.o.s.MessageSpyCounterImpl - TO_SWITCH_SUBMITTED_SUCCESS: MSG[AddFlowInput] -> +0 | 12
114 DEBUG o.o.o.s.MessageSpyCounterImpl - TO_SWITCH_SUBMITTED_FAILURE: no activity detected
115 ----