30.kubernetes(k8s)笔记 Promethues(一) 部署安装

Promethues官网:
Prometheus介绍

一、Prometheus介绍

Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

二、Prometheus特点

2.1、prometheus特点
1)多维度数据模型

每一个时间序列数据都由metric度量指标名称和它的标签labels键值对集合唯一确定:这个metric度量指标名称指定监控目标系统的测量特征(如:http_requests_total- 接收http请求的总计数)。labels开启了Prometheus的多维数据模型:对于相同的度量名称,通过不同标签列表的结合, 会形成特定的度量维度实例。(例如:所有包含度量名称为/api/tracks的http请求,打上method=POST的标签,则形成了具体的http请求)。这个查询语言在这些度量和标签列表的基础上进行过滤和聚合。改变任何度量上的任何标签值,则会形成新的时间序列图。

2)灵活的查询语言(PromQL):可以对采集的metrics指标进行加法,乘法,连接等操作;

3)可以直接在本地部署,不依赖其他分布式存储;

4)通过基于HTTP的pull方式采集时序数据;

5)可以通过中间网关pushgateway的方式把时间序列数据推送到prometheus server端;

6)可通过服务发现或者静态配置来发现目标服务对象(targets)。

7)有多种可视化图像界面,如Grafana等。

8)高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G。

9)做高可用,可以对数据做异地备份,联邦集群,部署多套prometheus,pushgateway上报数据

2.2、什么是样本
样本:在时间序列中的每一个点称为一个样本(sample),样本由以下三部分组成:

指标(metric):指标名称和描述当前样本特征的 labelsets;
时间戳(timestamp):一个精确到毫秒的时间戳;
样本值(value): 一个 folat64 的浮点型数据表示当前样本的值。
表示方式:通过如下表达方式表示指定指标名称和指定标签集合的时间序列:{

例如,指标名称为 api_http_requests_total,标签为 method="POST" 和 handler="/messages" 的时间序列可以表示为:api_http_requests_total{method="POST", handler="/messages"}

Metric类型:

Counter: 一种累加的metric,如请求的个数,结束的任务数,出现的错误数等

Gauge: 常规的metric,如温度,可任意加减。其为瞬时的,与时间没有关系的,可以任意变化的数据。

Histogram: 柱状图,用于观察结果采样,分组及统计,如:请求持续时间,响应大小。其主要用于表示一段时间内对数据的采样,并能够对其指定区间及总数进行统计。根据统计区间计算

Summary: 类似Histogram,用于表示一段时间内数据采样结果,其直接存储quantile数据,而不是根据统计区间计算出来的。不需要计算,直接存储结果

PromQL 基本使用
PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中都会使用到它。在后面章节会介绍

更多请参见详情

三、Prometheus组件介绍

1)Prometheus Server: 用于收集和存储时间序列数据。

2)Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。

3)Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端,所有向promtheus server提供监控数据的程序都可以被称为exporter

4)Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。

5)Grafana:监控仪表盘,可视化监控数据

6)pushgateway: 各个目标主机可上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据。

30.kubernetes(k8s)笔记 Promethues(一) 部署安装_第1张图片

helm 部署prometheus

从官网仓库搜索prometheus 并按提示添加仓库并安装

https://artifacthub.io/

30.kubernetes(k8s)笔记 Promethues(一) 部署安装_第2张图片

  • 添加仓库
[root@k8s-master prometheus]# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
"prometheus-community" has been added to your repositories

[root@k8s-master prometheus]# helm repo update  #更新仓库
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "bitnami" chart repository
...Successfully got an update from the "prometheus-community" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈

[root@k8s-master prometheus]# helm search repo prometheus
NAME                                                  CHART VERSION    APP VERSION    DESCRIPTION                                       
bitnami/kube-prometheus                               6.1.8            0.50.0         kube-prometheus collects Kubernetes manifests t...
bitnami/prometheus-operator                           0.31.1           0.41.0         DEPRECATED The Prometheus Operator for Kubernet...
bitnami/wavefront-prometheus-storage-adapter          1.0.7            1.0.3          Wavefront Storage Adapter is a Prometheus integ...
prometheus-community/kube-prometheus-stack            18.0.10          0.50.0         kube-prometheus-stack collects Kubernetes manif...
prometheus-community/prometheus                       14.6.1           2.26.0         Prometheus is a monitoring system and time seri...
prometheus-community/prometheus-adapter               2.17.0           v0.9.0         A Helm chart for k8s prometheus adapter           
prometheus-community/prometheus-blackbox-exporter     5.0.3            0.19.0         Prometheus Blackbox Exporter  


