Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB);Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本;2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目;Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据),相比功能更完善、更全面;Prometheus性能也足够支撑上万台规模的集群 。官网地址:Prometheus - Monitoring system & time series database
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。目前官方最新版本为2-23.e版本。
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。
1、安装kubernetes
2、安装docker
所有node主机导入测试镜像
docker load < nginx-1.19.tar
docker tag nginx nginx:1.19.6
在Kubernetes集群master中创建一个pod,验证是否正常运行。
mkdir demo
cd demo
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.19.6
ports:
- containerPort: 80
执行后查看状态
kubectl create -f nginx-deployment.yaml
kubectl get pods
kubectl get pods -o wide
创建nginx负载均衡网络
vim nginx-service.yaml
kind: Service
apiVersion: v1
metadata:
name: nginx-service
spec:
selector:
app: nginx
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl create -f nginx-service.yaml
kubectl get svc
访问网页测试
在master节点/opt目录下新建pgmonitor目录
mkdir /opt/pgmonitor
cd /opt/pgmonitor
下载yaml文件到此目录
部署守护进程
kubectl create -f node-exporter.yaml
部署rbac
kubectl create -f rbac-setup.yaml
部署configmap.yaml
kubectl create -f configmap.yaml
部署prometheus.deploy.yml
kubectl create -f prometheus.deploy.yml
部署prometheus.svc.yml
查看prometheus状态
kubectl get pods -n kube-system
部署grafana-deploy.yaml
kubectl create -f grafana-deploy.yaml
部署grafana-svc.yaml
kubectl create -f grafana-svc.yaml
部署grafana-ing.yaml
kubectl create -f grafana-ing.yaml
查看Grafana状态
kubectl get pods -n kube-system
查看grafana的端口
kubectl get svc -n kube-system