273 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| apiVersion: v1
 | |
| kind: ServiceAccount
 | |
| metadata:
 | |
|   name: promtail
 | |
|   namespace: monitoring
 | |
|   labels:
 | |
|     app.kubernetes.io/name: promtail
 | |
| ---
 | |
| apiVersion: v1
 | |
| kind: ConfigMap
 | |
| metadata:
 | |
|   name: promtail
 | |
|   namespace: monitoring
 | |
|   labels:
 | |
|     app.kubernetes.io/name: promtail
 | |
| data:
 | |
|   promtail.yaml: |
 | |
|     client:
 | |
|       backoff_config:
 | |
|         max_period: 5m
 | |
|         max_retries: 10
 | |
|         min_period: 500ms
 | |
|       batchsize: 1048576
 | |
|       batchwait: 1s
 | |
|       external_labels: {}
 | |
|       timeout: 10s
 | |
|     positions:
 | |
|       filename: /run/promtail/positions.yaml
 | |
|     server:
 | |
|       http_listen_port: 3101
 | |
|     clients:
 | |
|     - url: http://loki-distributed.auth-proxy.svc:80/loki/api/v1/push
 | |
|       external_labels:
 | |
|         kubernetes_cluster: scaleway
 | |
|     target_config:
 | |
|       sync_period: 10s
 | |
|     scrape_configs:
 | |
|     - job_name: kubernetes-pods
 | |
|       pipeline_stages:
 | |
|         - docker: {}
 | |
|         - cri: {}
 | |
|         - match:
 | |
|             selector: '{app="weave-net"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{filename=~".*konnectivity.*"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{name=~".*"} |~ ".*/healthz.*"'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{name=~".*"} |~ ".*/api/health.*"'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{name=~".*"} |~ ".*kube-probe/.*"'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="internal-proxy"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="non-auth-proxy"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="vpa"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="promtail"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="csi-node"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="victoria-metrics"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="git-sync"}'
 | |
|             action: drop
 | |
|         - match:
 | |
|             selector: '{app="ingress-nginx"}'
 | |
|             stages:
 | |
|             - json:
 | |
|                 expressions:
 | |
|                   request_host: host
 | |
|                   request_path: path
 | |
|                   request_method: method
 | |
|                   response_status: status
 | |
|             - drop:
 | |
|                 source: "request_path"
 | |
|                 value:  "/healthz"
 | |
|             - drop:
 | |
|                 source: "request_path"
 | |
|                 value:  "/health"
 | |
|             - labels:
 | |
|                 request_host:
 | |
|                 request_method:
 | |
|                 response_status:
 | |
|       kubernetes_sd_configs:
 | |
|         - role: pod
 | |
|       relabel_configs:
 | |
|         - source_labels:
 | |
|             - __meta_kubernetes_pod_controller_name
 | |
|           regex: ([0-9a-z-.]+?)(-[0-9a-f]{8,10})?
 | |
|           action: replace
 | |
|           target_label: __tmp_controller_name
 | |
|         - source_labels:
 | |
|             - __meta_kubernetes_pod_label_app_kubernetes_io_name
 | |
|             - __meta_kubernetes_pod_label_app
 | |
|             - __tmp_controller_name
 | |
|             - __meta_kubernetes_pod_name
 | |
|           regex: ^;*([^;]+)(;.*)?$
 | |
|           action: replace
 | |
|           target_label: app
 | |
|         - source_labels:
 | |
|             - __meta_kubernetes_pod_label_app_kubernetes_io_component
 | |
|             - __meta_kubernetes_pod_label_component
 | |
|           regex: ^;*([^;]+)(;.*)?$
 | |
|           action: replace
 | |
|           target_label: component
 | |
|         - action: replace
 | |
|           source_labels:
 | |
|             - __meta_kubernetes_pod_node_name
 | |
|           target_label: node_name
 | |
|         - action: replace
 | |
|           source_labels:
 | |
|             - __meta_kubernetes_namespace
 | |
|           target_label: namespace
 | |
|         - action: replace
 | |
|           replacement: $1
 | |
|           separator: /
 | |
|           source_labels:
 | |
|             - namespace
 | |
|             - app
 | |
|           target_label: job
 | |
|         - action: replace
 | |
|           source_labels:
 | |
|             - __meta_kubernetes_pod_name
 | |
|           target_label: pod
 | |
|         - action: replace
 | |
|           source_labels:
 | |
|             - __meta_kubernetes_pod_container_name
 | |
|           target_label: container
 | |
|         - action: replace
 | |
