promethues-部署篇

Promethues调测记录

一、目标:

  1. promethues应用部署

  1. 监控维度: 主机,pod层,应用参数层

  1. 告警配置(邮件短信)

  1. 页面监控调配

二、部署过程

1、根据集群版本选择对应的promethues operator版本,这里选择0.9版本

2、下载operator包,切换到0.9分支

git clone https://github.com/prometheus-operator/kube-prometheus.git

git checkout v.0.9.0

3、创建CRDs资源

进入manifests/setup目录,由于集群已经存在一套promethues集群,需要作一些修改:

  1. 修改所有以Definition.yaml结尾的文件(纯净环境无需改动)

将spec.group字段值尾部添加”.test”,将metadata.name字段值尾部添加”.test”

CRD资源metadata下字段的命名规则为: spec.names. plural+.+spec.group

  1. 修改cluster级别资源(纯净环境无需改动)

prometheus-operator-clusterRoleBinding.yaml

prometheus-operator-clusterRole.yaml

改为别名避免重复

(3)创建CRDs资源

修改完后,执行kubectl apply -f . 创建CRD资源。

4、安装prometheus

(1)修改暴露外部访问的端口

如果不配置ingress直接通过node ip访问prometheus相关UI的话需要将默认的cluster ip改为node IP

cd manifests/

vim prometheus-service.yaml

type: NodePort

nodePort: 31090

vim grafana-service.yaml

type: NodePort

nodePort: 31000

vim alertmanager-service.yaml

type: NodePort

nodePort: 31093

(2)修改node-exporter端口(纯净环境无需改动)

现有集群已占用9100端口, 所以需要修改node-export占用的端口

修改node-exporter-daemonset.yaml内容,将9100改为9101

由于`hostNetwork` is true,需要将hostPort与containerPort保持一致。

修改node-exporter-service.yaml内容,将9100改为9101

(3)使用集群storageClass,实现promethues本地存储

修改prometheus-prometheus.yaml文件,添加如下内容:

storage:

volumeClaimTemplate:

spec:

storageClassName: sc-topolvm

resources:

requests:

storage: 100Gi

(4)Grafana本地化存储,storageClass

创建grafana使用的pvc

vim grafana-pvc.yaml

kubectl create -f grafana-pvc.yaml

(5)alertmanager本地存储storageclass

vim alertmanager-alertmanager.yaml

(4)修改APIService资源(纯净环境无需改动)

prometheus-adapter-apiService.yaml

  1. 修改clusterrole,修改name名称(纯净环境无需改动)

blackbox-exporter-clusterRole.yaml

prometheus-adapter-clusterRole.yaml

kube-state-metrics-clusterRole.yaml

prometheus-clusterRole.yaml

node-exporter-clusterRole.yaml

  1. 修改grafana时区(不修改会出现时区问题)

进入manifests目录

sed -i 's/UTC/UTC+8/g' grafana-dashboardDefinitions.yaml

sed -i 's/utc/utc+8/g' grafana-dashboardDefinitions.yaml

  1. 添加prometheus访问 etcd /etrics接口证书

prometheus-prometheus.yaml文件添加如下字段,脚本里会通过下面命令先创建secret

kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/server.crt --from-file=/etc/kubernetes/pki/etcd/server.key --from-file=/etc/kubernetes/pki/etcd/ca.crt

(8)将准备好的镜像包上传到集群节点,并导入镜像

Docker load -i XXXXXX

(9)查看集群状态

(10)验证webUI

注意:以下cluster级别资源无需修改,使用了系统级别资源

prometheus-adapter-clusterRoleBindingDelegator.yaml

prometheus-adapter-roleBindingAuthReader.yaml

Prometheus平台:

http://10.250.4.156:31090

Grafana平台:

http://10.250.4.156:31000/

账号密码: admin 1234@Abcd

Alertmanager平台:

http://10.250.4.156:31093/

三、部署架构

