当前位置: 首页>编程语言>正文

springboot 普罗米修斯版本 普罗米修斯 jvm


文章目录

  • 普罗米修斯容器化与PromQL
  • 普罗米修斯容器化
  • 1.下载配置清单
  • 2.部署operator
  • 3.部署普罗米修斯
  • 4.配置域名访问
  • 5.部署并解析
  • Prom QL
  • 1.简单运算
  • 2.聚合运算
  • 逻辑运算
  • and 并且
  • or 或者
  • unless 排除
  • 聚合函数
  • sum : 求和运算
  • min:求最小值
  • max:求最大值
  • avg:求平均数
  • stddev计算标准差
  • stdevar计算极方差
  • count:统计总个数
  • 分类计算个数
  • 获取最小的两个值
  • 获取最大的两个值
  • 求某个位置上的数
  • 3.特殊查询
  • 升序
  • 倒序


普罗米修斯容器化与PromQL

普罗米修斯容器化,就是在kubernetes中安装。

普罗米修斯容器化

1.下载配置清单

# 克隆配置清单到本地
[root@kubernetes-master-01 ~]# git clone -b release-0.5 --single-branch https://github.com/prometheus-operator/kube-prometheus.git

2.部署operator

  • operator:普罗米修斯的管理插件
# 部署
[root@kubernetes-master-01 ~]# cd kube-prometheus/
[root@kubernetes-master-01 setup]# kubectl apply -f /root/kube-prometheus/manifests/setup/

# 查看部署
[root@kubernetes-master-01 setup]# kubectl get pods -n monitoring 
NAME                                   READY   STATUS    RESTARTS   AGE
prometheus-operator-848d669f6d-qcxhc   2/2     Running   0          45s

3.部署普罗米修斯

# 部署
[root@kubernetes-master-01 setup]# cd ..
[root@kubernetes-master-01 manifests]# kubectl apply -f /root/kube-prometheus/manifests

# 查看部署
[root@k8s-master1 ~]# kubectl get pod -n monitoring -o wide
NAME                                   READY   STATUS    RESTARTS   AGE   IP              NODE       
alertmanager-main-0                    2/2     Running   0          27m   10.244.1.91     k8s-node1   
alertmanager-main-1                    2/2     Running   0          27m   10.244.2.63     k8s-node2   
alertmanager-main-2                    2/2     Running   0          27m   10.244.2.64     k8s-node2   
grafana-5d9d5f67c4-4l759               1/1     Running   0          26m   10.244.1.94     k8s-node1   
kube-state-metrics-7fddf8779f-2xwm8    3/3     Running   0          26m   10.244.1.92     k8s-node1   
node-exporter-hngsd                    2/2     Running   0          26m   192.168.12.13   k8s-node2   
node-exporter-pvdfc                    2/2     Running   0          26m   192.168.12.11   k8s-master1 
node-exporter-zkf2w                    2/2     Running   0          26m   192.168.12.12   k8s-node1   
prometheus-adapter-cb548cdbf-hdjvc     1/1     Running   0          26m   10.244.2.66     k8s-node2   
prometheus-k8s-0                       3/3     Running   1          26m   10.244.1.93     k8s-node1   
prometheus-k8s-1                       3/3     Running   0          26m   10.244.2.65     k8s-node2
prometheus-operator-848d669f6d-knk9r   2/2     Running   0          27m   10.244.1.90     k8s-node1   

# 查看svc
[root@k8s-master1 ~]# kubectl get svc -n monitoring 
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
alertmanager-main       ClusterIP   10.101.62.75    <none>        9093/TCP                     4m59s
alertmanager-operated   ClusterIP   None            <none>        9093/TCP,9094/TCP,9094/UDP   5m
grafana                 ClusterIP   10.101.1.197    <none>        3000/TCP                     4m16s
kube-state-metrics      ClusterIP   None            <none>        8443/TCP,9443/TCP            4m16s
node-exporter           ClusterIP   None            <none>        9100/TCP                     4m15s
prometheus-adapter      ClusterIP   10.98.124.167   <none>        443/TCP                      4m14s
prometheus-k8s          ClusterIP   10.108.159.34   <none>        9090/TCP                     4m12s
prometheus-operated     ClusterIP   None            <none>        9090/TCP                     4m11s
prometheus-operator     ClusterIP   None            <none>        8443/TCP                     5m22s

4.配置域名访问

  • 给grafana、prometheus建立ingress配置域名访问:
  • grafana域名:www.grafana.monitoring.cluster.local.com
  • prometheus域名:www.prometheus-k8s.monitoring.cluster.local.com
cat > /root/kube-prometheus/manifests/prometheus-ingress.yaml <EOF
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: prometheus-k8s
  namespace: monitoring
spec:
  rules:
    - host: "www.prometheus-k8s.monitoring.cluster.local.com"
      http:
        paths:
          - backend:
              serviceName: prometheus-k8s
              servicePort: 9090
            path: /
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: grafana
  namespace: monitoring
spec:
  rules:
    - host: "www.grafana.monitoring.cluster.local.com"
      http:
        paths:
          - backend:
              serviceName: grafana
              servicePort: 3000
            path: /
EOF

5.部署并解析

  • 域名添加至hosts解析
# 部署
[root@k8s-master1 manifests]# kubectl apply -f prometheus-ingress.yaml

