Toggle navigation
架构师课程
极客时间
开源
文章
博客
SpringCloud
CloudAlibaba
SpringBoot
关于
登录
|
注册
支付宝扫一扫帮助发展吧~
微信扫一扫帮助发展吧~
更多技术分享尽在公众号 ~ 关注下吧!
作为业务开发就不需要懂Prometheus么
尹吉欢
2020-12-22
0条评论
178人阅读
版权声明:转载请先联系作者并标记出处。
监控
去注册
去登录
登录后发表
去注册
去登录
登录后发表
## 前言 Prometheus:普罗米修斯,这名就有一种高大上的感觉。那么普罗米修斯到底是干嘛的呢?一句话总结:**Prometheus 是一个开源的服务监控系统和时间序列数据库。** 抓住三个词,即 开源,监控,时间序列数据库。 **开源:**意味着我们可以免费使用,有问题可以给社区提Issues寻求帮助,也可以自己提一些新功能或者Bug修复的PR,共建强大的生态圈。 **监控:**意味着普罗米修斯可以用于监控场景,监控我们的服务器,监控我们的数据库,监控我们的应用程序,它都用的上。 **时间序列数据库:**维基百科上对于时间序列的定义是‘一系列数据点按照时间顺序排列’,其实就是根据时间点存储的信息,这些信息是不可变的。目前在监控场景用的比较多。 对比一些老牌的监控,比如zabbix,Prometheus近几年在容器监控方面表现的非常突出,人家就是干这个事情的。对于新的监控选型,我觉得大家可以尝试下Prometheus。 虽然监控这个工作属于运维这块的,理应要有专业的运维工程师来做。我认为作为一个后端开发,也必须要懂得一些监控相关的知识和技能储备。万一你去了创业公司,很可能什么工作都是你来做。 ## Prometheus中的一些概念 ### Prometheus Server Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。 ### Exporter Exporter将监控的数据采集起来,通过HTTP服务的形式暴露出去,Prometheus Server 会定时去拉取这些暴露的数据进行监控。 官方已经提供了很多的Exporter,比如Mysql等。下载地址:[https://prometheus.io/download/](https://prometheus.io/download/) 如果是监控我们的应用程序,可以在程序中集成官方的SDK,自己埋点暴露出需要监控的指标即可。 ### PushGateway PushGateway作为一个独立的服务,大部分场景下我们用的是pull模式,也就是Prometheus Server去拉取Exporter提供的数据,如果想使用push模式的话,可以将数据push给PushGateway,由PushGateway统一提供数据给Server。 ### Service Discovery 服务发现是一个特别重要的功能,特别是在微服务场景下监控显得尤为重要。如果没有服务发现的功能,那么每启动一个服务就需要去修改Prometheus的配置文件增加对应的配置。 有了服务发现的功能,可以动态的去发现服务信息,无需手动修改配置。官方推荐用Consul作为服务发现,像我们用Nacos的话,目前是不支持的,还需要想办法进行处理,比如定时拉取信息同步到文件中。 ### 三剑客 Prometheus目前的标配都是和Grafana,AlertManage 一起使用的,三剑客。跟ELK是一样的,正所谓三个臭皮匠赛过诸葛亮。 * Prometheus 负责拉取监控数据,存储。 * Grafana 负责展示各种监控指标,通过图形化的方式。 **Prometheus负责赚钱养家,Grafana负责美貌如花。** * AlertManage 负责异常告警,可以对接钉钉等多种消息通知。 ### 生态系统组成  ## 体验下Prometheus的魅力 最近闲来无事,我也打算学习下Prometheus。一是为了扩充自己的知识面,二也是看看能不能将其在工作中使用起来。 对于主机,数据库相关的监控,很多公司都在云上面,云平台本身就提供了很好的监控告警体系,也没必要再用Prometheus去搞一套了。 其他场景也是可以使用的,比如指标监控,监控应用的一些指标。也可以用于业务指标监控,总之玩法很多,就看你怎么玩。 自己学习体验的话直接用Docker拉镜像创建吧,简单,快速,方便。 ### 部署Prometheus ```plain docker run -d -p 9090:9090 -v /Users/yinjihuan/Downloads/prometheus/prometheus.yml:/etc/Prometheus/Prometheus.yml prom/prometheus ``` Prometheus.yml ```plain global: scrape_interval: 15s external_labels: monitor: 'codelab-monitor' scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090'] - job_name: beta_node static_configs: - targets: ['10.111.83.8:9100'] ``` 定义了两个任务,一个是Prometheus自己的监控,它本身也是一个服务,也会暴露出一些指标信息。 一个是机器的监控任务,目标需要配置IP+PORT,对应的机器上要装node_export才行,通过node_export将机器的指标数据暴露,Prometheus才能拉取到进行监控。 ### 部署Grafana ```plain docker run -d -p 3000:3000 --name=grafana -v /Users/yinjihuan/Downloads/Grafana-storage:/var/lib/grafana grafana/grafana ``` ### 部署node_export 从官网下载对应的node_export:[https://prometheus.io/download/#node_exporter](https://prometheus.io/download/#node_exporter) 解压后直接启动即可,nohup ./node_exporter & 启动,默认端口 9100。此机器IP就是上面beta_node中的IP[10.111.83.8](http://10.111.83.8/)。 ### 配置Grafana图表 访问localhost:3000就是Grafana的主页,然后在设置里面创建一个数据源,指向Prometheus的地址。  然后导入一个你喜欢的图表进行关联即可,图表可以去[https://grafana.com/grafana/dashboards?search=node](https://grafana.com/grafana/dashboards?search=node)进行搜索,比如搜node就会展示所有node_export相关的图表,每个图表有一个编号,直接根据编号load即可,需要联网。  机器监控效果  后续其他的一些操作,等我体验后再给大家分享踩坑记录。 **关于作者**:尹吉欢,简单的技术爱好者,《Spring Cloud 微服务-全栈技术与案例解析》, 《Spring Cloud 微服务 入门 实战与进阶》作者, 公众号**猿天地**发起人。