国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)

這篇具有很好參考價(jià)值的文章主要介紹了K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

自行準(zhǔn)備一套k8s集群,如果不知道怎么搭建,可以參考一下我之前的博客
https://blog.csdn.net/qq_46902467/article/details/126660847
我的k8s集群地址是:
k8s-master1 10.0.0.10
k8s-node1 10.0.0.11
k8s-node2 10.0.0.12

一、安裝nfs服務(wù)

#10.0.0.11作為nfs服務(wù)端,10.0.0.10和10.0.0.12作為nfs客戶端

1.創(chuàng)建共享目錄
mkdir /data/nfs -p

2.安裝依賴包
yum install -y nfs-utils

3.修改/etc/exports文件,將需要共享的目錄和客戶添加進(jìn)來
cat >> /etc/exports << EOF
/data/nfs/ *(rw,sync,no_subtree_check,no_root_squash? ? ? ? # *代表所用IP都能訪問
EOF

4.啟動(dòng)nfs服務(wù),先為rpcbind和nfs做開機(jī)啟動(dòng)
systemctl start rpcbind
systemctl start nfs

#查看狀態(tài)
systemctl status nfs

#設(shè)置開機(jī)自啟
systemctl enable rpcbind
systemctl enable nfs

5.啟動(dòng)完成后,讓配置生效
exportfs –r

#查看驗(yàn)證
exportfs

二、安裝nfs客戶端

1.安裝nfs服務(wù)
yum install -y nfs-utils

2.啟動(dòng)rpcbind,設(shè)置開機(jī)自啟、客戶端不需要啟動(dòng)nfs
systemctl start rpcbind
systemctl enable rpcbind

3.檢查nfs服務(wù)端是否開啟了共享目錄
showmount -e 10.0.0.11

4、測(cè)試客戶端掛載
mount -t nfs 10.0.0.11:/data/nfs /mnt/

#查看掛載情況
df -Th

5.取消掛載
umount /mnt/

三、部署Prometheus

1.創(chuàng)建目錄
mkdir /usr/local/src/monitoring/{prometheus,grafana,alertmanager,node-exporter} -p

2.創(chuàng)建命名空間
kubectl create ns monitoring

3.創(chuàng)建PV持久化存儲(chǔ)卷? ? ? ? ? ? #偷個(gè)懶,我用的是靜態(tài)PV
cat >>/usr/local/src/monitoring/prometheus/prometheus-pv.yaml << EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: prometheus-data-pv? ? 
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    path: /data/nfs/prometheus_data
    server: 10.0.0.11
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: prometheus-data-pvc
  namespace: monitoring
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

4.創(chuàng)建RBAC
cat >> /usr/local/src/monitoring/prometheus/prometheus-rbac.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus
  namespace: monitoring
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: prometheus
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile 
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"
    addonmanager.kubernetes.io/mode: Reconcile
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus
subjects:
- kind: ServiceAccount
  name: prometheus
  namespace: monitoring
EOF

5.創(chuàng)建Prometheus監(jiān)控配置文件
cat >> /usr/local/src/monitoring/prometheus/prometheusconfig.yaml << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: monitoring
data:
  prometheus.yml: |
    global:
      scrape_interval:     15s
      evaluation_interval: 15s
    alerting:
      alertmanagers:
      - static_configs:
        - targets: ["alertmanager.monitoring.svc:9093"]
    rule_files:
      - /etc/prometheus/rules/*.yml
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
        - targets: ['localhost:9090']

      - job_name: kubeneters-coredns
        honor_labels: false
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 15s
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: kube-dns
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: metrics
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: metrics
          
      - job_name: kubeneters-apiserver
        honor_labels: false
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        scheme: https
        tls_config:
          insecure_skip_verify: false
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          server_name: kubernetes
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_component
          regex: apiserver
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_provider
          regex: kubernetes
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: https
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_component
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: https
        metric_relabel_configs:
        - source_labels:
          - __name__
          regex: etcd_(debugging|disk|request|server).*
          action: drop
        - source_labels:
          - __name__
          regex: apiserver_admission_controller_admission_latencies_seconds_.*
          action: drop
        - source_labels:
          - __name__
          regex: apiserver_admission_step_admission_latencies_seconds_.*
          action: drop
          
      - job_name: kubeneters-controller-manager
        honor_labels: false
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: kube-controller-manager
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: http-metrics
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: http-metrics
        metric_relabel_configs:
        - source_labels:
          - __name__
          regex: etcd_(debugging|disk|request|server).*
          action: drop
          
      - job_name: kubeneters-scheduler
        honor_labels: false
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: kube-scheduler
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: http-metrics
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: http-metrics

      - job_name: m-alarm/kube-state-metrics/0
        honor_labels: true
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        scrape_timeout: 30s
        scheme: https
        tls_config:
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: kube-state-metrics
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: https-main
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: https-main
        - regex: (pod|service|endpoint|namespace)
          action: labeldrop
      - job_name: m-alarm/kube-state-metrics/1
        honor_labels: false
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        scheme: https
        tls_config:
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: kube-state-metrics
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: https-self
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: https-self
          
      - job_name: kubeneters-kubelet
        honor_labels: true
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        scheme: https
        tls_config:
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: kubelet
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: https-metrics
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: https-metrics
        - source_labels:
          - __metrics_path__
          target_label: metrics_path
          
      - job_name: kubeneters-cadvisor
        honor_labels: true
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        metrics_path: /metrics/cadvisor
        scheme: https
        tls_config:
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: kubelet
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: https-metrics
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: https-metrics
        - source_labels:
          - __metrics_path__
          target_label: metrics_path
        metric_relabel_configs:
        - source_labels:
          - __name__
          regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)
          action: drop
          
      - job_name: kubeneters-node
        honor_labels: false
        kubernetes_sd_configs:
        - role: endpoints
        scrape_interval: 30s
        scheme: https
        tls_config:
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - action: keep
          source_labels:
          - __meta_kubernetes_service_label_k8s_app
          regex: node-exporter
        - action: keep
          source_labels:
          - __meta_kubernetes_endpoint_port_name
          regex: https
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Node;(.*)
          replacement: ${1}
          target_label: node
        - source_labels:
          - __meta_kubernetes_endpoint_address_target_kind
          - __meta_kubernetes_endpoint_address_target_name
          separator: ;
          regex: Pod;(.*)
          replacement: ${1}
          target_label: pod
        - source_labels:
          - __meta_kubernetes_namespace
          target_label: namespace
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: service
        - source_labels:
          - __meta_kubernetes_pod_name
          target_label: pod
        - source_labels:
          - __meta_kubernetes_service_name
          target_label: job
          replacement: ${1}
        - source_labels:
          - __meta_kubernetes_service_label_k8s_app
          target_label: job
          regex: (.+)
          replacement: ${1}
        - target_label: endpoint
          replacement: https
        - source_labels:
          - __meta_kubernetes_pod_node_name
          target_label: instance
          regex: (.*)
          replacement: $1
          action: replace

6.創(chuàng)建Prometheus告警配置文件
cat >> /usr/local/src/monitoring/prometheus/prometheus-rules.yaml  << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-rules
  namespace: monitoring
data:
  general.rules: |
    groups:
    - name: general.rules
      rules:
      - alert: InstanceDown
        expr: up == 0
        for: 1m
        labels:
          severity: error 
        annotations:
          summary: "Instance {{ $labels.instance }} 停止工作"
          description: "{{ $labels.instance }} job {{ $labels.job }} 已經(jīng)停止5分鐘以上."
  node.rules: |
    groups:
    - name: node.rules
      rules:
      - alert: NodeFilesystemUsage
        expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 80 
        for: 1m
        labels:
          severity: warning 
        annotations:
          summary: "Instance {{ $labels.instance }} : {{ $labels.mountpoint }} 分區(qū)使用率過高"
          description: "{{ $labels.instance }}: {{ $labels.mountpoint }} 分區(qū)使用大于80% (當(dāng)前值: {{ $value }})"

      - alert: NodeMemoryUsage
        expr: 100 - (node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100 > 80
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "Instance {{ $labels.instance }} 內(nèi)存使用率過高"
          description: "{{ $labels.instance }}內(nèi)存使用大于80% (當(dāng)前值: {{ $value }})"

      - alert: NodeCPUUsage    
        expr: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) > 60 
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "Instance {{ $labels.instance }} CPU使用率過高"       
          description: "{{ $labels.instance }}CPU使用大于60% (當(dāng)前值: {{ $value }})"

6.創(chuàng)建Prometheus
cat >> /usr/local/src/monitoring/prometheus/prometheus.yaml  << EOF
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: prometheus
  namespace: monitoring
  labels:
    app: prometheus
spec:
  serviceName: "prometheus"
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      securityContext:
        runAsUser: 0
      serviceAccountName: prometheus
      serviceAccount: prometheus
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: prometheus-pvc
        - name: prometheus-config
          configMap:
            name: prometheus-config
        - name: prometheus-rules
          configMap:
            name: prometheus-rules
        - name: localtime
          hostPath:
            path: /etc/localtime
      containers:
      - name: prometheus-container
        image: prom/prometheus:v2.32.1
        imagePullPolicy: Always
        command:
        - "/app/prometheus/prometheus"
        args:
        - "--config.file=/etc/prometheus/prometheus.yml"
        - "--storage.tsdb.path=/app/prometheus/data"
        - "--web.console.libraries=/app/prometheus/console_libraries"
        - "--web.console.templates=/app/prometheus/consoles"
        - "--log.level=info"
        - "--web.enable-admin-api"
        ports:
        - name: prometheus
          containerPort: 9090
        readinessProbe:
          httpGet:
            path: /-/ready
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30
        livenessProbe:
          httpGet:
            path: /-/healthy
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30
        resources:
          requests:
            cpu: 100m
            memory: 30Mi
          limits:
            cpu: 500m
            memory: 500Mi
        volumeMounts:
          - mountPath: "/app/prometheus/data"
            name: data
          - mountPath: "/etc/prometheus"
            name: prometheus-config
          - name: prometheus-rules
            mountPath: /etc/prometheus/rules
          - name: localtime
            mountPath: /etc/localtime
EOF

7.創(chuàng)建Prometheus svc
cat >> /usr/local/src/monitoring/prometheus/prometheus-svc.yaml << EOF
kind: Service
apiVersion: v1
metadata: 
  name: prometheus
  namespace: kube-system
  labels: 
    kubernetes.io/name: "Prometheus"
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec: 
  ports: 
    - name: http 
      port: 9090
      protocol: TCP
      targetPort: 9090
  selector: 
    k8s-app: prometheus
EOF

8.創(chuàng)建Prometheus-ingress
cat >> /usr/local/src/monitoring/prometheus/prometheus-ingress.yaml << EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: prometheus
  namespace: monitoring
spec:
  rules:
    - host: prometheus.com
      http:
        paths:
        - path: /
          backend:
            serviceName: prometheus
            servicePort: http
EOF

9.部署pro
metueus
kubectl apply -f /usr/local/src/monitoring/prometheus/

四、部署grafana

1.創(chuàng)建pv持久化存儲(chǔ)卷
cat >>/usr/local/src/monitoring/grafana/grafana-pv.yaml << EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: grafana-data-pv    
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    path: /data/nfs/grafana_data
    server: 10.0.0.11
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-data-pvc
  namespace: monitoring
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
EOF

2.創(chuàng)建grafana服務(wù)
cat >>/usr/local/src/monitoring/grafana/grafana.yaml << EOF
apiVersion: apps/v1 
kind: StatefulSet 
metadata:
  name: grafana
  namespace: monitoring
spec:
  serviceName: "grafana"
  replicas: 1
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
      - name: grafana
        image: grafana/grafana:8.3.3
        ports:
          - containerPort: 3000
            protocol: TCP
        resources:
          limits:
            cpu: 100m            
            memory: 256Mi          
          requests:
            cpu: 100m            
            memory: 256Mi
        volumeMounts:
          - name: grafana-data
            mountPath: /var/lib/grafana
            subPath: grafana
      securityContext:
        fsGroup: 472
        runAsUser: 472
      volumes:
        - name: grafana-data
          persistentVolumeClaim:
            claimName: grafana-pvc
EOF

3.創(chuàng)建grafana-svc
cat >>/usr/local/src/monitoring/grafana/grafana-svc.yaml << EOF
apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: monitoring
spec:
  ports:
    - name: http 
      port : 3000
      targetPort: 3000
  selector:
    app: grafana
EOF

3.創(chuàng)建grafana-ingress
cat >>/usr/local/src/monitoring/grafana/grafana-ingress.yaml << EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: grafana
  namespace: monitoring
spec:
  rules:
    - host: grafana.com
      http:
        paths:
        - path: /
          backend:
            serviceName: grafana
            servicePort: http
EOF

4.部署grafana
kubecatl apply -f /usr/local/src/monitoring/grafana/

五、部署alertmanager

1.創(chuàng)建pv持久化存儲(chǔ)卷
cat >>/usr/local/src/monitoring/alertmanager/alertmanager-pv.yaml << EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: alertmanager-data-pv    
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    path: /data/nfs/alertmanager_data
    server: 10.0.0.11
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: alertmanager-data-pvc
  namespace: monitoring
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
EOF

2.創(chuàng)建alertmangaer郵箱告警文件
cat >>/usr/local/src/monitoring/alertmanager/alertmanager-configmap.yaml << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  # 配置文件名稱
  name: alertmanager-config
  namespace: monitoring
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: EnsureExists
data:
  alertmanager.yml: |
    global:
      resolve_timeout: 5m
      # 告警自定義郵件
      smtp_smarthost: 'smtp.163.com:25'
      smtp_from: 'w.jjwx@163.com'
      smtp_auth_username: 'w.jjwx@163.com'
      smtp_auth_password: '密碼'

    receivers:
    - name: default-receiver
      email_configs:
      - to: "1965161128@qq.com"

    route:
      group_interval: 1m
      group_wait: 10s
      receiver: default-receiver
      repeat_interval: 1m
EOF

3.創(chuàng)建alertmangaer
cat >>/usr/local/src/monitoring/alertmanager/alertmanager.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alertmanager
  namespace: monitoring
  labels:
    k8s-app: alertmanager
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    version: v0.14.0
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: alertmanager
      version: v0.14.0
  template:
    metadata:
      labels:
        k8s-app: alertmanager
        version: v0.14.0
    spec:
      priorityClassName: system-cluster-critical
      containers:
        - name: prometheus-alertmanager
          image: "prom/alertmanager:v0.14.0"
          imagePullPolicy: "IfNotPresent"
          args:
            - --config.file=/etc/config/alertmanager.yml
            - --storage.path=/data
            - --web.external-url=/
          ports:
            - containerPort: 9093
          readinessProbe:
            httpGet:
              path: /#/status
              port: 9093
            initialDelaySeconds: 30
            timeoutSeconds: 30
          volumeMounts:
            - name: config-volume
              mountPath: /etc/config
            - name: storage-volume
              mountPath: "/data"
              subPath: ""
          resources:
            limits:
              cpu: 10m
              memory: 50Mi
            requests:
              cpu: 10m
              memory: 50Mi
        - name: prometheus-alertmanager-configmap-reload
          image: "jimmidyson/configmap-reload:v0.1"
          imagePullPolicy: "IfNotPresent"
          args:
            - --volume-dir=/etc/config
            - --webhook-url=http://localhost:9093/-/reload
          volumeMounts:
            - name: config-volume
              mountPath: /etc/config
              readOnly: true
          resources:
            limits:
              cpu: 10m
              memory: 10Mi
            requests:
              cpu: 10m
              memory: 10Mi
      volumes:
        - name: config-volume
          configMap:
            name: alertmanager-config
        - name: storage-volume
          persistentVolumeClaim:
            claimName: alertmanager-pvc
EOF

4.創(chuàng)建alertmangaer-svc
cat >>/usr/local/src/monitoring/alertmanager/alertmanager-svc.yaml << EOF
apiVersion: v1
kind: Service
metadata:
  name: alertmanager
  namespace: monitoring
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/name: "Alertmanager"
spec:
  ports:
    - name: http
      port: 9093
      protocol: TCP
      targetPort: 9093
  selector:
    k8s-app: alertmanager

4.創(chuàng)建alertmangaer-ingress
cat >> /usr/local/src/monitoring/alertmanager/alertmanager-ingress.yaml << EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: alertmanager
  namespace: monitoring
spec:
  rules:
    - host: alertmanager.com
      http:
        paths:
        - path: /
          backend:
            serviceName:alertmanager
            servicePort: http
EOF

5.部署alertmanager
kubectl apply -f /usr/local/src/monitoring/alertmanager/

六、部署node-exporter

cat >>/usr/local/src/monitoring/node-exporter/node-exporter-ds.yaml << EOF
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: monitoring
  labels:
    name: node-exporter
spec:
  selector:
    matchLabels:
     name: node-exporter
  template:
    metadata:
      labels:
        name: node-exporter
    spec:
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
      hostPID: true
      hostIPC: true
      hostNetwork: true # hostNetwork hostIPC hostPID都為True時(shí),表示這個(gè)Pod里的所有容器會(huì)直接使用宿主機(jī)的網(wǎng)絡(luò),直接與宿主機(jī)進(jìn)行IPC(進(jìn)程間通信通信,可以看到宿主機(jī)里正在運(yùn)行的所有進(jìn)程。
                        # 加入了hostNetwork:true會(huì)直接將我們的宿主機(jī)的9100端口映射出來,從而不需要?jiǎng)?chuàng)建service在我們的宿主機(jī)上就會(huì)有一個(gè) 9100的端口
      containers:
      - name: node-exporter
        image: prom/node-exporter:v1.3.0
        ports:
        - containerPort: 9100
        resources:
          requests:
            cpu: 0.15   # 這個(gè)容器運(yùn)行至少需要0.15核cpu
        securityContext:
          privileged: true # 開啟特權(quán)模式
        args:
        - --path.procfs=/host/proc    # 配置掛載宿主機(jī)(node節(jié)點(diǎn))的路徑
        - --path.sysfs=/host/sys      # 配置掛載宿主機(jī)(node節(jié)點(diǎn))的路徑
        - --path.rootfs=/host
        volumeMounts:                           # 將主機(jī)/dev /proc /sys 這些目錄掛在到容器中,這是因?yàn)槲覀儾杉暮芏喙?jié)點(diǎn)數(shù)據(jù)都是通過這些文件來獲取系統(tǒng)信息的。
        - name: dev
          mountPath: /host/dev
          readOnly: true
        - name: proc
          mountPath: /host/proc
          readOnly: true
        - name: sys
          mountPath: /host/sys
          readOnly: true
        - name: rootfs
          mountPath: /host
          readOnly: true
      volumes:
      - name: proc
        hostPath:
          path: /proc
      - name: dev
        hostPath:
          path: /dev
      - name: sys
        hostPath:
          path: /sys
      - name: rootfs
        hostPath:
          path: /

#部署
kubectl apply -f /usr/local/src/monitoring/node-exporter/node-exporter-ds.yaml

查看pod是否已經(jīng)running

K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)
電腦設(shè)置域名解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.11 prometheus.com grafana.comm gitlab.com alertmanager.com

七、grafana添加Prometheus源

K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)
K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)

八、添加dashboard文章來源地址http://www.zghlxwxcb.cn/news/detail-423108.html

k8s dashboard模板
ID:13105
K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)
k8s node-exporter模板
ID:8919
K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)

到了這里,關(guān)于K8s部署Prometheus+grafana+alertmanager報(bào)警監(jiān)控系統(tǒng)(持續(xù)更新)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • k8s集群部署Prometheus和Grafana

    參考https://zhaoll.blog.csdn.net/article/details/128155767 創(chuàng)建pvc 創(chuàng)建RBAC 創(chuàng)建Prometheus的configmap,也就是配置文件 創(chuàng)建Prometheus的sts和svc metrics文件 四、部署node_exporter 創(chuàng)建pvc 創(chuàng)建RBAC 創(chuàng)建sts和svc: 六、部署alarm 創(chuàng)建PVC 創(chuàng)建ConfigMap 注意替換里面的企業(yè)微信信息 創(chuàng)建Deploy和svc 配置告警規(guī)

    2024年02月12日
    瀏覽(28)
  • k8s集群監(jiān)控cadvisor+prometheus+grafana部署

    k8s集群監(jiān)控cadvisor+prometheus+grafana部署

    目錄 1.新建命名空間monitor 2.部署 2.1部署cadvisor 2.2部署node_exporter 2.3部署prometheus 2.4部署rbac權(quán)限 2.5.部署 metrics 2.6部署grafana 3.測(cè)試監(jiān)控效果 參考文章: k8s集群部署cadvisor+node-exporter+prometheus+grafana監(jiān)控系統(tǒng) - cyh00001 - 博客園 準(zhǔn)備工作: Cluster集群節(jié)點(diǎn)介紹: master:192.168.136.21(以

    2024年01月16日
    瀏覽(98)
  • 基于k8s容器化部署Prometheus和Grafana可視化監(jiān)控?cái)?shù)據(jù)

    基于k8s容器化部署Prometheus和Grafana可視化監(jiān)控?cái)?shù)據(jù)

    提示:需要提前部署k8s集群(master、node01、node02 .. ) 目錄 1.部署kube-state-metrics 2.部署node-export 3.部署nfs-pv 4.部署alertmanager ?4.1 vim alertmanager-configmap.yml 4.2 vim alertmanager-deployment.yml? ?4.3?vim alertmanager-pvc.yml ?4.4?vim alertmanager-service.yml 5.部署promethus-server 6.部署grafana 6.1.配置grafa

    2024年04月11日
    瀏覽(97)
  • 采用Prometheus+Grafana+Altermanager搭建部署K8S集群節(jié)點(diǎn)可視化監(jiān)控告警平臺(tái)

    采用Prometheus+Grafana+Altermanager搭建部署K8S集群節(jié)點(diǎn)可視化監(jiān)控告警平臺(tái)

    采用 \\\"Prometheus+Grafana\\\"的開源監(jiān)控系統(tǒng),安裝部署K8S集群監(jiān)控平臺(tái)。 并使用Altermanager告警插件,配合使用企業(yè)微信,實(shí)現(xiàn)系統(tǒng)集群監(jiān)控報(bào)警機(jī)制。 主機(jī)名稱 IP地址 安裝組件 m1 192.168.200.61 Prometheus+Grafana+Alertmanager+node_exporter m2 192.168.200.62 node_exporter m3 192.168.200.63 node_exporter n1 192

    2024年02月11日
    瀏覽(99)
  • k8s1.28.8版本配置Alertmanager報(bào)警方式(郵件,企業(yè)微信)

    k8s1.28.8版本配置Alertmanager報(bào)警方式(郵件,企業(yè)微信)

    總結(jié)部署流程 部署Alertmanager 配置Prometheus與Alertmanager通信 配置告警 prometheus指定rules目錄 ,創(chuàng)建告警yaml configmap存儲(chǔ)告警規(guī)則 configmap掛載到容器rules目錄 增加alertmanager告警配置,有倆種方式下面注意下 這里是定義誰發(fā)送這個(gè)告警信息的,誰接收這個(gè)郵件 1. 分組告警 分組告警

    2024年04月15日
    瀏覽(24)
  • Online Boutique在k8s中部署,啟用istio,配置Kiali、Jaeger、Prometheus、Grafana

    Online Boutique在k8s中部署,啟用istio,配置Kiali、Jaeger、Prometheus、Grafana

    實(shí)驗(yàn)內(nèi)容主要包括: (1)安裝kubernetes集群環(huán)境,并安裝部署dashboard,以可視化方式管理集群中的pod、service、delpoyment。 (2)將基于微服務(wù)架構(gòu)的Online Boutique應(yīng)用部署在上述kubernetes環(huán)境中。 (3)針對(duì)Online Boutique在熔斷、限流、監(jiān)控、認(rèn)證、授權(quán)、安全、負(fù)載等方面的不足,

    2024年02月03日
    瀏覽(21)
  • K8S結(jié)合Prometheus構(gòu)建監(jiān)控系統(tǒng)

    K8S結(jié)合Prometheus構(gòu)建監(jiān)控系統(tǒng)

    一、Prometheus簡(jiǎn)介 1、Prometheus基本介紹 數(shù)據(jù)模型:Prometheus 使用時(shí)間序列數(shù)據(jù)模型來存儲(chǔ)監(jiān)控?cái)?shù)據(jù)。時(shí)間序列由一個(gè)唯一的指標(biāo)名稱和一組鍵值對(duì)標(biāo)簽組成,代表了某個(gè)指標(biāo)在特定時(shí)間點(diǎn)的數(shù)值。這種數(shù)據(jù)模型非常適合度量指標(biāo)的變化和趨勢(shì)。 數(shù)據(jù)采集:Prometheus 支持多種數(shù)據(jù)

    2024年02月03日
    瀏覽(95)
  • 項(xiàng)目04-基于Docker的Prometheus+Grafana+AlertManager的飛書監(jiān)控報(bào)警平臺(tái)

    項(xiàng)目04-基于Docker的Prometheus+Grafana+AlertManager的飛書監(jiān)控報(bào)警平臺(tái)

    1.流程圖 2.拓?fù)鋱D 3.詳細(xì)介紹 項(xiàng)目名稱:基于Docker的Prometheus+Grafana+AlertManager的飛書監(jiān)控報(bào)警平臺(tái) 項(xiàng)目環(huán)境:CentOS7.9,Docker24.0.5,Prometheus2.47,Grafana10.1.2,AlertManager0.23,Nginx1.25.2,MySQL5.7.43、ansible 2.9.27等 項(xiàng)目描述:旨在構(gòu)建一個(gè)高可用的監(jiān)控和報(bào)警系統(tǒng),基于Docker技術(shù),結(jié)合

    2024年02月04日
    瀏覽(24)
  • 在k8s中快速搭建基于Prometheus監(jiān)控系統(tǒng)

    公眾號(hào)「架構(gòu)成長(zhǎng)指南」,專注于生產(chǎn)實(shí)踐、云原生、分布式系統(tǒng)、大數(shù)據(jù)技術(shù)分享 K8s本身不包含內(nèi)置的監(jiān)控工具,所以市場(chǎng)上有不少這樣監(jiān)控工具來填補(bǔ)這一空白,但是沒有一個(gè)監(jiān)控工具有prometheus全家桶使用率高,因?yàn)樗?CNCF維護(hù),已經(jīng)成為了監(jiān)控 k8s 集群的事實(shí)上的行

    2024年02月04日
    瀏覽(20)
  • 使用大衛(wèi)的k8s監(jiān)控面板(k8s+prometheus+grafana)

    使用大衛(wèi)的k8s監(jiān)控面板(k8s+prometheus+grafana)

    書接上回,對(duì)EKS(AWS云k8s)啟用AMP(AWS云Prometheus)監(jiān)控+AMG(AWS云 grafana),上次我們只是配通了EKS+AMP+AMG的監(jiān)控路徑。這次使用一位大衛(wèi)老師的grafana的面板,具體地址如下: https://grafana.com/grafana/dashboards/15757-kubernetes-views-global/ 為了想Prometheus暴露一些有用的性能指標(biāo),需要在

    2024年04月23日
    瀏覽(656)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包