我主页有k8s+docker部署
三台一起创建
mkdir prom
yum install -y unzip
第一台master拖入kube-prometheus.zip
cd prom
unzip kube-prometheus.zip
cd kube-prometheus
安装prometheus Operator
kubectl apply --server-side -f manifests/setup
然后在三台都传images.zip
unzip images.zip
cd images
导入镜像
sh imp_docker_img.sh
cd prom/kube-prometheus/
kubectl apply --server-side -f manifests/
查看空间下的所有资源:
kubectl get all -n monitoring
查看容器的状态:
kubectl get pod -n monitoring
cd
kubectl edit svc grafana -n monitoring
type:NodePort #36
查看所有
kubectl get svc -n monitoring
查看指定
kubectl get svc grafana -n monitoring
访问grafana
http://192.168.10.40:30782
修改Prometheus的Service类型修改
查看prometheus的类型
kubectl get svc -n monitoring prometheus-k8s
kubectl edit svc prometheus-k8s -n monitoring
type:NodePort #48
再次查看类型
访问prometheus
http://192.168.10.40:32323
查看监控目标
配置 Grafana Dashbord
选择数据源
添加图表
输入官方的监控模板id:13105
选择图表数据源
添加云原生监控项
添加监控组件ETCD
查看状态:
kubectl get pod -n kube-system
查看之前创建的 servicemonitors资源
kubectl get servicemonitors -A
通过 ClusterIP 访问测试
curl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/healthcheck-client.crt --key /etc/kubernetes/pki/etcd/healthcheck-client.key https://192.168.10.40:2379/metrics
创建 ETCD 证书的 Secre
kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/ca.crt --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.crt --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key
修改 prometheus 资源,应用上一步创建的 secre
kubectl edit prometheus k8s -n monitoring
在未行添加
secrets:
- etcd-certs
查看证书
kubectl -n monitoring exec -it prometheus-k8s-0 -c prometheus -- sh
ls /etc/prometheus/secrets/etcd-certs/
创建 ETCD ServiceMonitor
kubectl get pod -A | grep etcd
kubectl expose pod -n kube-system etcd-master --name=etcd-k8s --port=2379 --target-port=2379
kubectl edit svc etcd-k8s -n kube-system
创建 Etcd-ServiceMonitor.yaml
vim Etcd-ServiceMonitor.yaml
启用文件:
kubectlapply -f Etcd-ServiceMonitor.yaml
浏览器查看监控目标:
这里正常的是应该有数据的我这里是个人原因
就可以监控到etcd图表了
添加非云原生监控项
在Kubernetes中安装一个mysql
kubectl create eploy mysql --image=mysql:5.7.23
设置mysql密码
kubectl setenv deploy/mysql
MYSQL_ROOT_PASSWORD=pwd123
查看pod的状态
kubectl get pod
创建service,暴露mysql端口
kubectl expose deployment mysql --type NodePort --port=3306
kubectl getsvc -l app=mysql
访问测试
yum -yinstall mysql
进入数据库
mysql -uroot -ppwd123 -h 192.168.10.30 -P 30369
退出;
配置mysql exporter采集mysql监控文件
vim mysql-exporter.yaml
kubectl create -f mysql-exporter.yaml
kubectl get -f mysql-exporter.yaml
测试能否获取metrics数据
使用上个命令查看的IP和端口
curl 10.1.236.118:9104/metrics | tail -1
配置ServiceMonitor
vim mysql-sm.yaml
应用文件
kubectl apply -f mysql.sm.yaml
访问查看监控目标
创建模板Id:6239 查看图表