📦
Kubernetes
版本1.18
,使用容器部署Prometheus-operator
版本为0.6
🏆 Prometheus基础
🍪 简介
Prometheus
与其他监控不同的特性:
- 多维的数据模型,具有由指标名称和键值对标识的时间序列
- 使用
PromQL
查询数据- 本省就是一个时序数据库,且提供本地存储和分布式存储,每个
Prometheus
都是自治的- 对云原生应用兼容,云原生应用通常保留
metrics
接口,Prometheus
可以直接通过来拿数据- 同时可以使用
PushGateway
和Push
数据(后文会说)- 提供服务动/静态服务发现机制
Prometheus
架构图
Prometheus Server
: 主要用于抓取和存储时间序列数据,同时提供擦好像和告警配置AlterManager
: 由于告警,Server
会将告警发送给AlterManager
,AlterManager
在根据路由配置告警信息发送给指定的目的,支持Grafana
: 用于更好的展示数据Push Gateway
:Prometheus
本身是通过pull
拿取数据,但是某些监控数据可能是短期的,如果没有及时采集就会出现数据丢失。客户端可以通过Push
向它发送数据,之后Prometheus
直接从它获取数据就可以解决Exporter
: 用来采集监控数据,支持很多不是"云原生"应用的数据监控,比如Mysql
可以通过mysqld_exporter
从mysql
中采集数据,Prometheus
通过mysqld_exporter
暴露的端口获取数据即可,云原生和exporter
暴露的端口通常是metrics
PromQL
: 是Prometheus
用于查询的语法类似于Sql
Service Discovery
: 用来发现监控目标的服务💻
Prometheus
安装使用
kube-prometheus
来安装由于使用的
k8s v1.18
版本比较老,如果是其他版本请自行从github
中查询对应版本兼容https://github.com/prometheus-operator/kube-prometheus1️⃣ 使用
git clone
将Prometheus-operator
克隆至本地git clone --single-branch --branch release-0.6 https://github.com/prometheus-operator/kube-prometheus.git
进入
clone
下来的目录查看[root@k8s-master prometheus]# ls build.sh example.jsonnet go.sum jsonnetfile.lock.json manifests scripts code-of-conduct.md examples hack kustomization.yaml NOTICE sync-to-internal-registry.jsonnet DCO experimental jsonnet LICENSE OWNERS tests docs go.mod jsonnetfile.json Makefile README.md test.sh [root@k8s-master prometheus]# git branch * release-0.6
2️⃣ 安装部署,进入
clone
下来的目录下的manifests
目录执行如下命令安装Prometheus Operator
[root@k8s-master manifests]# kubectl apply -f setup/
查看
operator
是否启动[root@k8s-master manifests]# kubectl get pod -n monitoring | grep prometheus-operator prometheus-operator-75c98bcfd7-lglzj 2/2 Running 2 45h
启动之后就可以部署
altermanager
等其他组件了,在manifests
直接使用下条命令,这里可以选择不按照Grafana
,只需要排除掉Grafana
的文件即可##如果不需要Granfana mv grafana-* /opt kubectl apply -f ./ ##如果需要安装直接执行如下命令即可 kubectl apply -f ./
查看是否启动,我这里是没有使用它的配置安装
Grafana
的[root@k8s-master manifests]# kubectl get pod -n monitoring NAME READY STATUS RESTARTS AGE alertmanager-main-0 2/2 Running 2 45h alertmanager-main-1 2/2 Running 2 45h alertmanager-main-2 2/2 Running 2 45h kube-state-metrics-69d4c7c69d-wdqpj 3/3 Running 3 45h node-exporter-wkdmk 2/2 Running 2 45h node-exporter-xgrf2 2/2 Running 2 45h prometheus-adapter-66b855f564-j69k6 1/1 Running 1 45h prometheus-k8s-0 3/3 Running 1 19h prometheus-k8s-1 3/3 Running 1 19h prometheus-operator-75c98bcfd7-lglzj 2/2 Running 2 45h
3️⃣ 修改
Prometheus
和Grafana svc
为NodePort
,没有安装Grafana
只需修改Prometheus
## Prometheus 将type修改为NodePort即可 kubectl edit svc prometheus-k8s -n monitoring .... sessionAffinity: ClientIP sessionAffinityConfig: clientIP: timeoutSeconds: 10800 type: NodePort .... ##Grafana 同理 kubectl edit svc grafana -n monitoring .... type: NodePort ....
分别查看
[root@k8s-master manifests]# kubectl get svc -n monitoring prometheus-k8s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE prometheus-k8s NodePort 10.104.62.57 <none> 9090:30080/TCP 45h ## 我这里之前就安装好了grafana [root@k8s-master manifests]# kubectl get svc -n loki loki-grafana NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE loki-grafana NodePort 10.100.113.131 <none> 80:31044/TCP 5d
5️⃣ 浏览器查看,输入
ip:对应端口
即可
Prometheus
:
grafana
:6️⃣ 如果是之前安装的
grafana
,不是使用kube-prometheus
安装的就需要天机Prometheus
路径为
Grafana WebUI
--->Connections
--->Data sources
--->add new data sources
配置如下拉至后面保存即可在
dashboard
中导入填写id13105
,即可获得一个炫酷的UI