prometheus-数据展示之grafana部署和数据源配置

摘要:
普罗米修斯将在部署后自带cAdvisor。结果如下:2。K8S集群状态监测。需要kube状态度量插件。部署后,kubernetes.io/cluster-service:“true”将自动启用监控对象,无需配置[root@VM_0_48_centosprometheus]#catkube状态度量部署。yamlapiVersion:apps/v1kind:Deploymentmetadata:name:kube state metricsnamespace:kube systemlabels:k8s app:kube statemetricskubernetes.io/cluster-service:“true”addonmanager.kubernetes.io/mode:Concile版本:v1.30规范:选择器:匹配标签:k8s应用程序:kube状态度量版本:v1.3.0副本:1模板:元数据:标签:k8s应用程序:kube状态度量版:v1.3.0annotations:scheduler.alpha kubernetes.io/critical pod:“规范:priorityClassName:系统集群关键服务帐户名称:kube国家度量容器:-name:kube国家指标图像:quay.io/coreos/kube-state metrics:v1.3.0端口:-name:http metricscontainerPort:8080 name:telemetrycontainer端口:8081标题探测:httpGet:路径:/healthzport:8080初始延迟秒数:5超时秒数:5-name:addon resizer图像:k8s.gcr.io/addon resize:1.8.5资源:限制:cpu:100mmemory:30请求:cpu:100mmemory:30Mienv:-name:MY_POD_NAMEvalue来源:fieldRef:fieldPath:metadata.name名称:MY_ POD_NAMESPACEvalueFrom:fieldRef:fieldPath:metadata.namespacevolumeMounts:-name:config volumemountPath:/etc/configcommand:-/pod_保姆---config dir=/etc/config---container=kube状态度量--cpu=100m---额外cpu=1m---内存=100Mi---额外内存=2Mi---阈值=5---部署=kube状态量度volumes:-name:config volumeconfigMap:name:kube状态测量config---#Configmapforresourceconfiguration.apiVersion:v1kind:ConfigMapmetadata:name:kube状态度量confignamespace:kube系统标签:k8s app:kube state度量kuberne测试。io/cluster服务:“true”插件管理器。库伯内特。io/mode:协调数据:NannyConfiguration:|-apiVersion:nannyconfig/v1alpha1kind:NannyConfiguration部署结果显示:[root@VM_0_48_centosprometheus]#Kubenctlgetsvc nkube system | grepkube-state-metricskube-state-metricsClusterIP10.0.0.164<none>8080/TCP,8081/TCP3d3,节点主机监控。由于node_导出程序需要监视主机的状态,因此不建议部署容器。

1、监控pods 。   prometheus再部署以后,会自带cAdvisor。结果如下:

prometheus-数据展示之grafana部署和数据源配置第1张

2、K8S集群状态监控。需要使用kube-state-metrics插件。部署以后

 kubernetes.io/cluster-service: "true"  会自动启用监控对象,无需配置
[root@VM_0_48_centos prometheus]# cat  kube-state-metrics-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kube-state-metrics
  namespace: kube-system
  labels:
    k8s-app: kube-state-metrics
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    version: v1.3.0
spec:
  selector:
    matchLabels:
      k8s-app: kube-state-metrics
      version: v1.3.0
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: kube-state-metrics
        version: v1.3.0
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
      priorityClassName: system-cluster-critical
      serviceAccountName: kube-state-metrics
      containers:
      - name: kube-state-metrics
        image: quay.io/coreos/kube-state-metrics:v1.3.0
        ports:
        - name: http-metrics
          containerPort: 8080
        - name: telemetry
          containerPort: 8081
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
          initialDelaySeconds: 5
          timeoutSeconds: 5
      - name: addon-resizer
        image: k8s.gcr.io/addon-resizer:1.8.5
        resources:
          limits:
            cpu: 100m
            memory: 30Mi
          requests:
            cpu: 100m
            memory: 30Mi
        env:
          - name: MY_POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: MY_POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
        volumeMounts:
          - name: config-volume
            mountPath: /etc/config
        command:
          - /pod_nanny
          - --config-dir=/etc/config
          - --container=kube-state-metrics
          - --cpu=100m
          - --extra-cpu=1m
          - --memory=100Mi
          - --extra-memory=2Mi
          - --threshold=5
          - --deployment=kube-state-metrics
      volumes:
        - name: config-volume
          configMap:
            name: kube-state-metrics-config
---
# Config map for resource configuration.
apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-state-metrics-config
  namespace: kube-system
  labels:
    k8s-app: kube-state-metrics
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
data:
  NannyConfiguration: |-
    apiVersion: nannyconfig/v1alpha1
    kind: NannyConfiguration

部署结果展示:

[root@VM_0_48_centos prometheus]# kubectl  get  svc  -n  kube-system|grep kube-state-metrics   
kube-state-metrics     ClusterIP   10.0.0.164   <none>        8080/TCP,8081/TCP        3d

3、node宿主机监控。由于node_exporter  需要监控宿主机状态,不建议采用容器部署。建议采用二进制部署。解压后。

[root@VM_0_48_centos prometheus]# cat /usr/lib/systemd/system/node_exporter.service 
[Unit]
Description=prometheus

[Service]
Restart=on-failure
ExecStart=/opt/prometheus/node_exporter/node_exporter   ####需要改为自己的解压后的目录

[Install]
WantedBy=multi-user.target
[root@VM_0_48_centos prometheus]# ps -ef|grep node_exporter 
root     15748     1  0 09:47 ?        00:00:08 /opt/prometheus/node_exporter/node_exporter
root     16560  4032  0 18:47 pts/0    00:00:00 grep --color=auto node_exporter
[root@VM_0_48_centos prometheus]# 

  

4、prometheus启用监控目标

