Skip to content

Instantly share code, notes, and snippets.

@lin1005q
Forked from jeroenr/prometheus-on-k8s.yaml
Created December 19, 2022 14:33
Show Gist options
  • Save lin1005q/451ea4d4bf6c45a6daaf71d81cfe306f to your computer and use it in GitHub Desktop.
Save lin1005q/451ea4d4bf6c45a6daaf71d81cfe306f to your computer and use it in GitHub Desktop.

Revisions

  1. @jeroenr jeroenr created this gist Jul 1, 2019.
    230 changes: 230 additions & 0 deletions prometheus-on-k8s.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,230 @@
    apiVersion: v1
    kind: ConfigMap
    metadata:
    labels:
    app: prometheus
    name: prometheus
    data:
    prometheus.yml: |
    global:
    evaluation_interval: 1m
    scrape_interval: 1m
    scrape_timeout: 10s
    rule_files:
    - /etc/config/rules
    - /etc/config/alerts
    scrape_configs:
    - job_name: prometheus
    static_configs:
    - targets:
    - localhost:9090
    - job_name: kubernetes-services
    kubernetes_sd_configs:
    - role: service
    bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    api_server: https://kubernetes.default.svc
    tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    namespaces:
    names:
    - playground
    metrics_path: /probe
    params:
    module:
    - http_2xx
    relabel_configs:
    - action: keep
    regex: true
    source_labels:
    - __meta_kubernetes_service_annotation_prometheus_io_probe
    - source_labels:
    - __address__
    target_label: __param_target
    - replacement: blackbox
    target_label: __address__
    - source_labels:
    - __param_target
    target_label: instance
    - action: labelmap
    regex: __meta_kubernetes_service_label_(.+)
    - source_labels:
    - __meta_kubernetes_namespace
    target_label: kubernetes_namespace
    - source_labels:
    - __meta_kubernetes_service_name
    target_label: kubernetes_name
    - job_name: kubernetes-pods
    kubernetes_sd_configs:
    - role: pod
    bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    api_server: https://kubernetes.default.svc
    tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    namespaces:
    names:
    - playground
    relabel_configs:
    - action: keep
    regex: true
    source_labels:
    - __meta_kubernetes_pod_annotation_prometheus_io_scrape
    - source_labels:
    - __meta_kubernetes_pod_container_port_name
    action: keep
    regex: metrics
    - action: replace
    regex: (.+)
    source_labels:
    - __meta_kubernetes_pod_annotation_prometheus_io_path
    target_label: __metrics_path__
    - action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    source_labels:
    - __address__
    - __meta_kubernetes_pod_annotation_prometheus_io_port
    target_label: __address__
    - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)
    - action: replace
    source_labels:
    - __meta_kubernetes_namespace
    target_label: kubernetes_namespace
    - action: replace
    source_labels:
    - __meta_kubernetes_pod_name
    target_label: kubernetes_pod_name
    ---
    kind: ServiceAccount
    apiVersion: v1
    metadata:
    name: prometheus
    namespace: playground
    labels:
    app: prometheus
    kubernetes.io/cluster-service: "true"
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRole
    metadata:
    name: prometheus
    labels:
    kubernetes.io/cluster-service: "true"
    rules:
    - apiGroups:
    - ""
    resources:
    - nodes
    - nodes/metrics
    - services
    - endpoints
    - pods
    verbs:
    - get
    - list
    - watch
    - apiGroups:
    - ""
    resources:
    - configmaps
    verbs:
    - get
    - nonResourceURLs:
    - "/metrics"
    verbs:
    - get
    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
    name: prometheus
    labels:
    kubernetes.io/cluster-service: "true"
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: prometheus
    subjects:
    - kind: ServiceAccount
    name: prometheus
    namespace: playground
    ---
    kind: Deployment
    apiVersion: apps/v1
    metadata:
    name: prometheus
    spec:
    template:
    metadata:
    labels:
    name: prometheus
    annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: '9913'
    spec:
    dnsPolicy: ClusterFirst
    restartPolicy: Always
    terminationGracePeriodSeconds: 5
    serviceAccountName: prometheus
    containers:
    - name: prometheus
    image: prom/prometheus:v2.9.0
    imagePullPolicy: "IfNotPresent"
    args:
    - --config.file=/etc/config/prometheus.yml
    - --storage.tsdb.path=/prometheus-data
    - --web.console.libraries=/etc/prometheus/console_libraries
    - --web.console.templates=/etc/prometheus/consoles
    - --web.enable-lifecycle
    ports:
    - containerPort: 9090
    protocol: TCP
    resources:
    requests:
    memory: "256Mi"
    limits:
    memory: "1Gi"
    readinessProbe:
    httpGet:
    path: /-/ready
    port: 9090
    initialDelaySeconds: 30
    timeoutSeconds: 30
    livenessProbe:
    httpGet:
    path: /-/healthy
    port: 9090
    initialDelaySeconds: 30
    timeoutSeconds: 30
    volumeMounts:
    - name: config-volume
    mountPath: /etc/config
    - name: prometheus-data
    mountPath: /prometheus-data
    volumes:
    - name: config-volume
    configMap:
    name: prometheus
    - name: prometheus-data
    emptyDir: {}
    replicas: 1
    selector:
    matchLabels:
    name: prometheus
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: prometheus
    labels:
    name: prometheus
    spec:
    ports:
    - name: "prometheus"
    protocol: TCP
    port: 9090
    targetPort: 9090
    selector:
    name: prometheus
    sessionAffinity: None
    type: ClusterIP