| Prometheus Statistics |
| ===================== |
| |
| Each contiv-agent exposes statistics in Prometheus format at port |
| ``9999`` by default. Exposed data is split into two groups: - ``/stats`` |
| provides statistics for VPP interfaces managed by contiv-agent |
| Prometheus data is a set of counters with labels. For each interface, |
| the following counters are exposed: \* *inPackets* \* *outPackets* \* |
| *inBytes* \* *outBytes* \* *ipv4Packets* \* *ipv6Packets* \* |
| *outErrorPackets* \* *dropPackets* \* *inMissPackets* \* |
| *inNobufPackets* \* *puntPackets* |
| |
| Labels let you add additional information to a counter. The |
| *interfaceName* and *node* labels are specified for all counters. If an |
| interface is associated with a particular pod, then the *podName* and |
| *podNamespace* labels are also specified for its counters; otherwise, a |
| placeholder value (``--``) is used (for example, for node interconnect |
| interfaces). - ``/metrics`` provides general go runtime statistics |
| |
| To access Prometheus stats of a node you can use |
| ``curl localhost:9999/stats`` from the node. The output of contiv-agent |
| running at k8s master node looks similar to the following: |
| |
| :: |
| |
| $ curl localhost:9999/stats |
| # HELP dropPackets Number of dropped packets for interface |
| # TYPE dropPackets gauge |
| dropPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| dropPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 52 |
| dropPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 9 |
| dropPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 12 |
| dropPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP inBytes Number of received bytes for interface |
| # TYPE inBytes gauge |
| inBytes{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| inBytes{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 24716 |
| inBytes{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 726 |
| inBytes{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 6113 |
| inBytes{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP inErrorPackets Number of received packets with error for interface |
| # TYPE inErrorPackets gauge |
| inErrorPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| inErrorPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 0 |
| inErrorPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| inErrorPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 0 |
| inErrorPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP inMissPackets Number of missed packets for interface |
| # TYPE inMissPackets gauge |
| inMissPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| inMissPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 0 |
| inMissPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| inMissPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 0 |
| inMissPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP inNobufPackets Number of received packets ??? for interface |
| # TYPE inNobufPackets gauge |
| inNobufPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| inNobufPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 0 |
| inNobufPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| inNobufPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 0 |
| inNobufPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP inPackets Number of received packets for interface |
| # TYPE inPackets gauge |
| inPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| inPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 97 |
| inPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 9 |
| inPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 60 |
| inPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP ipv4Packets Number of ipv4 packets for interface |
| # TYPE ipv4Packets gauge |
| ipv4Packets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| ipv4Packets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 68 |
| ipv4Packets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| ipv4Packets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 52 |
| ipv4Packets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP ipv6Packets Number of ipv6 packets for interface |
| # TYPE ipv6Packets gauge |
| ipv6Packets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| ipv6Packets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 26 |
| ipv6Packets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 9 |
| ipv6Packets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 8 |
| ipv6Packets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP outBytes Number of transmitted bytes for interface |
| # TYPE outBytes gauge |
| outBytes{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| outBytes{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 5203 |
| outBytes{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| outBytes{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 17504 |
| outBytes{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP outErrorPackets Number of transmitted packets with error for interface |
| # TYPE outErrorPackets gauge |
| outErrorPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| outErrorPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 0 |
| outErrorPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| outErrorPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 0 |
| outErrorPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP outPackets Number of transmitted packets for interface |
| # TYPE outPackets gauge |
| outPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| outPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 49 |
| outPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| outPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 45 |
| outPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| # HELP puntPackets Number of punt packets for interface |
| # TYPE puntPackets gauge |
| puntPackets{interfaceName="GigabitEthernet0/9/0",node="dev",podName="--",podNamespace="--"} 0 |
| puntPackets{interfaceName="tap-vpp2",node="dev",podName="--",podNamespace="--"} 0 |
| puntPackets{interfaceName="tap0e6439a7a934336",node="dev",podName="web-667bdcb4d8-pxkfs",podNamespace="default"} 0 |
| puntPackets{interfaceName="tap5338a3285ad6bd7",node="dev",podName="kube-dns-6f4fd4bdf-rsz9b",podNamespace="kube-system"} 0 |
| puntPackets{interfaceName="vxlanBVI",node="dev",podName="--",podNamespace="--"} 0 |
| |
| In order to browse stats in web UI Prometheus, it must be started |
| locally by following the information in the `Prometheus Getting Started |
| Guide <https://prometheus.io/docs/prometheus/latest/getting_started/>`__. |
| |
| If you start Prometheus on a node, the following sample config can be |
| used: |
| |
| .. code:: yaml |
| |
| global: |
| scrape_interval: 15s |
| |
| scrape_configs: |
| - job_name: 'contiv_stats' |
| metrics_path: '/stats' |
| static_configs: |
| - targets: ['localhost:9999'] |
| - job_name: 'contiv_agent' |
| # metrics_path defaults to '/metrics' |
| static_configs: |
| - targets: ['localhost:9999'] |
| |
| Once Prometheus is started with the specified config, you should be able |
| access its web UI at ``localhost:9090``. |
| |
| :: |
| |
| tester@dev:~/Downloads/prometheus-2.1.0.linux-amd64$ ./prometheus --config.file=config.yml |
| |
| If security features are enabled for the HTTP endpoint, then the config |
| must be adjusted: |
| |
| .. code:: yaml |
| |
| - job_name: 'contiv_secured' |
| |
| scheme: https |
| basic_auth: |
| username: user |
| password: pass |
| metrics_path: /stats |
| tls_config: |
| insecure_skip_verify: true |
| # CA certificate to validate API server certificate with. |
| #[ ca_file: <filename> ] |
| static_configs: |
| - targets: ['localhost:9191'] |