[root@VM_0_48_centos prometheus]# cat  prometheus-configmap.yaml
# Prometheus configuration format https://prometheus.io/docs/prometheus/latest/configuration/configuration/
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: EnsureExists
data:
  prometheus.yml: |
    scrape_configs:
    - job_name: prometheus
      static_configs:
      - targets:
        - localhost:9090
    - job_name: node   #####启动node_exporter
      static_configs:
        - targets: 
          - 172.19.0.48:9100  
          - 172.19.0.14:9100
          - 172.19.0.9:9100
          - 172.19.0.2:9100

    - job_name: kubernetes-apiservers
      kubernetes_sd_configs:
      - role: endpoints
      relabel_configs:
      - action: keep
        regex: default;kubernetes;https
        source_labels:
        - __meta_kubernetes_namespace
        - __meta_kubernetes_service_name
        - __meta_kubernetes_endpoint_port_name
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

    - job_name: kubernetes-nodes-kubelet
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

    - job_name: kubernetes-nodes-cadvisor
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - target_label: __metrics_path__
        replacement: /metrics/cadvisor
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

    - job_name: kubernetes-service-endpoints
      kubernetes_sd_configs:
      - role: endpoints
      relabel_configs:
      - action: keep
        regex: true
        source_labels:
        - __meta_kubernetes_service_annotation_prometheus_io_scrape
      - action: replace
        regex: (https?)
        source_labels:
        - __meta_kubernetes_service_annotation_prometheus_io_scheme
        target_label: __scheme__
      - action: replace
        regex: (.+)
        source_labels:
        - __meta_kubernetes_service_annotation_prometheus_io_path
        target_label: __metrics_path__
      - action: replace
        regex: ([^:]+)(?::d+)?;(d+)
        replacement: $1:$2
        source_labels:
        - __address__
        - __meta_kubernetes_service_annotation_prometheus_io_port
        target_label: __address__
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - action: replace
        source_labels:
        - __meta_kubernetes_namespace
        target_label: kubernetes_namespace
      - action: replace
        source_labels:
        - __meta_kubernetes_service_name
        target_label: kubernetes_name

    - job_name: kubernetes-services
      kubernetes_sd_configs:
      - role: service
      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
      relabel_configs:
      - action: keep
        regex: true
        source_labels:
        - __meta_kubernetes_pod_annotation_prometheus_io_scrape
      - 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
    alerting:
      alertmanagers:
      - static_configs:
          - targets: ["alertmanager:80"] 
    rule_files:
    - "/etc/config/alert_rules/*.yml"

5、结果展示

prometheus-数据展示之grafana部署和数据源配置第2张

6、grafana  部署

docker run -d --name=grafana -p 3000:3000 grafana/grafana 

[root@VM_0_48_centos prometheus]# docker ps -a|grep grafana 
6ea8d2852906        grafana/grafana                                                       "/run.sh"                5 hours ago         Up 5 hours                 0.0.0.0:3000->3000/tcp   grafana
[root@VM_0_48_centos prometheus]# 

6、登录grafana  配置数据源展示结果

prometheus-数据展示之grafana部署和数据源配置第3张

7 、导入展示

推荐模板:
•集群资源监控:3119
•资源状态监控:6417
•Node监控:9276

8、结果展示:

prometheus-数据展示之grafana部署和数据源配置第4张

免责声明:文章转载自《prometheus-数据展示之grafana部署和数据源配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇react 执行 yarn build ,无法直接打开dist文件下的index使用Fiddler远程抓包下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署

Dashboard是k8s的web界面,用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用、并对集群本身进行管理,在 Kubernetes Dashboard 中可以查看集群中应用的运行状态。 1、下载yaml配置文件 wget https://raw.githubusercontent.com/kubernetes/dash...

DB2命令——客户端命令连接服务器

在DB2中从客户端访问服务器端的数据库时,不能直接用connect命令,而必须先建立通信node,再在node的基础上建立数据库连接。在命令行的具体操作如下: ->db2 catalog tcpip node ABC remote serverName server 50000 ->db2 catalog db databaseName at...

Kubernetes 边缘节点抓不到监控指标?试试这个方法!

KubeSphere v3.1.0 通过集成 KubeEdge,将节点和资源的管理延伸到了边缘,也是 KubeSphere 正式支持边缘计算的第一个版本。 笔者也第一时间搭建和试用了边缘节点相关的功能,但是在边缘节点纳管之后遇到了一些监控的小问题,在排查过程中也顺带了解了一下 KubeSphere 对于边缘节点的监控原理,发出来和大家分享,方便其他的开发者...

Prometheus Node_exporter 之 Network Netstat UDP

Network Netstat UDP /proc/net/snmp 1. UDP In / Out type: GraphUnit: shortLabel: Datagrams out (-) / in (+)InDatagrams - 平均接收的 UDP 数据包(5分钟内)metrics: irate(node_netstat_Udp_InDatagr...

Meteor + node-imap(nodejs) + mailparser(nodejs) 实现完整收发邮件

版本信息: Meteor:windows MIS安装  0.6.4 node-imap:npm指定的0.8.0版,不是默认的0.7.x版。 mailparser:npm安装0.3.6 以下是记录踩到的坑: 1. 使用meteor的email来发送邮件时,设置process.env.MAIL_URL要注意,如果你的gmail账号是自己设置了domain的,如...

使用Rancher的RKE快速部署Kubernetes集群

简要说明: 本文共涉及3台Ubuntu机器,1台RKE部署机器(192.168.3.161),2台Kubernetes集群机器(3.162和3.163)。 先在Windows机器上,将rke_linux-amd64从github上下载下来,重新命名为rke ,编辑好cluster.yml集群部署文件,使用putty提供的pscp命令,将文件上传到3.161...