mirror of
				https://github.com/carlosedp/cluster-monitoring.git
				synced 2025-10-26 10:23:04 +01:00 
			
		
		
		
	Update readme and regenerate manifests for default Kubernetes
This commit is contained in:
		
							parent
							
								
									8ef44ef1ce
								
							
						
					
					
						commit
						aad5dd8d93
					
				
							
								
								
									
										11
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile
									
									
									
									
									
								
							| @ -27,10 +27,6 @@ deploy: manifests | |||||||
| 	sleep 40 | 	sleep 40 | ||||||
| 	kubectl apply -f ./manifests/ | 	kubectl apply -f ./manifests/ | ||||||
| 
 | 
 | ||||||
| ingressip: |  | ||||||
| 	@perl -p -i -e 's/^(\s*)\-\ host:.*/\1- host: alertmanager.${IP}.nip.io/g' manifests/ingress-alertmanager-main.yaml manifests/ingress-prometheus-k8s.yaml manifests/ingress-grafana.yaml |  | ||||||
| 	@echo "Ingress IPs changed to [service].${IP}.nip.io" |  | ||||||
| 
 |  | ||||||
| teardown: | teardown: | ||||||
| 	kubectl delete -f ./manifests/ | 	kubectl delete -f ./manifests/ | ||||||
| 
 | 
 | ||||||
| @ -50,3 +46,10 @@ ifeq (, $(shell which jsonnet)) | |||||||
| 	@go get github.com/google/go-jsonnet/cmd/jsonnet | 	@go get github.com/google/go-jsonnet/cmd/jsonnet | ||||||
| 	@go get github.com/brancz/gojsontoyaml | 	@go get github.com/brancz/gojsontoyaml | ||||||
| endif | endif | ||||||
|  | 
 | ||||||
|  | change_suffix: | ||||||
|  | 	@perl -p -i -e 's/^(\s*)\-\ host:.*/\1- host: alertmanager.${IP}.nip.io/g' manifests/ingress-alertmanager-main.yaml manifests/ingress-prometheus-k8s.yaml manifests/ingress-grafana.yaml | ||||||
|  | 	@echo "Ingress IPs changed to [service].${IP}.nip.io" | ||||||
|  | 	${K3S} kubectl apply -f manifests/ingress-alertmanager-main.yaml | ||||||
|  | 	${K3S} kubectl apply -f manifests/ingress-grafana.yaml | ||||||
|  | 	${K3S} kubectl apply -f manifests/ingress-prometheus-k8s.yaml | ||||||
|  | |||||||
| @ -69,13 +69,18 @@ Now to deploy the monitoring stack on your K3s cluster, there are three paramete | |||||||
| 
 | 
 | ||||||
| After changing these values, run `make` to build the manifests and `k3s kubectl apply -f manifests/` to apply the stack to your cluster. In case of errors on some resources, re-run the command. | After changing these values, run `make` to build the manifests and `k3s kubectl apply -f manifests/` to apply the stack to your cluster. In case of errors on some resources, re-run the command. | ||||||
| 
 | 
 | ||||||
| If you already have the manifests and don't want to rebuilt from Jsonnet, just run `make ingressip IP="[IP-ADDRESS]"` to change the IP for the ingress routes for Grafana, Prometheus and Alertmanager. Re-apply the ingress manifests after this. |  | ||||||
| 
 |  | ||||||
| Now you can open the applications: | Now you can open the applications: | ||||||
|  | 
 | ||||||
