码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 在k8s中快速搭建基于Prometheus监控系统


    合集 - 云原生(13)
    1.最佳实践-使用Github Actions来构建跨平台容器镜像2023-11-152.滚动更新和回滚部署在 Kubernetes 中的工作原理2023-11-203.Kubernetes 中的服务注册与发现原理分析2023-11-294.通过滴滴技术博客:探寻造成此次P0故障的真正原因2023-11-305.从物理机到K8S:应用系统部署方式的演进及其影响2023-11-306.如何基于 k8s做私有化部署2023-12-187.一文搞定K8S监控告警平台选型2023-12-208.如何通过port-forward命令在本地访问 k8s 集群服务2023-12-269.什么是革命性技术eBPF?为什么可观测性领域都得用它2023-12-27
    10.在k8s中快速搭建基于Prometheus监控系统2023-12-29
    11.Prometheus 与 VictoriaMetrics对比01-0512.什么是Helm?它是如何提升云原生应用私有化部署效率的01-0813.十分钟教你在 k8s 中部署一个前后端应用01-12
    收起

    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享

    前言

    K8s本身不包含内置的监控工具,所以市场上有不少这样监控工具来填补这一空白,但是没有一个监控工具有prometheus全家桶使用率高,因为它由 CNCF维护,已经成为了监控 k8s 集群的事实上的行业标准,下面介绍一下如何在K8s快速部署一个kube-prometheus项目,来实现对k8s 相关资源监控与告警

    kube-prometheus介绍

    kube-prometheus是一个完整的监控解决方案,可以轻松地将其部署到 Kubernetes 集群中,它包括以下内容

    1. Prometheus 用于度量收集

    2. Alertmanager 用于指标警报和通知

    3. Grafana 用于图形用户界面

    4. 一组特定于K8s的exporters,用作指标收集代理

    5. 使用 Prometheus Operator 来简化和自动化该堆栈的设置

    快速安装

    在将 kube-prometheus部署到 k8s 集群之前,先确认与你的 k8s匹配的是版本,然后在下载

    下载

    执行kubectl version 查看k8s 版本,下载对应版本

    由于本人的 k8s 版本为 v1.25.13,所以下载kube-prometheus-0.12.0

    wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.12.0.zip
    

    解压

    tar -zxvf kube-prometheus-0.12.0.zip & cd kube-prometheus-0.12.0
    

    修改镜像地址

    由于网络原因,kube-state-metrics和prometheus-adapter镜像地址,在国内无法下载,因此需要修改以下地址

    vi manifests/kubeStateMetrics-deployment.yaml

    image: bitnami/kube-state-metrics:2.7.0
    

    vi manifests/prometheusAdapter-deployment.yaml

    image: cloveropen/prometheus-adapter:v0.10.0
    

    访问配置

    为了可以从外部访问 Prometheus、Grafana、Alertmanager,需要修改 service 类型为 NodePort 类型。

    修改 Prometheus 的 service

    vi manifests/prometheus-service.yaml

    # 设置对外访问端口,增加如下两行
    type: NodePort
    nodePort: 31922
    

    修改 Grafana 的 service

    vi manifests/grafana-service.yaml

    # 设置对外访问端口,增加如下两行
    type: NodePort
    nodePort: 30300
    

    修改 Alertmanager 的 service

    vi manifests/alertmanager-service.yaml

    # 设置对外访问端口,增加如下两行
    type: NodePort
    nodePort: 30200
    

    安装

    在kube-prometheus-0.12.0目录下执行以下命令进行安装

    kubectl apply --server-side -f manifests/setup
    kubectl apply -f manifests/
    

    执行完成以后,访问monitoring 空间,查看部署状态,可以看到启动成功,并且都是高可用部署

    kubectl get pods -n monitoring
    

    验证

    Prometheus验证

    选一台 node 节点ip+31922,即可访问prometheus的 Web UI

    Alertmanager验证

    选一台 node 节点ip+30200,即可访问alertmanager的 Web UI,可以看到有一些报警,由于alertmanager的报警配置比较复杂同时对国内的通讯工具支持有限,因此可以使用PrometheusAlert进行告警配置

    Grafana验证

    选一台 node 节点ip+30300,即可访问grafana的 Web UI,默认用户名密码:admin/admin,登录会提示更改密码,登录以后,可以看到已经内置了不少监控大盘

    集群资源监控

    节点资源监控,可以看到当前节点部署了哪些 pod,以及对应的负载是多少

    卸载

    执行以下命令即可卸载相关组件

    kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup
    

    存在的问题

    持久存储

    以上我们安装未使用持久化存储,所以如果Prometheus或者Grafana重启,那么采集的数据和自定义的仪表盘等数据会丢失,因此如果考虑在生产环境使用,需要把数据使用存储卷挂载至文件系统。

    Grafana显示时间问题

    由于grafana默认时区是UTC,比中国时间慢了8小时,很不便于日常监控查看,需要进行修改,如下图

    因此需要调整成中国时间,utc+8,替换grafana-dashboardDefinitions.yaml

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

    总结

    以上我们介绍了什么是kube-prometheus以及如何在k8s中快速部署kube-prometheus,后续会深入讲解相关使用,同时在操作过程中如果有疑问,也欢迎关注我的公众号进行技术交流,如果本篇文章对您有所帮助,麻烦帮忙一键三连(点赞、转发、收藏)~

    扫描下面的二维码关注我们的微信公众帐号,在微信公众帐号中回复◉加群◉即可加入到我们的技术讨论群里面共同学习。

  • 相关阅读:
    git安装相关
    AStyle使用小结
    怎样优雅地增删查改(六):按任意字段关键字查询
    k8s查看pod日志的几种方法
    部署基于docker和cri-dockerd的Kubernetes v1.25.3
    前端工程师面试题汇总
    【SpringBoot】配置文件分类
    Python 高级语法:一切皆对象
    Java教程:一文详解函数式编程
    【毕业设计】基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python
  • 原文地址:https://www.cnblogs.com/waldron/p/17935130.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号