Comments (9)
@bzub Its fairly easy task. There are plenty of examples out there. Some thing that is close to kube-router:
https://github.com/kobolog/gorb/blob/master/core/prometheus_exporter.go
I will start workign on this as well. We shall coordinate and get this out.
from kube-router.
metrics exposed as http://nodeip:8080/metrics
# HELP kube_router_service_backend_active_connections Active conntection to backend of service
# TYPE kube_router_service_backend_active_connections gauge
kube_router_service_backend_active_connections{backend="100.96.1.2",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_active_connections{backend="100.96.1.3",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_active_connections{backend="100.96.1.4",namespace="default",service_name="frontend"} 0
kube_router_service_backend_active_connections{backend="100.96.1.5",namespace="default",service_name="frontend"} 0
kube_router_service_backend_active_connections{backend="100.96.2.3",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_active_connections{backend="100.96.2.4",namespace="default",service_name="redis-master"} 1
kube_router_service_backend_active_connections{backend="100.96.2.5",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_active_connections{backend="100.96.2.6",namespace="default",service_name="frontend"} 0
kube_router_service_backend_active_connections{backend="172.20.51.157",namespace="default",service_name="kubernetes"} 1
# HELP kube_router_service_backend_inactive_connections Active conntection to backend of service
# TYPE kube_router_service_backend_inactive_connections gauge
kube_router_service_backend_inactive_connections{backend="100.96.1.2",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_inactive_connections{backend="100.96.1.3",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_inactive_connections{backend="100.96.1.4",namespace="default",service_name="frontend"} 0
kube_router_service_backend_inactive_connections{backend="100.96.1.5",namespace="default",service_name="frontend"} 0
kube_router_service_backend_inactive_connections{backend="100.96.2.3",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_inactive_connections{backend="100.96.2.4",namespace="default",service_name="redis-master"} 2
kube_router_service_backend_inactive_connections{backend="100.96.2.5",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_inactive_connections{backend="100.96.2.6",namespace="default",service_name="frontend"} 0
kube_router_service_backend_inactive_connections{backend="172.20.51.157",namespace="default",service_name="kubernetes"} 0
from kube-router.
Basic framework is in place. Need to expose metrics further that make sense.
from kube-router.
some other possible metrics from ipvs service and endpoint details
PacketsIn
PacketsOut
PPSIn
PPSOut
from kube-router.
@bzub any idea how to make prometheus scrap metrics exposed by kube-router, i am using https://github.com/coreos/blog-examples/blob/master/monitoring-kubernetes-with-prometheus/prometheus.yml. Need to test with prometheus , and details into documentaton.
from kube-router.
added PPS in and out metrics
# HELP kube_router_service_backend_pps_in Incoming packets per second
# TYPE kube_router_service_backend_pps_in gauge
kube_router_service_backend_pps_in{backend="100.96.1.3",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_pps_in{backend="100.96.1.4",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_pps_in{backend="100.96.1.5",namespace="default",service_name="frontend"} 0
kube_router_service_backend_pps_in{backend="100.96.1.6",namespace="default",service_name="frontend"} 0
kube_router_service_backend_pps_in{backend="100.96.2.2",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_pps_in{backend="100.96.2.3",namespace="default",service_name="redis-master"} 1
kube_router_service_backend_pps_in{backend="100.96.2.4",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_pps_in{backend="100.96.2.5",namespace="default",service_name="frontend"} 0
kube_router_service_backend_pps_in{backend="172.20.34.93",namespace="default",service_name="kubernetes"} 2
# HELP kube_router_service_backend_pps_out Outoging packets per second
# TYPE kube_router_service_backend_pps_out gauge
kube_router_service_backend_pps_out{backend="100.96.1.3",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_pps_out{backend="100.96.1.4",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_pps_out{backend="100.96.1.5",namespace="default",service_name="frontend"} 0
kube_router_service_backend_pps_out{backend="100.96.1.6",namespace="default",service_name="frontend"} 0
kube_router_service_backend_pps_out{backend="100.96.2.2",namespace="kube-system",service_name="kube-dns"} 0
kube_router_service_backend_pps_out{backend="100.96.2.3",namespace="default",service_name="redis-master"} 1
kube_router_service_backend_pps_out{backend="100.96.2.4",namespace="default",service_name="redis-slave"} 0
kube_router_service_backend_pps_out{backend="100.96.2.5",namespace="default",service_name="frontend"} 0
kube_router_service_backend_pps_out{backend="172.20.34.93",namespace="default",service_name="kubernetes"} 2
from kube-router.
@murali-reddy
in the kube-router deployment we can add the following annotations
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
Supported annotations are:
prometheus.io/scrape
: Only scrape services that have a value oftrue
prometheus.io/scheme
: If the metrics endpoint is secured then you will need
to set this tohttps
& most likely set thetls_config
of the scrape config.prometheus.io/path
: If the metrics path is not/metrics
override this.prometheus.io/port
: If the metrics are exposed on a different port to the
service then set this appropriately.
If prometheus is setup to use SD for K8S api it will then scrape the metrics from the pods.
Once i verify my changes in #288 works i will add some more docs regarding how to use this function
from kube-router.
I have tested #288 in my local cluster and have gotten auto scraping & SD to work on custom ports & paths
Docs for the steps needed is added in PR #289
from kube-router.
With #294 we have a framework in place for this and i suggest we close the issue and create a new if we want to extend the current metrics
from kube-router.
Related Issues (20)
- Pods with hostNetwork=true can't connect to Kube API Server HOT 3
- Routing issue in IPv6-Only cluster HOT 6
- v2.1.1: TCPMSS not setup with DSR HOT 2
- Bug in network policy ipsets when using dualStack HOT 2
- . HOT 1
- Initial BGP sync during kube-router startup extremely slow in kubernetes v1.29 HOT 6
- /var/lib/kube-router/kubeconfig does not regenerate when configmap changes are made HOT 3
- kube-router crashloop backoff without obvious cause on brand new cluster HOT 8
- v2.1: DSR+TCPMSS with non-ready services not set-up correctly HOT 6
- Globally enable hairpin mode for externalIPs HOT 2
- kube-router should cleanup rules it does not handle anymore in its chains HOT 2
- kube-router duplicates rules in the KUBE-ROUTER-INPUT chain HOT 3
- Custom ipset sets and entries get reverted periodically HOT 12
- Creating LoadBalancer service blocks API server IP HOT 12
- IPv6 Error: `unknown option "--icmpv6-type"`
- Unable To Route to IPv6 Service VIPs from Same Node
- Service traffic being dropped when NetworkPolicy is present HOT 2
- Unknown option "--icmp-type" HOT 3
- Seeking New Maintainers HOT 3
- documentation/DSR examples: mount directory containing the socket instead the socket directly HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kube-router.