zoukankan      html  css  js  c++  java
  • prometheus介绍

    1.多维度数据模型;
    时间序列数据由metrics名称和键值对来组成
    可以对数据进行聚合,切割等操作
    所有的metrics都可以设置任意的多维标签。
    2.灵活的查询语言(PromQL):可以对采集的metrics指标进行加法,乘法,连接等操作;
    3.可以直接在本地部署,不依赖其他分布式存储;
    4.通过基于HTTP的pull方式采集时序数据;
    5.可以通过中间网关pushgateway的方式把时间序列数据推送到prometheus server端;
    6.可通过服务发现或者静态配置来发现目标服务对象(targets)。
    7.有多种可视化图像界面,如Grafana等。
    8. 高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G。

    间隔

    1.Prometheus Server: 用于收集和存储时间序列数据。
    2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。
    3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端
    4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。
    5.Grafana:监控仪表盘
    6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。

    从上图可发现,Prometheus整个生态圈组成主要包括prometheus server,Exporter,pushgateway,alertmanager,grafana,Web ui界面
    
    
    Prometheus server由三个部分组成,Retrieval,Storage,PromQL
    Retrieval负责在活跃的target主机上抓取监控指标数据
    Storage存储主要是把采集到的数据存储到磁盘中
    PromQL是Prometheus提供的查询语言模块。
    
    prometheus工作流程是:
    1.    Prometheus  server可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标;也可通过pushgateway把采集的数据上报到prometheus server中;还可通过一些组件自带的exporter采集相应组件的数据;
    2.    Prometheus server把采集到的监控指标数据保存到本地磁盘或者数据库;
    3.    Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发送到alertmanager
    4.    Alertmanager通过配置报警接收方,发送报警到邮件,微信或者钉钉等
    5.    Prometheus 自带的web ui界面提供PromQL查询语言,可查询监控数据
    6.    Grafana可接入prometheus数据源,把监控数据以图形化形式展示出
    1.上传prometheus_v2_2_1.tar.gz镜像到k8s-master和k8s-node节点
    解压镜像
    docker load -i prometheus_v2_2_1.tar.gz 
    
    在k8s-node节点创建一个存储prometheus数据的目录
    mkdir /data
    chmod 777 /data/
    在k8s-master节点执行如下
    wget http://download.zhufunin.com/k8s_1.16/prometheus-cfg.yaml
    wget http://download.zhufunin.com/k8s_1.16/prometheus-deploy.yaml

    wget http://download.zhufunin.com/k8s_1.16/prometheus-svc.yaml
    kubectl apply -f prometheus-cfg.yaml
    kubectl apply -f prometheus-deploy.yaml
    kubectl apply -f prometheus-svc.yaml
    
    
    
    访问prometheus的web ui界面
    192.168.124.16:30090
    
    #ip是k8s-master节点的ip
    
    点击targets,可以看到有如下一些监控目标
    kubernetes-apiserver (1/1 up) 
    kubernetes-node (2/2 up)
    kubernetes-node-cadvisor (2/2 up)
    kubernetes-service-endpoints (2/2 up)
    
    注:prometheus热更新配置
    为了每次修改配置文件可以热加载prometheus,使配置生效,如修改prometheus-cfg.yaml,可用如下热加载命令使配置生效
    
    curl -X POST http://10.244.1.66:9090/-/reload
    10.244.1.66是prometheus的pod的ip地址
    
    配置文件解释:
    data:
      prometheus.yml: |
        global:
          scrape_interval: 15s      
    #默认值为 15s,收集数据的时间间隔,每隔15s收集一次数据,scrape_interval可以基于全局或基于单个metric定义
          scrape_timeout: 10s     
     #采集数据的超时时间,默认为10s
          evaluation_interval: 1m
    #默认为1m,对告警规则做定期计算,然后更新告警状态,evaluation_interval只有全局值,告警状态如下三种
    inactive:没有触发阈值
    pending:已触发阈值但未满足告警持续时间
    firing:已触发阈值且满足告警持续时间
    
    
        scrape_configs:
        - job_name: 'kubernetes-node'
          kubernetes_sd_configs:
          - role: node
          relabel_configs:
          - source_labels: [__address__]
            regex: '(.*):10250'
            replacement: '${1}:9100'
            target_label: __address__
            action: replace
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)
        - job_name: 'kubernetes-node-cadvisor'
          kubernetes_sd_configs:
          - role:  node
          scheme: https
          tls_config:
            ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
          relabel_configs:
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)
          - target_label: __address__
            replacement: kubernetes.default.svc:443
          - source_labels: [__meta_kubernetes_node_name]
            regex: (.+)
            target_label: __metrics_path__
            replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
        - job_name: 'kubernetes-apiserver'
          kubernetes_sd_configs:
          - role: endpoints
          scheme: https
          tls_config:
            ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
          relabel_configs:
          - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
            action: keep
            regex: default;kubernetes;https
        - job_name: 'kubernetes-service-endpoints'
          kubernetes_sd_configs:
          - role: endpoints
          relabel_configs:
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
            action: keep
            regex: true
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
            action: replace
            target_label: __scheme__
            regex: (https?)
          - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
            action: replace
            target_label: __metrics_path__
            regex: (.+)
          - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
            action: replace
            target_label: __address__
            regex: ([^:]+)(?::d+)?;(d+)
            replacement: $1:$2
          - action: labelmap
            regex: __meta_kubernetes_service_label_(.+)
          - source_labels: [__meta_kubernetes_namespace]
            action: replace
            target_label: kubernetes_namespace
          - source_labels: [__meta_kubernetes_service_name]
            action: replace
            target_label: kubernetes_name 

    间隔

    一、    Prometheus的metrics类型
    
    Prometheus有四种metrics类型:
    Counter, Gauge, Summary,Histogram
    
    Counter计数器:计数器统计的数据是递增的,不能使用计数器来统计可能减小的指标,计数器统计的指标是累计增加的,如http请求的总数,出现的错误总数,总的处理时间(如cpu累计使用时间),api请求总数,已完成的任务数等
    
    Gauge量规:量规是一种度量标准,代表可以任意上下波动的单个数值,
    用于统计cpu使用率,内存使用率,磁盘使用率,温度等指标,还可统计上升和下降的计数,如并发请求数等
    
    Histogram直方图:统计在一定的时间范围内数据的分布情况,如请求的持续/延迟时间,请求的响应大小等,还提供度量指标的总和,数据以直方图显示。
    Histogram由<basename>_bucket{le="<upper inclusive bound>"},<basename>_bucket{le="+Inf"}, <basename>_sum,<basename>_count 组成
    如:
    apiserver_request_latencies_sum
    apiserver_request_latencies_count
    apiserver_request_latencies_bucket
    
    Summary摘要:和Histogram直方图类似,主要用于表示一段时间内数据采样结果(通常是请求持续时间或响应大小之类的东西),还可计算度量值的总和和度量值的分位数以及在一定时间范围内的分位数,由 <basename>{quantile="<φ>"},<basename>_sum,<basename>_count 组成
  • 相关阅读:
    致远OA-A8协同管理软件无需登录getshell漏洞
    WordPress插件NextGEN Gallery <= 3.2.2 RCE漏洞利用(需要登录)
    Coremail邮件系统配置文件泄露漏洞
    CVE-2019-12735 VIM命令执行漏洞利用
    分享一个乌云Drops文章在线浏览的网站
    Ubuntu、Debian安装Docker CE
    一些好用的网络渗透工具和查询平台
    CVE-2017-11882 Office内存损坏漏洞利用
    Cobalt Strike入门教程-通过exe木马实现远控
    Jfinal cms前台评论XSS漏洞分析
  • 原文地址:https://www.cnblogs.com/faberbeta/p/13343662.html
Copyright © 2011-2022 走看看