(1)组件清单

operator

blackbox-exporter

prometheus server

alertmanager

node-exporter

Prometheus Adapter for Kubernetes Metrics APIs (k8s-prometheus-adapter)

kube-state-metrics

Grafana

组件说明:

operator: 根据自定义资源(Custom Resource Definition / CRDs)来部署和管理 Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。其职责是部署和管理 Prometheus Server,根据 ServiceMonitor 动态更新 Prometheus Server 的监控对象。

blackbox-exporter: 监控业务容器存活性。

prometheus server: Operator 根据自定义资源 Prometheus 类型中定义的内容而部署的 Prometheus Server 集群,这些自定义资源可以看作是用来管理 Prometheus Server 集群的 StatefulSets 资源。

alertmanager: 实现监控报警

node-exporter:用来监控运算节点上的宿主机的资源信息,需要部署到所有运算节点。

prometheus-adapter: 由于本身prometheus属于第三方的 解决方案,原生的k8s系统并不能对Prometheus的自定义指标进行解析,就需要借助于k8s-prometheus-adapter将这些指标数据查询接口转换为标准的Kubernetes自定义指标。

kube-state-metrics: 当部署了metrics-server、cadvisor(集成在kubelet内)监控指标基本都已经能拿到,但是这些都是在应用内部,需要在应用提供or开启/metrics接口,或者部署exports来暴漏对应的指标,但是对于deployment,Pod、daemonset、cronjob等k8s资源对象并没有监控,比如:当前replace是多少?Pod当前状态(pending or running?)cadvisor并没有对具体的资源对象就行监控,因此就需引用新的exports来暴漏监控指标,kube-state-metrics。

基于 client-go 开发,轮询 Kubernetes API, 监听 add delete update等事件

grafana:数据可视化, 进行图像展示。

  1. 部署架构

整体架构:

部署架构:

四、监控完善

(1)添加etcd监控

确认etcd内置metrics是否已正常提供数据

curl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key https://127.0.0.1:2379/metrics

确认后创建promethues用户访问etcd的secret

kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/server.crt --from-file=/etc/kubernetes/pki/etcd/server.key --from-file=/etc/kubernetes/pki/etcd/ca.crt

修改manifests目录下的prometheus-prometheus.yaml内容,添加如下:

secrets:

- etcd-certs

执行kubectl apply -f prometheus-prometheus.yaml更新prometheus生效

进入容器查看是否生效

创建etcd对应的service

创建etcd对应service后测试svc对应ClusterIP是否代理成功

curl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key https://100.22.77.43:2379/metrics -k

创建对应创建ServiceMonitor

kubectl create -f prometheus-serviceMonitorEtcd.yaml

在promethues查看tagets列表是否出现kube-etcd

(2)添加kube-proxy监控

修改kube-proxy对应configmap,修改如下两个值

kubectl edit cm kube-proxy -n kube-system

修改后如下命令重启kube-proxy

kubectl -n kube-system rollout restart daemonset/kube-proxy

创建kube-proxy对应SVC

Kubectl create -f kube-proxy-svc.yaml

创建kube-proxy对应servicemonitor,其中scheme为http

(3)添加kube-controller-manager监控

kube-controller-manager的servicemonitor已经默认存在,只需补充创建svc,同时需要修改绑定的本地IP

将/etc/kubernetes/manifests/kube-controller-manager.yaml文件内” bind-address”的值改为”0.0.0.0”

创建svc

Kubectl create -f kube-controller-manager-svc.yaml

(4)添加scheduler监控

scheduler的servicemonitor已经默认存在,只需补充创建svc,同时需要修改绑定的本地IP

将/etc/kubernetes/manifests/kube-scheduler.yaml文件内” bind-address”的值改为”0.0.0.0”

创建svc

Kubectl create -f prometheus-kubeSchedulerService.yaml

五、监控指标

六、告警规则与通知

七、exporter开发指南

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值