I've installed Prometheus and Grafana to monitor my K8S cluster and microservices using helm charts:
helm install monitoring prometheus-community/kube-promehteus-stack --values prometheus-values.yaml --version 16.10.0 --namespace monitoring --create-namespacethe content of promehteus-values.yaml is:
prometheus:
prometheusSpec:
serviceMonitorSelector:
matchLabels:
prometheus: devops
commonLabels:
prometheus: devops
grafana:
adminPassword: test123Then I installed kong-ingress-controller using helm-charts:
helm install kong kong/kong --namespace kong --create-namespace --values kong.yaml --set ingressController.installCRDs=falsethe content of kong.yaml file is:
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8100"I've also changed the value of metricsBindAdress in kube-proxy configmap to 0.0.0.0:10249 .
then I installed kong prometheus plugin using this yaml file :
apiVersion: configuration.konghq.com/v1
kind: KongClusterPlugin
metadata:
name: prometheus
annotations:
kubernetes.io/ingress.class: kong
labels:
global: "true"
plugin: prometheusMy kong endpoint is :
$ kubectl edit endpoints -n kong kong-kong-proxy
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Endpoints
metadata:
annotations:
endpoints.kubernetes.io/last-change-trigger-time: "2021-10-27T03:28:25Z"
creationTimestamp: "2021-10-26T04:44:57Z"
labels:
app.kubernetes.io/instance: kong
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: kong
app.kubernetes.io/version: "2.6"
enable-metrics: "true"
helm.sh/chart: kong-2.5.0
name: kong-kong-proxy
namespace: kong
resourceVersion: "6553623"
uid: 91f2054f-7fb9-4d63-8b65-be098b8f6547
subsets:
- addresses:
- ip: 10.233.96.41
nodeName: node2
targetRef:
kind: Pod
name: kong-kong-69fd7d7698-jjkj5
namespace: kong
resourceVersion: "6510442"
uid: 26c6bdca-e9f1-4b32-91ff-0fadb6fce529
ports:
- name: kong-proxy
port: 8000
protocol: TCP
- name: kong-proxy-tls
port: 8443
protocol: TCPFinally I wrote the serviceMonitor for kong like this :
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
generation: 1
labels:
prometheus: devops
name: kong-sm
namespace: kong
spec:
endpoints:
- interval: 30s
port: kong-proxy
scrapeTimeout: 10s
namespaceSelector:
matchNames:
- kong
selector:
matchLabels:
app.kubernetes.io/instance: kongAfter all of this ; the targets in prometheus dashboard looks like this:
What did I miss/do wrong?