prometheus监控k8s集群

1.整体概述

本文主要讲述如何使用prometheus,结合kube-state-metrics,cAdvisor,Grafana对k8s集群进行监控和报警,和监控大盘的整体展示。

2.环境描述

  • Kubernetes:v1.12.5
  • Prometheus:v2.3.1
  • kube-state-metrics:v1.3.1(收集k8s集群内资源对象数据)
  • cAdvisor(已经在k8s内部集成,不需要重新安装,收集资源使用情况)
  • Grafana:v5.3.4

3.监控组件部署

3.1 kube-state-metrics部署

kube-state-metrics安装有以下配置文件,可以把kube-state-metrics-deployment.yaml里面的镜像路径改成内网的镜像路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#把配置文件都放在kube-state-metrics,执行这个命令即可部署
kubectl -f kube-state-metrics/
#kube-state-metrics目录里面的配置信息
kube-state-metrics
├── kube-state-metrics-cluster-role-binding.yaml
├── kube-state-metrics-cluster-role.yaml
├── kube-state-metrics-deployment.yaml
├── kube-state-metrics-role-binding.yaml
├── kube-state-metrics-role.yaml
├── kube-state-metrics-service-account.yaml
└── kube-state-metrics-service.yaml

#查看kube-state-metrics是否已经起来
kubectl get pod -n kube-system -o wide |grep "kube-state-metrics"
#如果启动部署成功,信息如下:
kube-state-metrics-7fd5dcc9b6-kpxmm 2/2 Running 4 526d 10.244.3.39 wx-2-centos53 <none>

:D 一言句子获取中...



wget https://github.com/prometheus/prometheus/releases/download/v2.1.0/prometheus-2.1.0.linux-amd64.tar.gz

#创建 Prometheus 目录,用于存放所有 Prometheus 相关的运行服务

mkdir /usr/local/prometheus

#使用 tar 解压缩 prometheus-2.1.0.linux-amd64.tar.gz

tar -xvzf prometheus-2.1.0.linux-amd64.tar.gz

#移动解压的目录到规范好的目录

mv prometheus-2.1.0.linux-amd64/* /usr/local/prometheus

#当解压缩成功后,可以运行 version 检查运行环境是否正常

./prometheus --version

#如果你看到类似输出,表示你已安装成功:

prometheus, version 2.1.0 (branch: HEAD, revision: 85f23d82a045d103ea7f3c89a91fba4a93e6367a)
build user: root@6e784304d3ff
build date: 20180119-12:01:23
go version: go1.9.2
 

Prometheus专题[2.Prometheus的优势]

1.前言

一种新工具的出现,都意味着解决某一种或者某一类问题,那Prometheus的出现是解决什么问题呢,让我们从Prometheus和各种监控对比过程中得出答案。

2.Prometheus vs Zabbix

  • Zabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点。
  • Zabbix 属于传统主机监控,主要用于物理主机,交换机,网络等监控,Prometheus 不仅适用主机监控,还适用于 Cloud, SaaS, Openstack,Container 监控。
  • Zabbix 在传统主机监控方面,有更丰富的插件。
  • Zabbix 可以在 WebGui 中配置很多事情,但是 Prometheus 需要手动修改文件配置。

3.Prometheus vs InfluxDB

  • InfluxDB 是一个开源的时序数据库,主要用于存储数据,如果想搭建监控告警系统, 需要依赖其他系统。
  • InfluxDB 在存储水平扩展以及高可用方面做的更好, 毕竟核心是数据库。

4.Prometheus vs OpenTSDB

  • OpenTSDB 是一个分布式时序数据库,它依赖 Hadoop 和 HBase,能存储更长久数据, 如果你系统已经运行了 Hadoop 和 HBase, 它是个不错的选择。

  • 如果想搭建监控告警系统,OpenTSDB 需要依赖其他系统。

Prometheus专题[1.Prometheus简介]

1.概念

Prometheus是一个开源的系统监控和报警的工具包,最初由SoundCloud发布。从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 9k+ 关注,以及很多大公司的使用;2016 年 Prometheus 成为继 k8s 后,第二名CNCF成员。作为新一代开源解决方案,很多理念与 Google SRE 运维之道不谋而合。

2.主要功能

  • 多维 数据模型(时间序列数据由 metric 名字和 k/v 的 labels 构成)。
  • 灵活的查询语句(PromQL)。
  • 无依赖存储,支持 local 和 remote 不同模型。
  • 通过pull方式采集时间序列,通过http协议传输。
  • 支持通过中介网关的push时间序列的方式
  • 监控目标,可以采用服务发现或静态配置的方式。
  • 支持多种可视化图表及仪表盘。

3.核心组件

  • Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
  • client libraries,用于对接 Prometheus Server, 可以查询和上报数据。
  • push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
  • 各种汇报数据的 exporters ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等等。
  • 用于告警通知管理的 alertmanager 。

:D 一言句子获取中...