- play_arrow Monitoring and Troubleshooting Contrail
- play_arrow Understanding Contrail Analytics
- play_arrow Configuring Contrail Analytics
- Analytics Scalability
- High Availability for Analytics
- vRouter Command Line Utilities
- Tracing the vRouter Packet Path
- Using Contrail Tools
- Using Sandump Tool
- Security Logging Object
- System Log Receiver in Contrail Analytics
- Sending Flow Messages to the Contrail System Log
- User Configuration for Analytics Alarms and Log Statistics
- Contrail Networking Alarms
- Alarms History
- Node Memory and CPU Information
- Role- and Resource-Based Access Control for the Contrail Analytics API
- Configuring Analytics as a Standalone Solution
- Agent Modules in Contrail Networking
- Configuring Secure Sandesh and Introspect for Contrail Analytics
- play_arrow Configuring Traffic Mirroring to Monitor
- Configuring Traffic Analyzers and Packet Capture for Mirroring
- Configuring Interface Monitoring and Mirroring
- Mirroring Enhancements
- Analyzer Service Virtual Machine
- Using the Wireshark Plugin to Analyze Packets Between vRouter and vRouter Agent on pkt0 Interface
- Mapping VLAN Tags from a Physical NIC to a VMI (NIC-Assisted Mirroring)
- play_arrow Using Contrail Web UI to Monitor and Troubleshoot the Network
- Monitoring the System
- Monitor > Infrastructure > Dashboard
- Monitor > Infrastructure > Control Nodes
- Monitor > Infrastructure > Virtual Routers
- Monitor > Infrastructure > Analytics Nodes
- Monitor > Infrastructure > Config Nodes
- Monitor > Networking
- Query > Flows
- Query > Logs
- Debugging Processes Using the Contrail Introspect Feature
- Example: Debugging Connectivity Using Monitoring for Troubleshooting
- Contrail Analytics Optional Modules
- play_arrow Using Contrail Command to Monitor and Troubleshoot the Network
- Viewing Overlay Routes
- Monitoring Bond Interfaces in DPDK Enabled Devices
- Top N View in Contrail Command
- Viewing Topology Maps from Contrail Command
- Viewing Packet Path in Topology View
- Assign Custom Names to Privileged Ports and VXLAN IDs
- Viewing the Monitoring Dashboards
- Creating a Query for Flows
- Contrail Analytics Optional Modules
- play_arrow Contrail Insights in Contrail Command
- Contrail Insights Overview
- Contrail Insights Flows in Contrail Command
- Viewing Telemetry KPI Alarms for Fabric Devices and Ports
- Adding, Editing, and Deleting sFlow Collector Nodes in Contrail Command
- Adding or Deleting sFlow Collector Nodes by Modifying instances.yml
- Configuring Contrail Insights Alarms using Contrail Command
- Configuring Instances in Contrail Insights
- Viewing Cluster Node Details and Metric Values
- play_arrow Common Support Answers
-
Getting Contrail Node Status
Overview
This topic describes how to view the status of a Contrail node on a physical server. Contrail nodes include config, control, analytics, compute, and so on.
UVE for NodeStatus
The User-Visible Entity (UVE) mechanism is used to aggregate and send the status information. All node types send a NodeStatus structure in their respective node UVEs. The following is a control node UVE of NodeStatus:
struct NodeStatus { 1: string name (key="ObjectBgpRouter") 2: optional bool deleted 3: optional string status // Sent by process 4: optional list<process_info.ProcessStatus> process_status (aggtype="union") // Sent by node manager 5: optional list<process_info.ProcessInfo> process_info (aggtype="union") 6: optional string description } uve sandesh NodeStatusUVE { 1: NodeStatus data }
Node Status Features
The most important features of NodeStatus include:
ProcessStatus
ProcessInfo
ProcessStatus
Also process_status, is sent by the processes corresponding to the virtual node, and displays the status of the process and an aggregate state indicating if the process is functional or non-functional. The process_status includes the state of the process connections (ConnectionInfo) to important services and other information necessary for the process to be functional. Each process sends its NodeStatus information, which is aggregated as union (aggtype="union") at the analytics node. The following is the ProcessStatus structure:
1. struct ProcessStatus { 2. 1: string module_id 3. 2: string instance_id 4. 3: string state 5. 4: optional list<ConnectionInfo> connection_infos 6. 5: optional string description 7. } 8. 9. struct ConnectionInfo { 10. 1: string type 11. 2: string name 12. 3: optional list<string> server_addrs 13. 4: string status 14. 5: optional string description 15. }
ProcessInfo
Sent by the node manager, /usr/bin/contrail-nodemgr. Node manager is a monitor process per contrail virtual node that tracks the running state of the processes. The following is the ProcessInfo structure:
16. struct ProcessInfo { 17. 1: string process_name 18. 2: string process_state 19. 3: u32 start_count 20. 4: u32 stop_count 21. 5: u32 exit_count 22. // time when the process last entered running stage 23. 6: optional string last_start_time 24. 7: optional string last_stop_time 25. 8: optional string last_exit_time 26. 9: optional list<string> core_file_list 27. }
Example: NodeStatus
The following is an example output of NodeStatus obtained from the Rest API:
http://:8081/analytics/uves/control-...ilt=NodeStatus . { NodeStatus: { process_info: [ { process_name: "contrail-control", process_state: "PROCESS_STATE_RUNNING", last_stop_time: null, start_count: 1, core_file_list: [ ], last_start_time: "1409002143776558", stop_count: 0, last_exit_time: null, exit_count: 0 }, { process_name: "contrail-control-nodemgr", process_state: "PROCESS_STATE_RUNNING", last_stop_time: null, start_count: 1, core_file_list: [ ], last_start_time: "1409002141773481", stop_count: 0, last_exit_time: null, exit_count: 0 }, { process_name: "contrail-dns", process_state: "PROCESS_STATE_RUNNING", last_stop_time: null, start_count: 1, core_file_list: [ ], last_start_time: "1409002145778383", stop_count: 0, last_exit_time: null, exit_count: 0 }, { process_name: "contrail-named", process_state: "PROCESS_STATE_RUNNING", last_stop_time: null, start_count: 1, core_file_list: [ ], last_start_time: "1409002147780118", stop_count: 0, last_exit_time: null, exit_count: 0 } ], process_status: [ { instance_id: "0", module_id: "ControlNode", state: "Functional", description: null, connection_infos: [ { server_addrs: [ "10.84.13.45:8443" ], { server_addrs: [ "10.84.13.45:8086" ], status: "Up", type: "Collector", name: null, description: "Established" }, { server_addrs: [ "10.84.13.45:5998" ], status: "Up", type: "Discovery", name: "Collector", description: "SubscribeResponse" }, { server_addrs: [ "10.84.13.45:5998" ], status: "Up", type: "Discovery", name: "IfmapServer", description: "SubscribeResponse" }, { server_addrs: [ "10.84.13.45:5998" ], status: "Up", type: "Discovery", name: "xmpp-server", description: "Publish Response - HeartBeat" } ] } ] } }
Using Introspect to Get Process Status
The user can also view the state of a specific process by using the introspect mechanism.
Example: Introspect of NodeStatus
The following is an example of the process state of contrail-control that is obtained by using
http://server-ip:8083/Snh_SandeshUVECacheReq?x=NodeStatus
The example output is the ProcessStatus of only one process of contrail-control. It does not show the full aggregated status of the control node through its UVE (as in the previous example).
root@a6s45:~# curl http://10.84.13.45:8083/Snh_SandeshU...q?x=NodeStatus <?xml-stylesheet type="text/xsl" href="/universal_parse.xsl"?><__NodeStatusUVE_list type="slist"><NodeStatusUVE type="sandesh"><data type="struct" identifier="1"><NodeStatus><name type="string" identifier="1" key="ObjectBgpRouter">a6s45</name><process_status type="list" identifier="4" aggtype="union"><list type="struct" size="1"><ProcessStatus><module_id type="string" identifier="1">ControlNode</module_id><instance_id type="string" identifier="2">0</instance_id><state type="string" identifier="3">Functional</state><connection_infos type="list" identifier="4"><list type="struct" size="5"><ConnectionInfo><type type="string" identifier="1">IFMap</type><name type="string" identifier="2">IFMapServer</name><server_addrs type="list" identifier="3"><list type="string" size="1"><element>10.84.13.45:8443</element></list></server_addrs><status type="string" identifier="4">Up</status><description type="string" identifier="5">Connection with IFMap Server (irond)</description></ConnectionInfo><ConnectionInfo><type type="string" identifier="1">Collector</type><name type="string" identifier="2"></name><server_addrs type="list" identifier="3"><list type="string" size="1"><element>10.84.13.45:8086</element></list></server_addrs><status type="string" identifier="4">Up</status><description type="string" identifier="5">Established</description></ConnectionInfo><ConnectionInfo><type type="string" identifier="1">Discovery</type><name type="string" identifier="2">Collector</name><server_addrs type="list" identifier="3"><list type="string" size="1"><element>10.84.13.45:5998</element></list></server_addrs><status type="string" identifier="4">Up</status><description type="string" identifier="5">SubscribeResponse</description></ConnectionInfo><ConnectionInfo><type type="string" identifier="1">Discovery</type><name type="string" identifier="2">IfmapServer</name><server_addrs type="list" identifier="3"><list type="string" size="1"><element>10.84.13.45:5998</element></list></server_addrs><status type="string" identifier="4">Up</status><description type="string" identifier="5">SubscribeResponse</description></ConnectionInfo><ConnectionInfo><type type="string" identifier="1">Discovery</type><name type="string" identifier="2">xmpp-server</name><server_addrs type="list" identifier="3"><list type="string" size="1"><element>10.84.13.45:5998</element></list></server_addrs><status type="string" identifier="4">Up</status><description type="string" identifier="5">Publish Response - HeartBeat</description></ConnectionInfo></list></connection_infos><description type="string" identifier="5"></description></ProcessStatus></list></process_status></NodeStatus></data></NodeStatusUVE><SandeshUVECacheResp type="sandesh"><returned type="u32" identifier="1">1</returned><more type="bool" identifier="0">false</more></SandeshUVECacheResp></__NodeStatusUVE_list>
contrail-status script
The contrail-status script is used to give the status of the Contrail processes on a server.
The contrail-status script first checks if a process is running, and if it is, performs introspect into the process to get its functionality status, then outputs the aggregate status.
The possible states to display include:
active - the process is running and functional; the internal state is good
inactive - not started or stopped by user
failed – the process exited too quickly and has not restarted
initializing - the process is running, but the internal state is not yet functional.
Example Output: Contrail-Status Script
The following is an example output from the contrail-status script.
root@a6s45:~# contrail-status == Contrail vRouter == supervisor-vrouter: active contrail-vrouter-agent active contrail-vrouter-nodemgr active == Contrail Control == supervisor-control: active contrail-control active contrail-control-nodemgr active contrail-dns active contrail-named active == Contrail Analytics == supervisor-analytics: active contrail-analytics-api active contrail-analytics-nodemgr active contrail-collector active contrail-query-engine active == Contrail Config == supervisor-config: active contrail-api:0 active contrail-config-nodemgr active contrail-schema active contrail-svc-monitor active rabbitmq-server active == Contrail Web UI == supervisor-webui: active contrail-webui active contrail-webui-middleware active redis-webui active == Contrail Database == supervisord-contrail-database:active contrail-database active contrail-database-nodemgr active