前言

容器集群管理系统 Kubernetes(简称K8s),为容器化的应用提供部署运行、容器编排、负载均衡、服务发现和动态伸缩等一系列完整功能,Prometheus 对 K8s 支持非常棒,能够自动发现 K8s 的监控目标!Prometheus 产生的告警,可以通过 Alertmanager 转发到 Cloud Alert,实现告警的降噪、分派和通知。

Kubernetes

K8s 是 Google 开源的容器集群管理系统。用于管理云平台中多个主机上的容器化的应用,K8s的目标是让部署容器化的应用简单并且高效(powerful),K8s 提供了应用部署,规划,更新,维护的一种机制。(选取自为K8s中文文档)

  • Master:k8s 集群的管理节点,负责管理集群,提供集群的资源数据访问入口。包含四个模块:kube-apiserver、kube-controller-manager 和 kube-scheduler。

  • Node:k8s 集群架构中运行 Pod 的服务节点,每个 Node 至少运行 container runtime(比如 docker 或者 rkt)、kubelet 和 kube-proxy 服务。

更多K8s的安装及使用,详见K8s中文文档。K8s 解决了传统IT系统中服务扩容和升级的两大难题,提高了大规模容器集群管理的便捷性。K8s 通常会搭配 promethues 进行监控。

Prometheus

Prometheus 是一个开源和社区驱动的监控&报警&时序数据库的项目。由于其从推出就提供了完整的基于容器的部署方式,开发者可以快速的基于容器搭建自己的监控平台。

Prometheus 监控 K8s 兼容很好,主要可监控 K8s:

  • Node: 如主机 CPU,内存,网络吞吐和带宽占用,磁盘 I/O 和磁盘使用等指标。node-exporter 采集。

  • 容器关键指标:集群中容器的 CPU 详细状况,内存详细状况,Network,FileSystem和Subcontainer 等。通过 cadvisor 采集。

  • K8s 集群上部署的应用:监控部署在 K8s 集群上的应用。主要是 pod,service,ingress 和 endpoint。通过 black-box 和 kube-apiserver 的接口采集。

产生的告警,promethues 支持 Email 推送和 webhook 推送,如果要实现电话、短信、微信的推送,如果不想再造轮子,可以配合 Cloud Alert(原OneAlert)或 pagerduty 使用。本文以Cloud Alert 为例详细描述集成步骤,pagerduty的集成方式类似。

Cloud Alert

Cloud Alert(原OneAlert)是免费 SaaS 云告警监控项目,可以实现告警的降噪、分派、通知。通知方式支持电话、短信、微信、邮件、APP、钉钉、Slack通知等等。

1. 注册 Cloud Alert 账号,注册地址

2. 创建 Prometheus 应用集成,集成 -> 监控应用,点击Prometheus,保存后,即可获取 webhook 回调 url。

3. 进入 Prometheus 界面,修改 Alertmanager 模块的配置文件。

receivers:
- name: 'team-X-pager'
  webhook_configs:
  - url: 'http://api.onealert.com/alert/api/event/prometheus/--'
    send_resolved: true

4. 重启下 Alertmanager 模块,加载该配置文件。结束。

Cloud Alert 默认所有告警均电话、邮件、短信通知用户,如果想设置不同的告警分派给不同的人/团队,可以在 配置 -> 分派策略 中设置。如果公司成员比较多,建议搭配排班功能使用,没必要所有告警全员响应,将人力解放出来。微信通知,需要先绑定 Cloud Alert 的微信公众号:云告警,绑定后,就能接收微信通知了。更多使用参考官方文档吧。

最新文章

  1. 解决开启服务器防火墙导致ftp不能连接的问题
  2. IO流
  3. 控制反转Inversion of Control (IoC) 与 依赖注入Dependency Injection (DI)
  4. socketserver服务器
  5. Windows Server 2012 没有远程桌面授权服务器可以提供许可证,远程会话被中断
  6. get_magic_quotes_gpc()
  7. Java程序员面试宝典——重要习题整理
  8. LintCode 字符串比较
  9. 读写分离提高 SQL Server 并发性
  10. php生成数据字典,代码
  11. shell-正则表达式
  12. Lua的函数调用和协程中,栈的变化情况
  13. js作用域和内存
  14. Verification and validation
  15. 2017-2018-2 20165236 实验四《Android开发基础》实验报告
  16. 2017/2/13:springMVC拦截器的使用
  17. 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UITableViewCell注册(填写)重用标识符:identifier.必须要代码方法中的标识符一致.
  18. Managing DbContext the right way with Entity Framework 6: an in-depth guide by mehdime
  19. 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
  20. 关于mysql_connect CLIENT_MULTI_RESULTS

热门文章

  1. 重装Windows系统 入门详解 - 基础教程
  2. C++单链表操作
  3. 多测师讲解自动化 _rf 变量_高级讲师肖sir
  4. day04 Pyhton学习
  5. ansible:安装nginx1.18.0(使用role功能)
  6. C++ 设置软件激活不息屏
  7. 如何将vscode代码快速同步到github/gitee上
  8. jinjia2语言
  9. Shell脚本学习指南笔记(一)
  10. D. Generating Sets 解析(思維)