2017-09-11 1 views
0

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.

+0

Können Sie den Endpunkt der Go-App '/ metrics' von dem Knoten, auf dem Prometheus ausgeführt wird, einrollen? – Gavin

+0

@Gavin Ja, wenn man Curl macht, gibt es die benutzerdefinierten Metriken verschrottet. –

+0

Das Problem ist, dass der Status des Goserver-Pods nicht verfügbar ist und "Unbekannter Drahttyp 7 für io_prometheus_client.MetricFamily" Fehler –

Antwort

0

Ich fand das Problem, eigentlich war das Problem mit rbac verwandt. Ich habe den serviceAccountName nicht in der Bereitstellungsdatei hinzugefügt. Jetzt funktioniert es gut mit der neuen Änderung.

Verwandte Themen