首页 > kubernetes(k8s) > k8s实现Prometheus+grafana+alertermanager+dingtalk告警
2019
11-19

k8s实现Prometheus+grafana+alertermanager+dingtalk告警

组件说明

  • 1.MetricServer:是kubernetes集群资源使用情况的聚合器,收集数据给kubernetes集群内使用,如kubectl,hpa,scheduler等。
  • 2.PrometheusOperator:是一个系统监测和警报工具箱,用来存储监控数据。
  • 3.NodeExporter:用于各node的关键度量指标状态数据。
  • 4.KubeStateMetrics:收集kubernetes集群内资源对象数据,制定告警规则。
  • 5.Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输。
  • 6.Grafana:是可视化数据统计和监控平台。

开始安装

1.准备工作

导入镜像(这个镜像包太大,而且需要科学上网,建议先导入)

下载好后解压,然后运行目录那个批量导入镜像脚本

导入完成

2.开始构建

可以用我提供的包,也可以去git下载

解压构建包,进入到manifests目录下

因为prometheus默认的访问方式是cluserIP,对我们来说不是很友好,所以我们将以下几个文件做下修改

1.修改 grafana-service.yaml 文件,使用 nodepode 方式访问 grafana

2.修改 prometheus-service.yaml,改为 nodepode

3.修改 alertmanager-service.yaml,改为 nodepode

然后开始构建

构建完成后查看

然后等他运行几分钟然后查看 kubectl top node

指标含义:

  • 和k8s中的request、limit一致,CPU单位100m=0.1 内存单位1Mi=1024Ki
  • pod的内存值是其实际使用量,也是做limit限制时判断oom的依据。pod的使用量等于其所有业务容器的总和,不包括 pause 容器,值等于cadvisr中的container_memory_working_set_bytes指标
  • node的值并不等于该node 上所有 pod 值的总和,也不等于直接在机器上运行 top 或 free 看到的值

然后我们查看他当前运行的状态

访问 prometheus

进入status>target 可以看到 prometheus 已经成功连接上了 k8s 的 apiserver

查看 service-discovery

prometheus 的 WEB 界面上提供了基本的查询 K8S 集群中每个 POD 的 CPU 使用情况,查询条件如下:

上述的查询有出现数据,说明 node-exporter 往 prometheus 中写入数据正常,接下来我们就可以访问 grafana 组件,实现更友好的 webui 展示数据了

访问 grafana

查看grafana暴露端口号

如上可以看到 grafana 的端口号是 30100,

浏览器访问 http://MasterIP:30100

用户名密码默认 admin/admin

第一次登录会让你修改密码,修改下就好了

登录后添加数据源

目前官方支持了如下几种数据源:

点击我们的数据源Prometheus进入

然后点击Test 没问题,然后在dashbords里导入一些节点

然后点击home

选择你要查看的资源监控

选择pod或者节点监控 查看图标

接下来配置alertmanager+dingtalk告警

alertmanager.yml

  1. 配置alertmanager配置文件, 从上面的的文件包中,找出alertmanager相关的yaml文件,移动到alertmanager中。然后配置alertmanager-secret

将你的配置文件base64加密后,替换他这个原有的。(当然你也可以使用configmap的方式挂载进去)

然后删除之前的alertmanager容器,重新应用。

dingding

这个需要从git拉取代码,然后编译,然后打包成镜像才可以使用。编译方式请戳这里

编译好后打包,打包要注意修改Dockerfile这个文件,可能作者写错了

Dockerfile[修改后的]

然后编译打包成镜像。这里有我本人镜像,需要的自行下载

配置

赞赏

微信赞赏支付宝赞赏

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。