|           replacement: /var/log/pods/*$1/*.log
 | |
|           separator: /
 | |
|           source_labels:
 | |
|             - __meta_kubernetes_pod_uid
 | |
|             - __meta_kubernetes_pod_container_name
 | |
|           target_label: __path__
 | |
|         - action: replace
 | |
|           replacement: /var/log/pods/*$1/*.log
 | |
|           regex: true/(.*)
 | |
|           separator: /
 | |
|           source_labels:
 | |
|             - __meta_kubernetes_pod_annotationpresent_kubernetes_io_config_hash
 | |
|             - __meta_kubernetes_pod_annotation_kubernetes_io_config_hash
 | |
|             - __meta_kubernetes_pod_container_name
 | |
|           target_label: __path__
 | |
|         - action: labelmap
 | |
|           regex: __meta_kubernetes_pod_label_(.+)
 | |
| 
 | |
| ---
 | |
| kind: ClusterRole
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| metadata:
 | |
|   name: promtail-clusterrole
 | |
|   labels:
 | |
|     app.kubernetes.io/name: promtail
 | |
| rules:
 | |
| - apiGroups: [""] # "" indicates the core API group
 | |
|   resources:
 | |
|   - nodes
 | |
|   - nodes/proxy
 | |
|   - services
 | |
|   - endpoints
 | |
|   - pods
 | |
|   verbs: ["get", "watch", "list"]
 | |
| ---
 | |
| kind: ClusterRoleBinding
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| metadata:
 | |
|   name: promtail-clusterrolebinding
 | |
|   labels:
 | |
|     app.kubernetes.io/name: promtail
 | |
| subjects:
 | |
|   - kind: ServiceAccount
 | |
|     name: promtail
 | |
|     namespace: monitoring
 | |
| roleRef:
 | |
|   kind: ClusterRole
 | |
|   name: promtail-clusterrole
 | |
|   apiGroup: rbac.authorization.k8s.io
 | |
| ---
 | |
| 
 | |
| apiVersion: apps/v1
 | |
| kind: DaemonSet
 | |
| metadata:
 | |
|   name: promtail
 | |
|   namespace: monitoring
 | |
|   labels:
 | |
|     app.kubernetes.io/name: promtail
 | |
|   annotations:
 | |
|     configmap.reloader.stakater.com/reload: "promtail"
 | |
| spec:
 | |
|   selector:
 | |
|     matchLabels:
 | |
|       app.kubernetes.io/name: promtail
 | |
|   template:
 | |
|     metadata:
 | |
|       labels:
 | |
|         app.kubernetes.io/name: promtail
 | |
|       annotations:
 | |
|         prometheus.io/port: http-metrics
 | |
|         prometheus.io/scrape: "true"
 | |
|     spec:
 | |
|       priorityClassName: system-node-critical
 | |
|       serviceAccountName: promtail
 | |
|       containers:
 | |
|         - name: promtail
 | |
|           image: "grafana/promtail:3.5.7"
 | |
|           imagePullPolicy: IfNotPresent
 | |
|           args:
 | |
|             - "-config.file=/etc/promtail/promtail.yaml"
 | |
|           volumeMounts:
 | |
|             - name: config
 | |
|               mountPath: /etc/promtail
 | |
|             - name: run
 | |
|               mountPath: /run/promtail
 | |
|             - mountPath: /var/lib/docker/containers
 | |
|               name: docker
 | |
|               readOnly: true
 | |
|             - mountPath: /var/log/pods
 | |
|               name: pods
 | |
|               readOnly: true
 | |
|           env:
 | |
|             - name: HOSTNAME
 | |
|               valueFrom:
 | |
|                 fieldRef:
 | |
|                   fieldPath: spec.nodeName
 | |
|           ports:
 | |
|             - containerPort: 3101
 | |
|               name: http-metrics
 | |
|           securityContext:
 | |
|             readOnlyRootFilesystem: true
 | |
|             runAsGroup: 0
 | |
|             runAsUser: 0
 | |
|           readinessProbe:
 | |
|             failureThreshold: 5
 | |
|             httpGet:
 | |
|               path: /ready
 | |
|               port: http-metrics
 | |
|             initialDelaySeconds: 10
 | |
|             periodSeconds: 10
 | |
|             successThreshold: 1
 | |
|             timeoutSeconds: 1
 | |
|       tolerations:
 | |
|         - effect: NoSchedule
 | |
|           key: node-role.kubernetes.io/master
 | |
|           operator: Exists
 | |
|       volumes:
 | |
|         - name: config
 | |
|           configMap:
 | |
|             name: promtail
 | |
|         - name: run
 | |
|           hostPath:
 | |
|             path: /run/promtail
 | |
|         - hostPath:
 | |
|             path: /var/lib/docker/containers
 | |
|           name: docker
 | |
|         - hostPath:
 | |
|             path: /var/log/pods
 | |
|           name: pods
 | |
| ---
 |