开发者学堂课程【DevOps 日志分析实战 :容器监控与分析实践(三)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/736/detail/13101
容器监控与分析实践(三)
四、部署 Prometheus 监控操作与演示
1.登录容器服务管理控制台
2.创建命名空间
(1)在左侧导航栏中,单击命名空间
(2)单击创建
(3)配置名称为 monitoring,并单击确定
3.创建保密字典
(1)在左侧导航栏中,选择应用配置>保密字典
(2)选择 monitoring 这个命名空间,单击创建(名为 sls-ak,并默认将子账号的 ak 申请完成)
(3)配置如下参数,单击确定
参数 |
说明 |
名称 |
配置为 sls-ak |
命名空间 |
选中在步骤2中创建的命名空间,即 monitoring |
类型 |
选中 Opaque,并添加知下两个键值对。 ·名称为username,值为您的RAM用户的AccessKeylD。 ·名称为password,值为您的RAM用户的AccessKeySecrete 建议您使用只具备日志服务 Project 写入权限的 PAM 用户的 AccessKey. 详情请参见授予指定 Project 写入权限。 |
4.创建 prometheus-operator
(1)在应用市场,点击应用目录>运维/可观测性
(2)然后单击 ack-prometheus-operator,将集群选择为 sls-zc-test
(3)还需要调整参数:
调整 prometheusSpec 下的 retention,建议修改为1d或12h。
将 tsdb 下的 enabla 设置为 true,并增加 remoteWrite配置。
remoteWrite 配置中的 ur1 为日志服务 Metricstore 的 URL,请根据实际值替换。格式为https:// {project}.{sls-enpoint}/prometheus/{project}/{metricstore}/api/v1/write
。其中 {sls-enpoint} 为日志服务的Endpoint,详情请参见服务入口,{project} 和{metricstore} 为您已创建的日志版务的 Project 和 Metricstore
remoteWrite 配置:
根据创建的 Metricstore 调整,所以先创建一个新的 Project 。
创建完成 Project 后在时序库中创建一个 Metricstore(名为 prom),创建完成后可以看到以下信息:
后面要将上面的配置填入 remoteWrite 配置,如下:
url:https://k8s-prom-bj.cn-beijing-intranet.log.aliyuncs .com/promatheus/k8s-5-prom-bj/prom/ api. /v1/write
prometheus-operator
即创建完成。
5.然后配置 Grafana,简单安装 Grafana 即可
Grafana 的安装非常简单,直接安装官网的 Grafana(按照官网的方式按照即可)
使用 Grafana 访问 Promotheus 数据
(1)登录 Grafanae
(2)在左侧导航栏,单击设置标> Data Sources。
(3)在 Data Sources 页签。单击 Add data source。
(4)单击 Prometheus 区城中的 Select.
(5)在 Settings 页签中,配置如下参数。
参数 |
说明 |
Name |
配置数据源名称,例如Prometheus-01 |
HTTP |
日志服务 Metricstore 的URL:格式为https:// {project}.{sls-enpoint}/prometheus/{project}/{metricstore}。其中 {sls-enpoint} 为日志服务的Endpoint,详情请参见服务入口,{project} 和{metricstore} 为您已创建的日志版务的 Project 和 Metricstore。例如:url:https://k8s-prom-bj.cn-beijing-intranet.log.aliyuncs .com/promatheus Whitellsted Cookies:添加访问白名单,可选 |
Ayth |
只需要打开 Basic auth 开关 |
Basic Auth Detals |
User为阿里云账号的 AecessKaeylD。 Password 为阿里云账号的 AccessKeySecret。 建议您使用具备日志联务Project只读权限的RAM用户的AccessKey。详情请参见授予指定Project 只读权限。 |
配置为:
然后点击 Save&Test
完成后可以查询到采集完成的数据:
在 SLS 控制台也能查询:
注意查询方式不同,在控制台的查询方式为 promick 加 SQL 的方式,在 Grafana 上默认方式填入,还可以做一些过滤:
导入模板,可以直接搜索 grefana dashboard 的模板,可以直接使用
例如直接搜索 Kubernetes ,点击 Kubernetes Deployment Statefulset Daemonset metrics,然后复制其 id即可导入
点击加号中的 import:
将其 id 粘贴,即导入完成:
导入完成后会根据一些查询条件,实际场景的需求做一些定制。
6.手动开启事件中心操作与演示
事件中心的开通比较方便,事件中心与容器服务做了集成。
在容器服务,如果正常的创建集群的过程(设置集群名称,选择 k8s,集群配置,组建配置,确认配置)
注意:组建配置中,默认将日志服务和 node-problem-detector放入,所以默认勾选即可,也可以勾选 Ingress Dashboard。如果不安装 node-problem-detector 也可以在组件管理中开启。
手动开启:
点击集群,找到组件管理,可以找到 node-problem-detector。如果没有安装则点击安装即可自动安装,自动安装后默认开启事件中心。
日志的组件也是如此(但默认都是已经安装,可以直接使用)
7.分析 Ingress 日志操作与演示
如果没有安装 Ingress ,可以点击集群中的连接信息:
点击通过 Cloud Shell 管理集群即可。
登录 Cloud Shell 就默认用命令行操作。
可以创建一个 Ingress 的监控,monitoring 的一个 yaml,语句为:
vim ingress-monitoring.yaml
然后将 yaml 代码粘贴并保存
并将其应用,输入语句 kubectl apply -t ingress – monitoring.yaml
到此即完成了 Ingress 的监控
对于 Ingress ,之前默认创建集群都会有 Ingress (可能数据较少)
也有各种 Ingress 的大盘(里面数据还没有流量):
看到另一个账号中的 Ingress 数据:
其中有各种类型的指标在其左侧可以点击快速看到各类型的的数据。
还可以做自定义的查询,例如:method :Get(也可以查 not method :Get)
(查询 method 是 get 的请求)
还可以分析一些状态码的分布:not method :Get | SELECT status,count(1) as total group by status
(非 get 请求的 status 分布)
上图可视化是表格的形式也可以选择饼图的形式(较直接),也可以选择柱状图、条形图的形式。
8.高级用法:
查询分析行输入
not method :Get | SELECT ip_to_province(x_forward_for) as total group by p order by total desc
可以查询到各种省份分布的信息。
也可以输入:
*| SELECT ip_to_province(x_forward_for) as total group by p order by total desc
得到省份分布信息
点击地图:
会按照中国地图的省份自动变为可视化,数量越高地图上省份颜色越深
还可以使用其他地图查看(高德地图不支持,需要用经纬度查看),世界地图需要将查询改为:
*| SELECT ip_to_country(x_forward_for) as total group by p order by total desc
得到:
热力图和高德地图:
*| SELECT ip_to_city_goo(x_forward_for) as total group by p order by total desc
该账号的 Ingress 的数据为:
展示了现有的 PV 、移动端 ois 的占比、平均的延时、Top 的一些指标、top 的延迟、top 的错误等等
Ingress Host 中的数据都可以按照不同的维度做过滤操作。
仪表盘还有监控中心,具体每一个服务的监控:
该处监控指标更加丰富,包括 PV、流量、错误比例、各种平均延时等等,还有一些统计类型,这样非常方便的从图上得到各种各样的指标,但是这些指标背后都是基于访问日志分析出来的。
可以点击预览语句:
可以看到具体是如何实现的。
也可以跳转到查询分析(原始数据),会自动将 select 填入:
事件中心:
将各种各样的告警的维度列出来:
各种告警都可以截取配置:
还可以添加通知方式:
(可以多个渠道并行通知)
默认的事件也会被排列出来,有哪些非常重要的事件需要关注,还有一些 OMM 的事件、Pod 驱逐事件。比较关键的事件都会被列出信息。
Kubernetes 事件查询:
例如担心 Waring 等级的事件,可以只过滤某一种类型的事件,如下:
然后可以看到这些事件的详细信息,其背后对应的也是日志查询的方式,如果有需求可以基于这种日志查询方式去做一些定制化。
整体上说,是基于 SLS 去构建除了整个 K8s 的监控,包括Grafans 中基础的指标,平均 cpu 内存的使用率等等,也可以得到系统内部的实践,例如目前节点被删除,pod 被丢,pod 被销毁等等,这些事件会告诉然后方便直接做告警。Ingress 是可以基于 Ingress 的访问日志去做各种各样的服务的质量,还有自己业务日志的监控,业务日志的监控需要自己配置一些参数以及策略(该部分有非常丰富的文档来操作)