首页 > 其他分享 >Kubernetes(k8s)部署Promehteus监控

Kubernetes(k8s)部署Promehteus监控

时间:2022-11-10 10:59:33浏览次数:38  
标签:Kubernetes Promehteus Prometheus TCP yaml prometheus k8s image

一、概述

Prometheus是一个开源监控系统,生态包括了很多组件,它们中的一些是可选的:

  • 主服务Prometheus Server负责抓取和存储时间序列数据
  • 客户库负责检测应用程序代码
  • 支持短生命周期的PUSH网关
  • 基于Rails/SQL仪表盘构建器的GUI
  • 多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式
  • 警告管理器
  • 命令行查询工具
  • 其他各种支撑工具

Prometheus Operator的本职就是一组用户自定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些自定义资源的变化,并且根据这些资源的定义自动化的完成如Prometheus Server自身以及配置的自动化管理工作。以下是Prometheus Operator的架构图:

Prometheus Operator 是CoreOS的一个开源项目,用来增强Prometheus在Kubernetes中的管理运维能力。利用Kubernetes的自定义资源定义 (Custom Resource Definition)的特性,实现声明式管理运维Prometheus监控告警系统。
kube-prometheus 为基于 Prometheus 和 Prometheus Operator 的完整集群监控堆栈提供示例配置。这包括部署多个 Prometheus 和 Alertmanager 实例、指标导出器(例如用于收集节点指标的 node_exporter)、抓取将 Prometheus 链接到各种指标端点的目标配置,以及用于通知集群中潜在问题的示例警报规则。
两个项目的关系:前者只包含了Prometheus Operator,后者既包含了Operator,又包含了Prometheus相关组件的部署及常用的Prometheus自定义监控,具体包含下面的组件

  • The Prometheus Operator:创建CRD自定义的资源对象
    Highly available Prometheus:创建高可用的Prometheus
    Highly available Alertmanager:创建高可用的告警组件
    Prometheus node-exporter:创建主机的监控组件
    Prometheus Adapter for Kubernetes Metrics APIs:创建自定义监控的指标工具(例如可以通过nginx的request来进行应用的自动伸缩)
    kube-state-metrics:监控k8s相关资源对象的状态指标
    Grafana:进行图像展示

二、安装kube-prometheus

1. 项目地址

在GitHub中下载,地址:https://gitcode.net/mirrors/coreos/kube-prometheus?utm_source=csdn_github_accelerator

可以通过git clone,如果服务器网络不通也可以直接下载好源代码在上传服务器

下载要看清楚版本,分支不同对应k8s版本不一样

由于服务器上git 不下来,我直接在网站上下载了zip包

把包中的manifests文件上传到服务器上,里面都是yaml文件。

 

2. 修改yaml文件镜像源

把这几个文件的image地址都修改成下面的地址,源地址不一定能拉的下镜像

[root@k8s-master1 manifests]# grep -rn 'image: ' *
alertmanager-alertmanager.yaml:13:  image: quay.mirrors.ustc.edu.cn/prometheus/alertmanager:v0.23.0
blackboxExporter-deployment.yaml:32:        image: quay.mirrors.ustc.edu.cn/prometheus/blackbox-exporter:v0.19.0
blackboxExporter-deployment.yaml:54:        image: jimmidyson/configmap-reload:v0.5.0
blackboxExporter-deployment.yaml:77:        image: quay.mirrors.ustc.edu.cn/brancz/kube-rbac-proxy:v0.11.0
grafana-deployment.yaml:32:        image: grafana/grafana:8.3.3
kubeStateMetrics-deployment.yaml:34:        image: cnych/kube-state-metrics:v2.3.0
kubeStateMetrics-deployment.yaml:50:        image: quay.mirrors.ustc.edu.cn/brancz/kube-rbac-proxy:v0.11.0
kubeStateMetrics-deployment.yaml:71:        image: quay.mirrors.ustc.edu.cn/brancz/kube-rbac-proxy:v0.11.0
nodeExporter-daemonset.yaml:37:        image: quay.mirrors.ustc.edu.cn/prometheus/node-exporter:v1.3.1
nodeExporter-daemonset.yaml:65:        image: quay.mirrors.ustc.edu.cn/brancz/kube-rbac-proxy:v0.11.0
prometheusAdapter-deployment.yaml:39:        image: cnych/prometheus-adapter:v0.9.1
prometheusOperator-deployment.yaml:32:        image: quay.mirrors.ustc.edu.cn/prometheus-operator/prometheus-operator:v0.53.1
prometheusOperator-deployment.yaml:51:        image: quay.mirrors.ustc.edu.cn/brancz/kube-rbac-proxy:v0.11.0
prometheus-prometheus.yaml:21:  image: quay.mirrors.ustc.edu.cn/prometheus/prometheus:v2.32.1

 

3. 修改yaml文件svc,暴露服务端口

这三个svc分别是告警,grafana,prometheus的web页面服务,暴露端口方便在外部访问

[root@k8s-master1 manifests]# grep -rn 'NodePort' *
alertmanager-service.yaml:13:  type: NodePort
grafana-service.yaml:12:  type: NodePort
prometheus-service.yaml:13:  type: NodePort

每个svc都添加type:NodePort,和对应的端口,端口自定义不重复即可

4. 安装部署

在manifests目录下执行

#在一步要使用create,使用apply安装过程中会提示 Too long: must have at most 262144 bytes
#这会创建一个名为 monitoring 的命名空间,以及相关的 CRD 资源对象声明
[root@k8s-master1 manifests]# kubectl create -f setup/

#安装服务
[root@k8s-master1 manifests]# kubectl apply -f .