[root@k8s-master prometheus]#  helm show readme  prometheus-community/prometheus   #安装前看下包含的组件是否合适 此版本包含的插件比较全面

[root@k8s-master prometheus]# kubectl create ns monitor
namespace/monitor created
  • 下载Chart包 根据自己需求修改values.yaml
[root@k8s-master prometheus]#  helm pull prometheus-community/prometheus
[root@k8s-master prometheus]# ls
prometheus-14.6.1.tgz 
[root@k8s-master prometheus]# tar -xf prometheus-14.6.1.tgz 
[root@k8s-master prometheus]# cd prometheus/
[root@k8s-master prometheus]# ls
Chart.lock  charts  Chart.yaml  README.md  templates  values.yaml
  • prometheus-serverprometheus-alertmanager两个字段PVC取消掉 正式环境需要先
    部署PVC存储卷
[root@k8s-master prometheus]# vim values.yaml  

 persistentVolume:
    ## If true, alertmanager will create/use a Persistent Volume Claim
    ## If false, use emptyDir
    ##
    enabled: false  #修改为false

#配置prometheus、alertmanager  ingress hosts
ingress:
    ## If true, pushgateway Ingress will be created
    ##
    enabled: true
    ingressClassName: nginx   #存在多个ingress 指定使用 ingress-nginx

    hosts: 
        - prometheus.com
...
    hosts:
        - alertmanager.com
  • 部署安装
[root@k8s-master prometheus]#  helm install prometheus  prometheus  -n monitor
NAME: prometheus
LAST DEPLOYED: Sat Sep 18 15:40:47 2021
NAMESPACE: monitor
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The Prometheus server can be accessed via port 80 on the following DNS name from within your cluster:
prometheus-server.monitor.svc.cluster.local

[root@k8s-master prometheus]# kubectl get pod  -n monitor
NAME                                             READY   STATUS    RESTARTS   AGE
prometheus-alertmanager-769488c787-h9s7z         2/2     Running   0          2d21h
prometheus-kube-state-metrics-68b6c8b5c5-fgqjg   1/1     Running   0          2d21h
prometheus-node-exporter-hfw4c                   1/1     Running   0          2d21h
prometheus-node-exporter-rzjzj                   1/1     Running   0          2d21h
prometheus-node-exporter-vhr9p                   1/1     Running   0          2d21h
prometheus-pushgateway-8655bf87b9-xwzjx          1/1     Running   0          2d21h
prometheus-server-7df4f9b485-7pz8j               2/2     Running   0          2d21h

[root@k8s-master prometheus]# kubectl get svc -n monitor
NAME                            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
prometheus-alertmanager         ClusterIP   10.96.135.142            80/TCP     2d21h
prometheus-kube-state-metrics   ClusterIP   10.96.153.83             8080/TCP   2d21h
prometheus-node-exporter        ClusterIP   None                     9100/TCP   2d21h
prometheus-pushgateway          ClusterIP   10.109.40.211            9091/TCP   2d21h
prometheus-server               ClusterIP   10.104.231.248           80/TCP     2d21h

[root@k8s-master prometheus]# kubectl get ingress -n monitor
NAME                      CLASS   HOSTS              ADDRESS           PORTS   AGE
prometheus-alertmanager   nginx   alertmanager.com   192.168.103.211   80      2d21h
prometheus-server         nginx   prometheus.com     192.168.103.211   80      2d21h

[root@k8s-master prometheus]# kubectl get svc -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.108.78.161            80:32601/TCP,443:31371/TCP   85d
ingress-nginx-controller-admission   ClusterIP   10.101.146.205           443/TCP                      85d
  • 访问主机添加hosts
    192.168.103.211 prometheus.com
  • 打开浏览器访问prometheus http://prometheus.com:32601
    30.kubernetes(k8s)笔记 Promethues(一) 部署安装_第3张图片

你可能感兴趣的:(30.kubernetes(k8s)笔记 Promethues(一) 部署安装)