I Endpunkt hinzugefügt haben /metrics
in meiner app und das ist die Konfigurationsdatei i für prometheus geschrieben habenprometheus ist die Verschrottung nicht die Metriken aus der App auf Kubernetes eingesetzt
kind: ConfigMap
metadata:
name: prometheus-config
apiVersion: v1
data:
prometheus.yml: |-
global:
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
- job_name: 'goserver'
scheme: http
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- api_server: https://kubernets.default.svc
role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
regex: goserver
action: keep
- source_labels: [__meta_kubernetes_pod_name]
target_label: k8s_pod
action: replace
und darunter ist die Bereitstellungsdatei
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: prometheus-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: prometheus-server
spec:
containers:
- name: prometheus
image: prom/prometheus:latest
args:
- "-config.file=/etc/prometheus/conf/prometheus.yml"
# Metrics are stored in an emptyDir volume which
# exists as long as the Pod is running on that Node.
# The data in an emptyDir volume is safe across container crashes.
- "-storage.local.path=/prometheus"
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-server-volume
mountPath: /etc/prometheus/conf
- name: prometheus-storage-volume
mountPath: /prometheus
volumes:
- name: prometheus-server-volume
configMap:
name: prometheus-config
- name: prometheus-storage-volume
emptyDir: {} # containers in the Pod can all read and write the same files here.
und dies ist die Bereitstellungsdatei für die App
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: server-deployment
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
app: goserver
spec:
containers:
- name: goserver
imagePullPolicy: Always
image: utkarshmani1997/goserver:v1.4
ports:
- containerPort: 8080
Ich habe den Dienst von Prometheus und Goserver auf Port 32514 und 32520 vom Typ NodePort erstellt. Dies funktioniert gut mit dem Minikube und fräst die Metriken von meiner App, aber nicht mit dem Kubeadm-Setup in der virtuellen Box (Multinode-Cluster). Welche Änderungen muss ich vornehmen, um die Messwerte auf kubernetes zu erhalten? Ich habe versucht, einige Änderungen in rbac-setup.yaml und prometheus-kubernetes.yaml auch zu machen, aber es funktioniert nicht.
Ich greife auf den Browser von ssh -NL 1234: localhost: 32514 von außerhalb des Clusters, weil Vagrant Box Ubuntu Desktop Ui nicht hat.
Können Sie den Endpunkt der Go-App '/ metrics' von dem Knoten, auf dem Prometheus ausgeführt wird, einrollen? – Gavin
@Gavin Ja, wenn man Curl macht, gibt es die benutzerdefinierten Metriken verschrottet. –
Das Problem ist, dass der Status des Goserver-Pods nicht verfügbar ist und "Unbekannter Drahttyp 7 für io_prometheus_client.MetricFamily" Fehler –