Table of contents generated with markdown-toc
- Forked from - https://github.com/nghialv/promviz and https://github.com/nmnellis/vistio
IMesh is an application that helps you visualize the traffic of your cluster from Prometheus data.
It has 2 components:
-
IMesh-API: retrieves data from Prometheus servers, aggregates them and provides an API to get the graph data.
-
Imesh-Web: render traffic graph.
- Prometheus
- Istio 1.10+
- Generates and renders traffic graph in realtime
- Able to replay from any time in the past
- Able to generate notices on node and connection from prom query
- Provides a sidecar application for k8s that watches config changes and reload Vistio server in runtime
- Fits with Istio's metrics
Docker images of both imesh-api and imesh-web are available on Docker Hub.
- prometheusURL - the default prometheus url is assumed to be http://prometheus.istio-system:9090 based on the Istio deployment. If your Prometheus server has an internet domain, you will need to edit the yaml files and update prometheusURL value.
- UPDATE_URL - setting your imesh-api server internet domain.
- Deploy
kubectl apply -f deploy/deploy.yaml- Expose imesh-web
kubectl -n default port-forward $(kubectl -n default get pod -l app=imesh-web -o jsonpath='{.items[0].metadata.name}') 8080:8080 &-
Open IMesh localhost:8080
-
Expose imesh-api
kubectl -n default port-forward $(kubectl -n default get pod -l app=imesh-api -o jsonpath='{.items[0].metadata.name}') 9091:9091 &-
Test endpoint localhost:9091/api/graph
-
Add traffic to the mesh by following bookinfo demo here Istio Bookinfo Demo and to get the
GATEWAY_URLand calling
curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpagekubectl apply -f deploy/deploy-ingress.yamlkubectl apply -f deploy/deploy-pvc.yamlSee configuration.md in documentation directory.
-
Blank Vistio home page - this typically means that the Prometheus query at the
globallevel is not returning any data or the data is not matching the labels in the source or target configuration. Grab the globalLevel query and test it against Prometheus directly to verify the data is correct. Example global level querysum(rate(istio_requests_total[1m])) by (response_code) -
Cannot
Zoominto clusters - If you are having trouble connecting your clusters to the global view, make sure thetargetvalues in the global configuration matches the cluster level name.
- Example global level target - in this example I rename all target values to cluster1-mesh
globalLevel:
...
target:
replacement: cluster1-mesh- Example clusterLevel configuration - the cluster name
cluster1-meshmatches the target value at the global level
clusterLevel:
- cluster: cluster1-meshhttps://github.com/icyboy/imesh/releases
- 1.0.0 - Initial Release
Please feel free to create an issue or pull request.
IMesh is released under the GPL-3.0 license. See LICENSE file for details.