| * Grafana on [https://grafana.[your_node_ip].nip.io](https://grafana.[your_node_ip].nip.io),  | * Grafana on [https://grafana.[your_node_ip].nip.io](https://grafana.[your_node_ip].nip.io),  | ||||||
| * Prometheus on [https://prometheus.[your_node_ip].nip.io](https://prometheus.[your_node_ip].nip.io)  | * Prometheus on [https://prometheus.[your_node_ip].nip.io](https://prometheus.[your_node_ip].nip.io)  | ||||||
| * Alertmanager on [https://alertmanager.[your_node_ip].nip.io](https://alertmanager.[your_node_ip].nip.io) | * Alertmanager on [https://alertmanager.[your_node_ip].nip.io](https://alertmanager.[your_node_ip].nip.io) | ||||||
| 
 | 
 | ||||||
|  | There are some dashboards that shows no values due to some cadvisor metrics not having the complete metadata. Check the open issues for more information. | ||||||
|  | 
 | ||||||
|  | ## Updating the ingress suffixes | ||||||
|  | 
 | ||||||
|  | To avoid rebuilding all manifests, there is a make target to update the Ingress URL suffix to a different suffix (using nip.io) to match your host IP. Run `make change_suffix IP="[IP-ADDRESS]"` to change the ingress route IP for Grafana, Prometheus and Alertmanager and reapply the manifests. If you have a K3s cluster, run `make change_suffix IP="[IP-ADDRESS] K3S=k3s`. | ||||||
|  | 
 | ||||||
| ## Customizing | ## Customizing | ||||||
| 
 | 
 | ||||||
| The content of this project consists of a set of jsonnet files making up a library to be consumed. | The content of this project consists of a set of jsonnet files making up a library to be consumed. | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -96,9 +96,6 @@ spec: | |||||||
|         - mountPath: /grafana-dashboard-definitions/0/statefulset |         - mountPath: /grafana-dashboard-definitions/0/statefulset | ||||||
|           name: grafana-dashboard-statefulset |           name: grafana-dashboard-statefulset | ||||||
|           readOnly: false |           readOnly: false | ||||||
|         - mountPath: /grafana-dashboard-definitions/0/traefik-dashboard |  | ||||||
|           name: grafana-dashboard-traefik-dashboard |  | ||||||
|           readOnly: false |  | ||||||
|         - mountPath: /etc/grafana |         - mountPath: /etc/grafana | ||||||
|           name: grafana-config |           name: grafana-config | ||||||
|           readOnly: false |           readOnly: false | ||||||
| @ -171,9 +168,6 @@ spec: | |||||||
|       - configMap: |       - configMap: | ||||||
|           name: grafana-dashboard-statefulset |           name: grafana-dashboard-statefulset | ||||||
|         name: grafana-dashboard-statefulset |         name: grafana-dashboard-statefulset | ||||||
|       - configMap: |  | ||||||
|           name: grafana-dashboard-traefik-dashboard |  | ||||||
|         name: grafana-dashboard-traefik-dashboard |  | ||||||
|       - name: grafana-config |       - name: grafana-config | ||||||
|         secret: |         secret: | ||||||
|           secretName: grafana-config |           secretName: grafana-config | ||||||
|  | |||||||
| @ -17,15 +17,46 @@ spec: | |||||||
|     spec: |     spec: | ||||||
|       containers: |       containers: | ||||||
|       - args: |       - args: | ||||||
|         - --port=8080 |         - --logtostderr | ||||||
|         - --telemetry-port=8081 |         - --secure-listen-address=:8443 | ||||||
|  |         - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ||||||
|  |         - --upstream=http://127.0.0.1:8081/ | ||||||
|  |         image: carlosedp/kube-rbac-proxy:v0.4.1 | ||||||
|  |         name: kube-rbac-proxy-main | ||||||
|  |         ports: | ||||||
|  |         - containerPort: 8443 | ||||||
|  |           name: https-main | ||||||
|  |         resources: | ||||||
|  |           limits: | ||||||
|  |             cpu: 20m | ||||||
|  |             memory: 40Mi | ||||||
|  |           requests: | ||||||
|  |             cpu: 10m | ||||||
|  |             memory: 20Mi | ||||||
|  |       - args: | ||||||
|  |         - --logtostderr | ||||||
|  |         - --secure-listen-address=:9443 | ||||||
|  |         - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ||||||
|  |         - --upstream=http://127.0.0.1:8082/ | ||||||
|  |         image: carlosedp/kube-rbac-proxy:v0.4.1 | ||||||
|  |         name: kube-rbac-proxy-self | ||||||
|  |         ports: | ||||||
|  |         - containerPort: 9443 | ||||||
|  |           name: https-self | ||||||
|  |         resources: | ||||||
|  |           limits: | ||||||
|  |             cpu: 20m | ||||||
|  |             memory: 40Mi | ||||||
|  |           requests: | ||||||
|  |             cpu: 10m | ||||||
|  |             memory: 20Mi | ||||||
|  |       - args: | ||||||
|  |         - --host=127.0.0.1 | ||||||
|  |         - --port=8081 | ||||||
|  |         - --telemetry-host=127.0.0.1 | ||||||
|  |         - --telemetry-port=8082 | ||||||
|         image: carlosedp/kube-state-metrics:v1.7.2 |         image: carlosedp/kube-state-metrics:v1.7.2 | ||||||
|         name: kube-state-metrics |         name: kube-state-metrics | ||||||
|         ports: |  | ||||||
|         - containerPort: 8080 |  | ||||||
|           name: http-main |  | ||||||
|         - containerPort: 8081 |  | ||||||
|           name: http-self |  | ||||||
|         resources: |         resources: | ||||||
|           limits: |           limits: | ||||||
|             cpu: 100m |             cpu: 100m | ||||||
|  | |||||||
| @ -8,11 +8,11 @@ metadata: | |||||||
| spec: | spec: | ||||||
|   clusterIP: None |   clusterIP: None | ||||||
|   ports: |   ports: | ||||||
|   - name: http-main |   - name: https-main | ||||||
|     port: 8080 |     port: 8443 | ||||||
|     targetPort: http-main |     targetPort: https-main | ||||||
|   - name: http-self |   - name: https-self | ||||||
|     port: 8081 |     port: 9443 | ||||||
|     targetPort: http-self |     targetPort: https-self | ||||||
|   selector: |   selector: | ||||||
|     app: kube-state-metrics |     app: kube-state-metrics | ||||||
|  | |||||||
| @ -7,16 +7,18 @@ metadata: | |||||||
|   namespace: monitoring |   namespace: monitoring | ||||||
| spec: | spec: | ||||||
|   endpoints: |   endpoints: | ||||||
|   - honorLabels: true |   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | ||||||
|  |     honorLabels: true | ||||||
|     interval: 30s |     interval: 30s | ||||||
|     port: http-main |     port: https-main | ||||||
|     scheme: http |     scheme: https | ||||||
|     scrapeTimeout: 30s |     scrapeTimeout: 30s | ||||||
|     tlsConfig: |     tlsConfig: | ||||||
|       insecureSkipVerify: true |       insecureSkipVerify: true | ||||||
|   - interval: 30s |   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | ||||||
|     port: http-self |     interval: 30s | ||||||
|     scheme: http |     port: https-self | ||||||
|  |     scheme: https | ||||||
|     tlsConfig: |     tlsConfig: | ||||||
|       insecureSkipVerify: true |       insecureSkipVerify: true | ||||||
|   jobLabel: k8s-app |   jobLabel: k8s-app | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ spec: | |||||||
|     spec: |     spec: | ||||||
|       containers: |       containers: | ||||||
|       - args: |       - args: | ||||||
|         - --web.listen-address=:9100 |         - --web.listen-address=127.0.0.1:9100 | ||||||
|         - --path.procfs=/host/proc |         - --path.procfs=/host/proc | ||||||
|         - --path.sysfs=/host/sys |         - --path.sysfs=/host/sys | ||||||
|         - --path.rootfs=/host/root |         - --path.rootfs=/host/root | ||||||
| @ -24,9 +24,6 @@ spec: | |||||||
|         - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs)$ |         - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs)$ | ||||||
|         image: prom/node-exporter:v0.18.1 |         image: prom/node-exporter:v0.18.1 | ||||||
|         name: node-exporter |         name: node-exporter | ||||||
|         ports: |  | ||||||
|         - containerPort: 9100 |  | ||||||
|           name: http |  | ||||||
|         resources: |         resources: | ||||||
|           limits: |           limits: | ||||||
|             cpu: 250m |             cpu: 250m | ||||||
| @ -45,6 +42,29 @@ spec: | |||||||
|           mountPropagation: HostToContainer |           mountPropagation: HostToContainer | ||||||
|           name: root |           name: root | ||||||
|           readOnly: true |           readOnly: true | ||||||
|  |       - args: | ||||||
|  |         - --logtostderr | ||||||
|  |         - --secure-listen-address=$(IP):9100 | ||||||
|  |         - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ||||||
|  |         - --upstream=http://127.0.0.1:9100/ | ||||||
|  |         env: | ||||||
|  |         - name: IP | ||||||
|  |           valueFrom: | ||||||
|  |             fieldRef: | ||||||
|  |               fieldPath: status.podIP | ||||||
|  |         image: carlosedp/kube-rbac-proxy:v0.4.1 | ||||||
|  |         name: kube-rbac-proxy | ||||||
|  |         ports: | ||||||
|  |         - containerPort: 9100 | ||||||
|  |           hostPort: 9100 | ||||||
|  |           name: https | ||||||
|  |         resources: | ||||||
|  |           limits: | ||||||
|  |             cpu: 20m | ||||||
|  |             memory: 60Mi | ||||||
|  |           requests: | ||||||
|  |             cpu: 10m | ||||||
|  |             memory: 20Mi | ||||||
|       hostNetwork: true |       hostNetwork: true | ||||||
|       hostPID: true |       hostPID: true | ||||||
|       nodeSelector: |       nodeSelector: | ||||||
|  | |||||||
| @ -8,8 +8,8 @@ metadata: | |||||||
| spec: | spec: | ||||||
|   clusterIP: None |   clusterIP: None | ||||||
|   ports: |   ports: | ||||||
|   - name: http |   - name: https | ||||||
|     port: 9100 |     port: 9100 | ||||||
|     targetPort: http |     targetPort: https | ||||||
|   selector: |   selector: | ||||||
|     app: node-exporter |     app: node-exporter | ||||||
|  | |||||||
| @ -7,8 +7,9 @@ metadata: | |||||||
|   namespace: monitoring |   namespace: monitoring | ||||||
| spec: | spec: | ||||||
|   endpoints: |   endpoints: | ||||||
|   - interval: 30s |   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | ||||||
|     port: http |     interval: 30s | ||||||
|  |     port: https | ||||||
|     relabelings: |     relabelings: | ||||||
|     - action: replace |     - action: replace | ||||||
|       regex: (.*) |       regex: (.*) | ||||||
| @ -16,7 +17,9 @@ spec: | |||||||
|       sourceLabels: |       sourceLabels: | ||||||
|       - __meta_kubernetes_pod_node_name |       - __meta_kubernetes_pod_node_name | ||||||
|       targetLabel: instance |       targetLabel: instance | ||||||
|     scheme: http |     scheme: https | ||||||
|  |     tlsConfig: | ||||||
|  |       insecureSkipVerify: true | ||||||
|   jobLabel: k8s-app |   jobLabel: k8s-app | ||||||
|   selector: |   selector: | ||||||
|     matchLabels: |     matchLabels: | ||||||
|  | |||||||
| @ -1,14 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: Endpoints |  | ||||||
| metadata: |  | ||||||
|   labels: |  | ||||||
|     k8s-app: kube-controller-manager |  | ||||||
|   name: kube-controller-manager-prometheus-discovery |  | ||||||
|   namespace: kube-system |  | ||||||
| subsets: |  | ||||||
| - addresses: |  | ||||||
|   - ip: 192.168.99.100 |  | ||||||
|   ports: |  | ||||||
|   - name: http-metrics |  | ||||||
|     port: 10252 |  | ||||||
|     protocol: TCP |  | ||||||
| @ -12,4 +12,4 @@ spec: | |||||||
|     port: 10252 |     port: 10252 | ||||||
|     targetPort: 10252 |     targetPort: 10252 | ||||||
|   selector: |   selector: | ||||||
|     k8s-app: kube-controller-manager |     component: kube-controller-manager | ||||||
|  | |||||||
| @ -1,14 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: Endpoints |  | ||||||
| metadata: |  | ||||||
|   labels: |  | ||||||
|     k8s-app: kube-scheduler |  | ||||||
|   name: kube-scheduler-prometheus-discovery |  | ||||||
|   namespace: kube-system |  | ||||||
| subsets: |  | ||||||
| - addresses: |  | ||||||
|   - ip: 192.168.99.100 |  | ||||||
|   ports: |  | ||||||
|   - name: http-metrics |  | ||||||
|     port: 10251 |  | ||||||
|     protocol: TCP |  | ||||||
| @ -12,4 +12,4 @@ spec: | |||||||
|     port: 10251 |     port: 10251 | ||||||
|     targetPort: 10251 |     targetPort: 10251 | ||||||
|   selector: |   selector: | ||||||
|     k8s-app: kube-scheduler |     component: kube-scheduler | ||||||
|  | |||||||
| @ -8,25 +8,15 @@ metadata: | |||||||
| spec: | spec: | ||||||
|   endpoints: |   endpoints: | ||||||
|   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token |   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | ||||||
|     honorLabels: true |  | ||||||
|     interval: 30s |     interval: 30s | ||||||
|     port: https-metrics |     port: http-metrics | ||||||
|     scheme: https |     scheme: http | ||||||
|     tlsConfig: |  | ||||||
|       insecureSkipVerify: true |  | ||||||
|   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token |   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | ||||||
|     honorLabels: true |     honorLabels: true | ||||||
|     interval: 30s |     interval: 30s | ||||||
|     metricRelabelings: |  | ||||||
|     - action: drop |  | ||||||
|       regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) |  | ||||||
|       sourceLabels: |  | ||||||
|       - __name__ |  | ||||||
|     path: /metrics/cadvisor |     path: /metrics/cadvisor | ||||||
|     port: https-metrics |     port: http-metrics | ||||||
|     scheme: https |     scheme: http | ||||||
|     tlsConfig: |  | ||||||
|       insecureSkipVerify: true |  | ||||||
|   jobLabel: k8s-app |   jobLabel: k8s-app | ||||||
|   namespaceSelector: |   namespaceSelector: | ||||||
|     matchNames: |     matchNames: | ||||||
|  | |||||||
| @ -1,19 +0,0 @@ | |||||||
| apiVersion: monitoring.coreos.com/v1 |  | ||||||
| kind: ServiceMonitor |  | ||||||
| metadata: |  | ||||||
|   labels: |  | ||||||
|     k8s-app: traefik-ingress-lb |  | ||||||
|   name: traefik-ingress-lb |  | ||||||
|   namespace: monitoring |  | ||||||
| spec: |  | ||||||
|   endpoints: |  | ||||||
|   - interval: 30s |  | ||||||
|     port: admin |  | ||||||
|     scheme: http |  | ||||||
|   jobLabel: k8s-app |  | ||||||
|   namespaceSelector: |  | ||||||
|     matchNames: |  | ||||||
|     - kube-system |  | ||||||
|   selector: |  | ||||||
|     matchLabels: |  | ||||||
|       k8s-app: traefik-ingress-lb |  | ||||||
| @ -18,7 +18,7 @@ | |||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       name: 'traefikExporter', |       name: 'traefikExporter', | ||||||
|       enabled: true, |       enabled: false, | ||||||
|       file: import 'traefik.jsonnet', |       file: import 'traefik.jsonnet', | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
| @ -29,9 +29,8 @@ | |||||||
|   ], |   ], | ||||||
| 
 | 
 | ||||||
|   k3s: { |   k3s: { | ||||||
|     enabled: true, |     enabled: false, | ||||||
|     master_ip: '192.168.99.100' |     master_ip: '192.168.99.100' | ||||||
| 
 |  | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   // Domain suffix for the ingresses |   // Domain suffix for the ingresses | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user