云计算
一、简介
prometheus
prometheus 是一个开源监控系统,它本身已经成为了云原生中指标监控的事实标准,几乎所有 kubernetes 的核心组件以及其它云原生系统都以 prometheus 的指标格式输出自己的运行时监控信息。
主要特性:
使用指标名称及键值对标识的多维度数据模型。
采用弹性查询语言promql。
不依赖分布式存储,为自治的单点服务。
使用http完成对监控数据的拉取。
通过网关支持时序数据的推送。
支持多种图形和dashboard的展示。
另外在prometheus的整个生态系统中有各种可选组件,用于功能的扩充。
prometheus-operator
coreos提供了一种名为operator的管理工具,他是管理特定应用程序的控制器。通过扩展kubernetes api以软件的方式帮助用户创建、配置和管理复杂的或又状态的应用程序实例(如etcd、redis、mysql、prometheus等)。
它通过kubernetes的crd(custom resource definition,自定义资源定义)对prometheus和prometheus需要监控的服务进行部署和配置。
prometheus-operator使用下面两种资源来配置prometheus及其要监控的服务。
prometheus:为prometheus的deployment。
servicemonitor:用于描述prometheus监控的服务。
首先我们先来了解下 prometheus-operator 的架构图:
上图是 prometheus-operator 官方提供的架构图,其中 operator 是最核心的部分,作为一个控制器,他会去创建 prometheus 、 servicemonitor 、 alertmanager 以及 prometheusrule 4个 crd 资源对象,然后会一直监控并维持这4个资源对象的状态。
其中创建的 prometheus 这种资源对象就是作为 prometheus server 存在,而 servicemonitor 就是 exporter 的各种抽象, exporter是用来提供专门提供 metrics 数据接口的工具, prometheus 就是通过 servicemonitor 提供的 metrics 数据接口去 pull 数据的。
当然 alertmanager 这种资源对象就是对应的 alertmanager 的抽象,而 prometheusrule 是用来被 prometheus 实例使用的报警规则文件。
二、说明
本文档基于prometheus operator对prometheus监控系统而进行,完整的配置文件请参考https://github.com/coreos/prometheus-operator
本文使用的k8s集群是基于kubeadm搭建的,具体搭建的详细请参考https://blog.51cto.com/billy98/2350660
三、部署
1. 环境准备
配置prometheus-operator之前需要先准备以下几个环境:
helm环境:请参考https://blog.51cto.com/billy98/2338415
gluster-heketi环境:因为prometheus和alertmanager都是有状态的statefulsets集群,所以需要使用到公共存储。请参考https://blog.51cto.com/billy98/2337874
ingress环境:请参考https://blog.51cto.com/billy98/2337874
2. 配置域名解析
将alert.cnlinux.club、grafana.cnlinux.club、prom.cnlinux.club三个域名的a记录解析到负责均衡的ip10.31.90.200。
3. 修改scheduler、controller-manager监听地址
修改/etc/kubernetes/manifests/ 目录下kube-controller-manager.yaml和kube-scheduler.yaml
将监听地址改成--address=0.0.0.0,重启kubelet服务
systemctl restart kubelet.service 4. 创建namespace
kubectl create ns monitoring5. 创建secret
因为etcd是使用https访问的,所以prometheus的容器中也必须要etcd的证书去监控etcd集群,创建secret就是将证书挂载到prometheus容器中,后续还需要在prometheus-operator的配置文件中使用此secret。
kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/healthcheck-clien t.crt --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key --from-file=/etc/kubernetes/pki/etcd/ca.crt 6. 配置prometheus-operator
1)首先使用helm下载prometheus-operator文件包。
helm fetch stable/prometheus-operator2)解压下载的压缩包
tar zxf prometheus-operator-1.8.0.tgz并修改prometheus-operator目录下的values.yaml。
具体修改的配置如下(配置过多,其他未修改的就不再展示了):
nameoverride: palertmanager: ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx labels: {} hosts: - alert.cnlinux.club tls: [] alertmanagerspec: storage: volumeclaimtemplate: spec: storageclassname: gluster-heketi accessmodes: [readwriteonce] resources: requests: storage: 20gi selector: {}grafana: enabled: true admin #grafana登录密码 ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx labels: {} hosts: - grafana.cnlinux.clubkubeapiserver: enabled: true tlsconfig: servername: kubernetes insecureskipverify: true servicemonitor: joblabel: component selector: matchlabels: component: apiserver provider: kuberneteskubelet: enabled: true namespace: kube-system servicemonitor: https: truekubecontrollermanager: enabled: true endpoints: [] service: port: 10252 targetport: 10252 selector: component: kube-controller-managercoredns: enabled: true service: port: 9153 targetport: 9153 selector: k8s-app: kube-dnskubeetcd: enabled: true endpoints: [] service: port: 2379 targetport: 2379 selector: component: etcd servicemonitor: scheme: https insecureskipverify: false servername: cafile: /etc/prometheus/secrets/etcd-certs/
如何发营销式邮件备案更新营业执照-虚拟主机/数据库问题电脑中如何在360浏览器添加插件检测网页是否更新哪些情况会导致关键词排名下跌?这些细节因素都要关注阿里云备案可以用别人家服务器吗云服务器数据盘价格表大全云服务器怎么安装管家婆企业邮箱做的好的