| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| network_stuff:juniper:telemetry [2022/12/22 06:06] – jotasandoku | network_stuff:juniper:telemetry [2025/07/08 18:24] (current) – jotasandoku |
|---|
| * protobuf 'file' define what RPCs are available. Is provided by the vendor and abstracts the way to interact to the system. | * protobuf 'file' define what RPCs are available. Is provided by the vendor and abstracts the way to interact to the system. |
| * We convert or compile 'protobuf' to python libraries. 'Protoc' creates a library that you can start using straight away in your code | * We convert or compile 'protobuf' to python libraries. 'Protoc' creates a library that you can start using straight away in your code |
| |
| |
| * The messages are binary but we can do marshaling and see the key-value pairs with 'kgbb' | * The messages are binary but we can do marshaling and see the key-value pairs with 'kgbb' |
| * All is defined in the client (jti-client in our case) (define how many channels, etc) | * All is defined in the client (jti-client in our case) (define how many channels, etc) |
| |
| | |
| | ---- |
| | **gNMI** |
| \\ | \\ |
| **gNMI** is a bit more crafted for network RPCs than netconf, See [[https://indico.csnog.eu/event/11/contributions/107/attachments/87/181/NETCONF_vs_gNMI_CSNOG_2022.pdf|comparison]] | See this insight on prometheus-grafana-exporters and gnmi: {{ :network_stuff:juniper:monitoring_cisco_networks_with_prometheus_grafana_and_exporters_fintech_focus_.pdf |}} |
| | * Provides **1) Network Management and 2) Streaming telemetry** |
| | * Uses HTTP/TCP so reliable compared to snmp |
| | * And also extremely light. It uses RPCs more efficiently than netconf (like it were issued in the target machine itself) See [[https://indico.csnog.eu/event/11/contributions/107/attachments/87/181/NETCONF_vs_gNMI_CSNOG_2022.pdf|comparison]] |
| * gRPC Network Management Interface. Is a way to interact to grpc with Standard, reduced, RPCs. | * gRPC Network Management Interface. Is a way to interact to grpc with Standard, reduced, RPCs. |
| * gnmi defines Four RPCs: | * gnmi defines Four RPCs: |
| * capabilities ("show me what you can offer") | * ''capabilities'' ("show me what you can offer") |
| * get (like a netconf get) | * ''get'' (like a netconf get) |
| * set (like a netconf set, also to update and delete) | * ''set'' (like a netconf set, also to update and delete) |
| * subscribe ( hook to a stream ) | * ''subscribe'' ( hook to a stream ) |
| * Junos in particular uses the **[[https://www.juniper.net/documentation/us/en/software/junos/interfaces-telemetry/topics/concept/open-config-grpc-junos-telemetry-interface-understanding.html|JTI client]]** which includes gNMI : //Junos Telemetry Interface Client (jtimon) is an application that can be used to collect telemetry streams from a Juniper device streaming in native format over UDP, or in OpenConfig format over gRPC.// | * Junos in particular uses the **[[https://www.juniper.net/documentation/us/en/software/junos/interfaces-telemetry/topics/concept/open-config-grpc-junos-telemetry-interface-understanding.html|JTI client]]** which includes gNMI : //Junos Telemetry Interface Client (jtimon) is an application that can be used to collect telemetry streams from a Juniper device streaming in native format over UDP, or in OpenConfig format over gRPC.// |
| |
| \\ | **Topology ( gNMI + Telegraf plugin)** |
| How to install gRPC and gNMI with junos and prometheus: | |
| \\ | |
| \\ | |
| Topoplogy:\\ | |
| Juniper-switch(junos_openconfig+network_agent) <-http/s<- prometheus-server(go JTI-client) \\ | |
| | |
| Install guides: | |
| |
| * [[https://marcelwiget.blog/2017/11/28/openconfig-and-grpc-junos-telemetry-interface/comment-page-1/|OpenConfig and gRPC Junos Telemetry Interface]] | {{:network_stuff:juniper:gnmi-n-telegraf-nx-os.png?800|}} |
| * [[https://community.juniper.net/browse/blogs/blogviewer?blogkey=e37a2402-d6e2-4e6a-8884-01638414ee3e]] | |
| |
| ---- | ---- |