动动手指,Prometheus 部署流程收入囊中
点击小卡片参与粉丝专属福利
?????? 「欢迎点赞收藏关注哟」
?「首先分享之前的所有文章 」 ??????
「文章合集 :」 ?? https://juejin.cn/post/6941642435189538824
「Github :」 ?? https://github.com/black-ant
「CASE 备份 :」 ?? https://gitee.com/antblack/case
?一. 前言秒杀系列已经准备开始聊应用了,但是前置模块还有监控体系未完善。
「一个系统的监控我通常认为有3个层次」 :
API 监控 :主要用于监控接口耗时和接口错误率等信息硬件监控 :包括 CPU ,内存等基础资源的监控应用监控 :主要对JVM ,连接池,容器信息进行监控这一篇目标是基于 Prometheus 和 K8S 搭建一套监控系统,当然资金充裕可以跳过,直接使用云服务商完善的体系即可,好用又扎实。
「后续的秒杀必须使用到监控,不监控不知道性能情况,这一篇就来学习下,怎么部署系统监控。」
二. 宏观2.1 宏观概念?Prometheus 能做什么 ?
?S1 : 定期收集来自各种数据源的度量标准数据 ,包括应用系统性能,资源占用等S2 : 按照时间序列将数据存储到数据库中S3 : 通过特定的查询语句(PromQL)实时查询数据数据「支持可视化的展示」,生成看板,和 Grafana 结合使用「支持自定义报警功能」,基于报警规则生成报警「支持动态发现目标」,自动进行监控「支持监控多个数据源」,同时监控多个系统?功能一览
?
?流程是什么 ?
?S1 : Prometheus 提供了大量的 Exporter 用于将各种系统,和服务中的度量收集,首先需要安装对应系统的 exporterS2 : 安装 Prometheus 组件 ,由 Prometheus 收集相关组件的数据S3 : 安装 grafana ,指定 grafana 调用对应 Prometheus 的 APIS4 : 配置 grafana ,将 API 返回的数据进行可视化的展示?有哪些 Exporter ?
?「Node Exporter」:Node Exporter是Prometheus的官方Exporter之一,用于监控Linux和Unix操作系统的硬件和资源使用情况,包括CPU、内存、磁盘、网络等。「Blackbox Exporter」:Blackbox Exporter用于执行网络探测,以监视远程服务的可用性和性能。支持 HTTP ,DNS ,TCP 等等「Docker Daemon Exporter」:用于监控Docker容器的性能指标,如CPU使用率、内存使用率、网络流量等「MySQL Exporter」:用于监控MySQL数据库服务器的性能和状态,包括查询响应时间、连接数、缓冲池状态等「Kubernetes State Metrics」:用于监控Kubernetes集群的内部状态和度量标准,如Pod数量、节点状态、部署状态等「Nginx Exporter」:用于监控Nginx Web服务器的性能和状态,包括请求响应时间、连接数、缓存状态等「Redis Exporter」:用于监控Redis内存数据库的性能和状态,包括键空间的使用、命令统计等「Elasticsearch Exporter」:用于监控Elasticsearch搜索引擎的性能和集群状态,包括索引信息、节点状态等还有很多其他的 exporter 这里就不细数了, 具体可以看官方文档 :Exporters and integrations | Prometheus(https://prometheus.io/docs/instrumenting/exporters/)
2.2 阶段总结Prometheus 工具的使用流程基本上就出来了: 「安装 exporter 抓取数据 ,Prometheus 保存这些 exporter 的信息, 最终通过 grafana 展示给前端」
三. 方案详情Prometheus 的安装有2种方式 ,Docker 和 二进制安装 :
3.1 Prometheus 安装 - Docker「Docker 安装辅助组件」//拉取相关镜像
dockerpullprom/node-exporter
dockerpullgoogle/cadvisor
dockerpullprom/prometheus
dockerpullgrafana/grafana
- node-exporter :收集Linux服务器上的各种系统指标和性能数据
-包括CPU使用率,内存使用率,磁盘I/O等
- cadvisor :用于监视容器的开源工具,配合 Docker , K8S 一起使用,用于容器性能监控
-包括容器的基础性能(cpu,内存)
-可以生成报告,触发报警
//S1:启动node-exporter监控应用
dockerrun-d--namenode-exporter--restart=always-p9100:9100-v"/proc:/host/proc:ro"-v"/sys:/host/sys:ro"-v"/:/rootfs:ro"prom/node-exporter
-查看启动情况:docker ps
-查看端口情况:netstat -anpt
-访问应用:http://11.22.217.211:9100/metrics
//S2:启用cadvisor监控容器
dockerrun--privileged=true-v/:/rootfs:ro-v/var/run:/var/run:rw-v/sys:/sys:ro-v/var/lib/docker/:/var/lib/docker:ro-v/dev/disk/:/dev/disk:ro-p8080:8080-d--name=cadvisor--restart=alwaysgoogle/cadvisor:latest
-访问应用:http://11.22.217.211:8080/metrics
-查看容器启动日志:docker logs 4c350f0c83a0
-删除容器:docker container rm 4c350f0c83a0
//补充一:inotify_add_watch /sys/fs/cgroup/cpuacct,cpu: no such file or directory
sudomount-oremount,rw'/sys/fs/cgroup'
sudoln-s/sys/fs/cgroup/cpu,cpuacct/sys/fs/cgroup/cpuacct,cpu
「Docker 安装 Prometheus」//?如果是内部网络,可以先查询到 Docker 私网
`dockerinspect-f``'{{.Name}}-{{.NetworkSettings.IPAddress}}'``$(dockerps-aq)`
//S1:先创建Prometheus启动需要的配置文件
mkdir/opt/prometheus
cd/opt/prometheus/
vimprometheus.yml
//S2:配置上面的配置文件prometheus
global:
scrape_interval:60s
evaluation_interval:60s
scrape_configs:
-job_name:prometheus
static_configs:
-targets:['localhost:9090']
labels:
instance:prometheus
-job_name:linux
static_configs:
-targets:['localhost:9100']
labels:
instance:localhost
-job_name:cadvisor
static_configs:
-targets:['localhost:8080']
labels:
instance:cAdvisor
//启动prometheus
dockerrun-d--nameprometheus--restart=always-p9090:9090-v/opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.ymlprom/prometheus
-查看应用:http://13.13.1.31:9090/graph
-查看应用:http://13.13.1.31:9090/targets
「文件内容解析 :」
「global.scrape_interval」 : 全局抓取间隔,每15秒获取一次数据「global.evaluation_interval」 : 全局评估间隔,每15秒评估警报规则「scrape_configs.job_name」 : 作业名,这里用于监控Prometheus本身「scrape_configs.static_configs.targets」 :目标,指定要监控的目标地址和端口「rule_files」 :规则报警文件「成功启动:」
3.2 Prometheus 安装 - 二进制@ 二进制部署 Prometheus - 买定灬离手 - 博客园 (cnblogs.com)
很详细,就不重复操作了,不过相对而言,自己玩一玩 Docker 就够了。
3.3 配置 grafana//S1:创建前配置
-创建存储文件夹:mkdir /opt/grafana-storage
-为文件添加权限:chmod 777-R/opt/grafana-storage
//S2:启动grafana
dockerrun-d--namegrafana--restart=always-p3000:3000--name=grafana-v/opt/grafana-storage:/var/lib/grafanagrafana/grafana
//S3:访问grafana
http://192.168.1.31:3000/
「启动完成后,就需要配置关联了:」
S1 : 在 Connect 中添加新的连接 SourceS2 : Source 选择 Prometheus ,配置连接信息 ,注意加 HTTP/HTTPSS3 : 在 Dashboards 中直接通过模板 ID 配置「模板ID 是什么 ?」
Dashboards 的界面并不是原生自带的,其中很多参数和图表都需要配置为了让这些配置简化已经可以互相分享自己的模板, grafana 定义了模板 ID 的盖帘我们可以通过 https://grafana.com/grafana/dashboards 查询自己喜欢的模板,然后直接通过ID进行配置
「第一阶段大功告成:」
四. 其他辅助功能及配置?「Alertmanager」
?功能 :管理警报。可以对警报进行静音、分组和路由,以便更好地处理警报通知。
alerting:
alertmanagers:
-static_configs:
-targets:['alertmanager:9093']#Alertmanager的地址和端口
?「修改存储介质」
?@ Storage | Prometheus
Prometheus 支持本地存储 ,远程存储等多种方式,如果使用 Docker 的场景,存储最好配置成远程的
--web.enable-remote-write-receiver/api/v1/write
这里我也没实现过,所以具体的就不展示了
总结这一篇完成后,整个秒杀系列就能正式开始了,后续在压力展示的时候可以直接给大家看可视化的性能界面了。
「以上只是Prometheus 的基础用法,后面还会有一些高级用法可能会单章进行处理」
如果文章对你有帮助的话欢迎「关注+点赞+收藏」
阅读原文
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。 项目经理在线