# 获取域名
[root@k8s-master1 manifests]# kubectl get -f prometheus-ingress.yaml 
NAME             CLASS    HOSTS                                             ADDRESS         PORTS 
prometheus-k8s   <none>   www.prometheus-k8s.monitoring.cluster.local.com   192.168.12.13   80    
grafana          <none>   www.grafana.monitoring.cluster.local.com          192.168.12.13   80     

# 获取端口:31400
[root@k8s-master1 manifests]# kubectl get svc -n ingress-nginx | grep 80
NodePort    10.104.40.59   <none>        80:31400/TCP,443:32142/TCP   42h

# 域名配合端口访问:
www.prometheus-k8s.monitoring.cluster.local.com:31400	# 普罗米修斯
www.grafana.monitoring.cluster.local.com:31400		    # grafana

Prom QL

QL顾名思义,Query language即查询语言。Prometheus作为强大的开源监控系统,最大的依赖便是PromQL。是监控数据个性化查询、展示的基础。所以要掌握Prometheus,掌握PromQL是必备的前提。

瞬时向量:包含该时间序列中最新的⼀个样本值
区间向量:⼀段时间范围内的数据

  • 官方帮助文档:https://prometheus.io/docs/prometheus/latest/querying/operators/

1.简单运算

+ - * / % ^
=:选择正好相等的字符串标签
!=:选择不相等的字符串标签
=~:选择匹配正则表达式的标签(或⼦标签)
!~:选择不匹配正则表达式的标签(或⼦标签)
^ :次方

s:seconds
m:minutes
h:hours
d:days
w:weeks
y:years
  • 查询5分钟以内的数据 [5m]

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_TCP,第1张

  • 添加普罗米修斯数据源,解析为url填入grafana
# 
[root@k8s-master1 manifests]# kubectl run test -it --rm --image=busybox:1.28.3
/ # nslookup prometheus-k8s.monitoring
Name:      prometheus-k8s.monitoring
Address 1: 10.108.159.34 prometheus-k8s.monitoring.svc.cluster.local

# 加上http与端口结尾:
http://prometheus-k8s.monitoring.svc.cluster.local:9090

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_02,第2张

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_TCP_03,第3张

  • 查询30分钟以前的数据 offset 30m
  • 等于查询 =
  • 不等于查询 !=
  • 正则匹配 =~
  • 正则取反 !~
  • 计算服务器内存空闲率
  • 计算空闲内存小于1G
  • 计算空闲内存等于一个数字

2.聚合运算

逻辑运算
  • and
  • or
  • unless
and 并且

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_04,第4张

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_数据_05,第5张

or 或者

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_TCP_06,第6张

unless 排除

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_四舍五入_07,第7张

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_08,第8张

聚合函数
sum(计算尺寸的总和)
min(选择最小尺寸)
max(选择最大尺寸)
avg(计算平均尺寸)
group(生成的矢量中的所有值为1)
stddev(计算人口标准偏离尺寸)
stdvar(计算人口标准与尺寸的差异)
count(计算矢量中的元素数)
count_values(计算具有相同值的元素数量)
bottomk(按样本值分示的最小 k 元素)
topk(按样本值分示的最大 k 元素)
quantile(计算φ-量子(0≤ φ ≤1)超过尺寸
sum : 求和运算
  • 如:统计请求的和,也许一条数据有多条请求(运算)
min:求最小值

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_TCP_09,第9张

max:求最大值

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_10,第10张

avg:求平均数

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_数据_11,第11张

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_数据_12,第12张

stddev计算标准差
  • 最大值-最小值=结果,结果越小越稳定,波动小

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_13,第13张

stdevar计算极方差

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_14,第14张

count:统计总个数
  • 如:统计请求的所有条数共有多少条(计数)
分类计算个数

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_数据_15,第15张

获取最小的两个值

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_16,第16张

获取最大的两个值

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_四舍五入_17,第17张

求某个位置上的数

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_TCP_18,第18张

二进制运算符优先级

^
*,/,%
+, -
==,!=,<=,<,>=,>
and, unless
or

3.特殊查询

格式:命令(查询值)

# 查询某个字段
sum(http_request_total)by(job)

# 计算范围向量中时间序列的增加
increase(http_request_total{job="grafana"}[1m])

# 计算范围向量中,时间序列的每秒平均平均增长率
rate(http_request_total[1d])

# 计算范围向量中,时间序列的每秒平均平均增长率
irate(http_request_total[1d])

# 四舍五入,化零为整
round(node_memory_CommitLimit_bytes / 1024^2)

# 四舍五入 向上(只要有小数,就进1)
ceil(predict_linear(node_filesystem_files[1d],4*3600*24) / 1024^2)

# 四舍五入 向下(只要有小数,就去除)
floor(predict_linear(node_filesystem_files[1d],4*3600*24) / 1024^2)

# 基于一天的值,推算四天后三个node节点所剩内存
predict_linear(node_filesystem_files[1d],4*3600*24) / 1024^2
升序
sort(http_request_total)
倒序
sort_desc(http_request_total)
  • 创建一个新字段

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_19,第19张

  • 基于范围向量预测从现在开始到某个时间的资源消耗情况

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_springboot 普罗米修斯版本_20,第20张

  • 四舍五入(向上)

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_TCP_21,第21张

  • 四舍五入(向下)

springboot 普罗米修斯版本 普罗米修斯 jvm,springboot 普罗米修斯版本 普罗米修斯 jvm_数据_22,第22张



https://www.xamrdz.com/lan/5td1934161.html

相关文章: