With Cisco FSO Platform, metrics will be reported immediately from the code. Not like utilizing any sort of auto-instrumentation characteristic, that is helpful when a service proprietor is aware of what must be reported. A typical use case could be enabling reporting of area particular metrics – like variety of gadgets within the catalogue for e-shops, variety of unfinished orders, SQL queries to particular desk, and so forth. Mainly, something which may be attention-grabbing to look at for some time period, or in contrast amongst completely different implementation variations.
Arms-on steering on learn how to set this up
Open Telemetry has a advisable means of how the metric reporting needs to be routed to any software program. The service which will probably be reporting the information goes to ship them to the open telemetry collector, which is a fairly handy common receiver, processor and exported of (not solely) open telemetry formatted knowledge. Open Telemetry collector will then be configured to relay all the information to the FSO Platform tenant.
The very first thing that that you must safe is a FSO Platform tenant, to which the information will circulation. I occur to have one prepared, however I have to get the principal and clientId and clientSecret used to export knowledge. After logging in, I opened a “Configuration” tab, then chosen “Kubernetes and APM,” named my configuration, and adopted the data offered to me:
That needs to be all I have to configure my Open Telemetry collector.
Open Telemetric Collector configuration
Subsequent, I used Docker picture otel/opentelemetry-collector-contrib:newest, since that’s the best means for me to run the collector. All I have to do is to supply the precise configuration, which is finished by supplying –config parameter.
After some quick analysis, I made a decision to make use of the next configuration:
Then the one factor left to do is to start out the collector:
% docker run --rm -t -v $PWD/otel-config.yaml:/and so forth/otel-collector-config.yaml -p 4317:4317 otel/opentelemetry-collector-contrib:newest --config=/and so forth/otel-collector-config.yaml
The collector begins actually rapidly, I solely verified that every one the extensions I added are initialised, no errors printed out.
My go-to language is Java, so lets strive that first. Open Telemetry supplies a fairly in depth checklist of SDK libraries for any fashionable languages and runtimes. The Java SDK appears to be essentially the most mature one on that checklist. This doesn’t imply that Java is the one selection. Realistically, there’s already help for reporting Open Telemetry knowledge from any actively used language. And if not, there’s at all times an choice to report knowledge utilizing completely different receivers. For instance, you should utilize Prometheus or Zipkin help which your programming or runtime surroundings already has.
Metric Information Supply
Since I don’t have any software prepared for this experiment, I selected to do the guide instrumentation (it would more than likely be extra enjoyable anyway).
After organising a challenge and a dependency on the newest SDK model obtainable (1.29.0), I put collectively the next class package deal com.cisco.fso:
Let’s undergo some essential components of this code snippet.
First one is the Useful resource declaration. In Open Telemetry, each knowledge level must be reported within the context of a useful resource, together with metrics. Right here I’m declaring my useful resource as one thing with the attributes service.title and service.occasion.id — which is a de-facto commonplace, described as a part of the Open Telemetry semantic conventions.
Should you discover that area extra, you’ll discover numerous different conventions, defining which useful resource attributes needs to be reported for numerous elements, like container, pod, service working deployed on some cloud supplier and plenty of extra. Through the use of service.title and service.occasion.id, we’re reporting a service. On FSO Platform that is mapped to the sort apm:service_instance.
One other half price mentioning is the metric initialization. You’ll be able to see that I named my metric “my.first.metric”, set the sort to gauge, declared that will probably be reporting lengthy values, and registered a callback, which does return random lengthy values. Not very helpful, however needs to be ok to get some knowledge in.
After executing this system, you will note new logs reported by the Open Telemetry Collector we began earlier than:
Exploring ingested metrics utilizing FSO Platform
This can be a good signal that the information arrived from my Java program to the collector. Additionally, the collector comprises additional logs which recommend that it was capable of report the information to the platform. So, let’s get again to the browser and take a look at whether or not we will see reported knowledge.
Apparently my service was registered by the platform, however there are usually not a lot knowledge reported. And, any metrics that are displayed by default, are usually not populated. Why is that occuring?
All of the metrics that are there are derived from spans and traces which might be reported by any commonplace APM Service and even any framework which you’d be utilizing. The Open Telemetry SDK has good auto-discoverable options for Spring, Micronaut, and different instruments you may be utilizing. After placing some load to your service, you’ll see these. However that’s not what we need to do immediately. We need to see our essential “my.first.metric” knowledge factors.
For that, we might want to use Question Builder, a System Utility of FSO Platform, which lets you question saved knowledge immediately utilizing Unified Question Language.
FETCH metrics(dynamicmetrics:my.first.metric) FROM entities(apm:service_instance)[attributes(service.name)='manualService']
This specific question fetches the reported metric for the apm:service_instance, which was mapped from the useful resource reported utilizing the Java snippet above. It retrieves values of a metric my.first.metric and reveals them on the output. The dynamicmetrics string represents a particular namespace for metrics, which had been ingested however are usually not outlined in any of the options which the present tenant is presently subscribed to.
Clearly, that is solely the start and most of you wouldn’t be solely reporting customized metrics by hand, you’d be instrumenting code of your current purposes, infrastructure, cloud suppliers and something you’ll be able to mannequin.
Able to strive? Get acknowledged with Cisco FSO Platform
Associated sources
Share: