what will be best approach for service monitor in spring cloud - spring-cloud

I am now using spring cloud to build micro service application, and now I need to create service monitoring solution to dynamically check status for each micro-service.
I am not seeing this supported in spring cloud, but I did see NetFlix is providing Srvo, does anyone ever used it or can anyone give some good suggestions on what will be best solution to monitor status for all the micro-services?
Thanks

Spring Cloud Netflix adds servo metrics to the standard spring boot /metrics actuator endpoint. See Spring Boot Production Ready Metrics to see about a MetricRepository. Here is some documentation on using redis. See this project for an example configuration.

Related

Spring Cloud Eureka/Spring Cloud Config integration

Can Spring Cloud Eureka get some of its properties from Spring Cloud Config with our microservices utilizing Discovery First Bootstrap? So, our Spring Cloud Config microservices start up and attempt to register with our Spring Cloud Eureka microservices so they can be discovered, while Spring Cloud Eureka microservices start up and attempt to get some of their configuration properties from the Spring Cloud Config microservices. This is the ideal scenario I'm trying to implement, but it makes sense to me that this would result in both sets of microservices waiting on each other, resulting in a deadlocked state. It's important to note that we have three Spring Cloud Eureka instances running as peers, giving us an HA configuration, as well as three Spring Cloud Config instances. With all eureka.* properties in the Spring Cloud Eureka bootstrap.yml, everything starts fine, and the peers are able to replicate with each other. However, as soon as I configure Spring Cloud Eureka to get its properties from Spring Cloud Config, each instance fails to connect to its peers.
So, my main question is whether or not this configuration even makes sense, and if so, where is the documentation that covers such a configuration?

LoadBalancing Spring cloud data flow server

In spring cloud dataflow, as per my understanding each stream is a microservice but the dataflow server is not. Am I right?
Is it possible to have multiple instances of spring cloud dataflow(SCDF) server? How to loadbalance the dataflow server? I am planning to deploy it in AWS.The official documentation didn't mention anything about loadbalancing of dataflow server. If it is possible how do Dashboard, shell works?
The SCDF-server is a regular Spring MVC + Spring Boot application that serves the REST-APIs, DSL commands, UI, and repository access for stream/task metadata persistence.
In platforms like Cloud Foundry, Kubernetes and others, upon scaling the SCDF-server, the platform automatically handles traffic routing and load-balancing.
If you were to orchestrate the deployment on your own and on AWS, you'd have to plug a load-balancer in front of the server instances. The shell, UI, and REST-APIs would hit the load-balancer instead, to interact with the SCDF-server.

Spring boot and prometheus

I am trying to figure out how to best collect metrics from a set of spring boot based services running within a Kubernetes cluster. Looking at the various docs, it seems that the choice for internal monitoring is between Actuator or Spectator with metrics being pushed to an external collection store such as Redis or StatsD or pulled, in the case of Prometheus.
Since the number of instances of a given service is going to vary, I dont see how Prometheus can be configured to poll those running services since it will lack knowledge of them. I am also building around a Eureka service registry so not sure if that is polled first in this configuration.
Any real world insight into this kind of approach would be welcome.
You should use the Prometheus java client (https://www.robustperception.io/instrumenting-java-with-prometheus/) for instrumenting. Approaches like redis and statsd are to be avoided, as they mean hitting the network on every single event - greatly limiting what you can monitor.
Use file_sd service discovery in Prometheus to provide it with a list of targets from Eureka (https://www.robustperception.io/using-json-file-service-discovery-with-prometheus/), though if you're using Kubernetes like your tag hints Prometheus has a direct integration there.

Eureka to Consul issue for spring cloud

We are moving our large set of eureka based microservices to consul based discovery.
There was one feature of the eureka version of spring cloud that we were used. You could register a specific hostname such as "hostname: blah".
Is a capability like that present in the spring cloud consul version?
You can set spring.cloud.consul.discovery.hostname. It's not documented, but it should show in IDE auto-complete with the note on what it is for.
See ConsulDiscoveryProperties.

Discovery of Hystrix endpoints in Kubernetes (etcd)?

We're migrating to Kubernetes and many of our services are using Hystrix which expose a stream of server sent event data consumed by Turbine and visualized by a Hystrix Dashboard. I'd like to implement a service discovery plugin to Turbine which auto discovers our Hystix streams running on Kubernetes.
Would it be a good idea to use labels for this? I.e. define a label that includes the path to the hystrix stream for each pod using Hystrix?
If labels are not a good idea, what would be?
I had the same problem and I created a little project to address it.
essentially I implemented a hystric instance discovery class to work with kubernetes services.
You can find my project here.
This projects is in its infancy so bugs are likely. Feedback it welcome.
Thanks
Raffaele
How about making Hystrix a Kubernetes service?Kubernetes has two suggested ways to discover services: https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/services.md#discovering-services