安装需要等一会,需要下载镜像

看到所有pod都running即部署完成

[root@k8s-master1 ~]# kubectl get pod -n monitoring 
NAME                                   READY   STATUS    RESTARTS       AGE
alertmanager-main-0                    2/2     Running   4 (17m ago)    16h
alertmanager-main-1                    2/2     Running   0              86s
alertmanager-main-2                    2/2     Running   0              89s
blackbox-exporter-5f4d9ff7f4-f9t8j     3/3     Running   6 (17m ago)    16h
grafana-78d8cfccff-5vjcc               1/1     Running   2 (17m ago)    16h
kube-state-metrics-5fc765d7b9-skwtl    3/3     Running   6 (17m ago)    16h
node-exporter-48qvw                    2/2     Running   4 (66m ago)    24h
node-exporter-tgrcr                    2/2     Running   56 (13m ago)   24h
node-exporter-vqchr                    2/2     Running   8 (17m ago)    24h
prometheus-adapter-7c55854c56-2s4ll    1/1     Running   2 (17m ago)    16h
prometheus-adapter-7c55854c56-sfn2g    1/1     Running   2 (17m ago)    16h
prometheus-k8s-0                       2/2     Running   0              89s
prometheus-k8s-1                       2/2     Running   0              85s
prometheus-operator-67bcf4bb4f-ntsvw   2/2     Running   4 (17m ago)    16h

查询svc

[root@k8s-master1 ~]# kubectl get svc -n monitoring 
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
alertmanager-main       NodePort    10.103.39.12     <none>        9093:30082/TCP,8080:30280/TCP   24h
alertmanager-operated   ClusterIP   None             <none>        9093/TCP,9094/TCP,9094/UDP      24h
blackbox-exporter       ClusterIP   10.100.135.40    <none>        9115/TCP,19115/TCP              24h
grafana                 NodePort    10.103.204.230   <none>        3000:30081/TCP                  24h
kube-state-metrics      ClusterIP   None             <none>        8443/TCP,9443/TCP               24h
node-exporter           ClusterIP   None             <none>        9100/TCP                        24h
prometheus-adapter      ClusterIP   10.101.197.199   <none>        443/TCP                         24h
prometheus-k8s          NodePort    10.111.219.237   <none>        9090:30080/TCP,8080:31486/TCP   24h
prometheus-operated     ClusterIP   None             <none>        9090/TCP                        24h
prometheus-operator     ClusterIP   None             <none>        8443/TCP                        24h

 

5. 页面访问

promethus server页面

grafana页面,默认密码admin/admin

告警页面

6. 登录grafana配置监控

在设置中选择配置

默认就已经带有k8s的监控,可以直接使用也可以点击add data source手动配置

配置完成后,点击test测试

在主页上,点击导入import,导入监控模板

315是其中一个监控模板id,可以手动去grafana官网下载需要的模板再导入。这里直接使用315测试监控效果,点击load

自定义name,promethus选择刚才配置的,点击import

页面监控数据

 

标签:Kubernetes,Promehteus,Prometheus,TCP,yaml,prometheus,k8s,image
From: https://www.cnblogs.com/xmwan/p/16874256.html

相关文章

  • K8s系列---【KubeSphere部署完mysql8.0再部署mysql5.0导致mysql5.0启动失败的问题】
    KubeSphere部署完mysql8.0再部署mysql5.0导致mysql5.0启动失败的问题1.报错InnoDB:Tableflagsare0inthedatadictionarybuttheflagsinfile./ibdata1are0x......
  • K8s系列---【安装nfs文件系统(为k8s提供动态创建pv的能力)】
    安装nfs文件系统(为k8s提供动态创建pv的能力)1.1安装nfs-server#在每个机器执行下面这条命令(包含master)。yuminstall-ynfs-utils下面的/nfs/data目录可以自定义,......
  • K8s系列---【KubeSphere部署Mysql】
    KubeSphere部署Mysql(有状态副本集)扫盲:什么是有状态副本集?例如,部署一个mysql,如果服务挂了,K8s会自动拉起一个mysql服务,但是拉起的mysql服务仍然得有服务挂掉之......
  • K8s系列---【KubeSphere多租户账号创建流程】
    kubeSphere多租户账号创建流程系统默认用户为超级管理员。使用超级管理员创建HR账号,HR负责整个集团的账号创建。 ......
  • 第一章 Kubernetes系统基础
    1.1容器技术概述近几十年来,IT领域新技术、新概念层出不穷,例如DevOps、微服务(Microservice)、容器(Container),云计算(CloudComputing)和区块链(Blockchain)等,真有“乱花渐欲......
  • kubernetes概念
    K8s概念:Master:包含APIServer、Scheduler、ControllerManager三个守护进程;Nodes(worker):1.kubelet(集群代理)用于Master和Node之间的通信,Node用于运行多个Pod、2.docker......
  • K8S中使用EFK的filebeat配置详解
    前言近期公司不少项目都上了K8S,随着项目越来越多,有时候会出现“服务异常”等情况,需要上到服务器敲一大堆的命令,才有可能找到疑似的异常原因。如果我们将这些数据全部记录到......
  • 使用kubeadm+calico部署kubernetes v1.25.3
    1、环境准备主机名IP地址系统版本k8s-master01k8s-master01.wang.orgkubeapi.wang.orgkubeapi10.0.0.101Ubuntu2004k8s-master02k8s-master02.wang.o......
  • Kubernetes集群YAML文件简介
    概述k8s集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到YAML格式文件中,我们把这种文件叫做资源清单文件,通......
  • Kubernetes集群管理工具kubectl简介
     概述kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署 命令格式kubectl[command][type][na......