linux cpu占用率如何看
310
2022-09-11
微服务从代码到k8s部署应有尽有系列(十三、服务监控)
我们用一个系列来讲解从需求到上线、从代码到k8s部署、从日志到监控等各个方面的微服务完整实践。
整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中间件,所用到的技术栈基本是go-zero项目组的自研组件,基本是go-zero全家桶了。
实战项目地址:github.com/Mikaelemmmm…
1、概述
好的服务一定是可以被及时监控的,在go-zero-looklook中我们使用目前比较流行的prometheus来作为监控工具,然后使用grafana来显示
go-zero已经在代码中给我们集成好了prometheus
// StartAgent starts a prometheus agent.func StartAgent(c Config) { if len(c.Host) == 0 { return } once.Do(func() { enabled.Set(true) threading.GoSafe(func() { prom addr := fmt.Sprintf("%s:%d", c.Host, c.Port) logx.Infof("Starting prometheus agent at %s", addr) if err := nil); err != nil { logx.Error(err) } }) })}
无论当我们启动api、rpc都会额外启动一个goroutine 提供prometheus的服务
【注】如果像我们之前order-mq这种使用serviceGroup管理的服务,在启动文件main中要显式调用一下才可以,api、rpc不需要,配置都一样
package main.....func main() { .... // log、prometheus、trace、metricsUrl. if err := c.SetUp(); err != nil { panic(err) } ......}
2、实现
2.1 配置prometheus与grafana
在项目下的docker-compose-env.yml文件中
我们来deploy/prometheus/server/prometheus.yml看看prometheus配置文件
global: scrape_interval: external_labels: monitor: 'codelab-monitor'# 这里表示抓取对象的配置scrape_configs: - job_name: 'prometheus' scrape_interval: 5s #重写了全局抓取间隔时间,由15秒重写成5秒 static_configs: - targets: ['127.0.0.1:9090'] - job_name: 'order-api' static_configs: - targets: ['order-api:9091'] labels: job: order-api app: order-api env: dev - job_name: 'order-rpc' static_configs: - targets: ['order-rpc:9091'] labels: job: order-rpc app: order-rpc env: dev - job_name: 'order-mq' static_configs: - targets: ['order-mq:9091'] labels: job: order-mq app: order-mq env: dev - job_name: 'usercenter-api' static_configs: - targets: ['usercenter-api:9091'] labels: job: usercenter-api app: usercenter-api env: dev - job_name: 'usercenter-rpc' static_configs: - targets: ['usercenter-rpc:9091'] labels: job: usercenter-rpc app: usercenter-rpc env: dev - job_name: 'travel-api' static_configs: - targets: ['travel-api:9091'] labels: job: travel-api app: travel-api env: dev - job_name: 'travel-rpc' static_configs: - targets: ['travel-rpc:9091'] labels: job: travel-rpc app: travel-rpc env: dev - job_name: 'payment-api' static_configs: - targets: ['payment-api:9091'] labels: job: payment-api app: payment-api env: dev - job_name: 'payment-rpc' static_configs: - targets: ['payment-rpc:9091'] labels: job: payment-rpc app: payment-rpc env: dev - job_name: 'mqueue-rpc' static_configs: - targets: ['mqueue-rpc:9091'] labels: job: mqueue-rpc app: mqueue-rpc env: dev - job_name: 'message-mq' static_configs: - targets: ['message-mq:9091'] labels: job: message-mq app: message-mq env: dev - job_name: 'identity-api' static_configs: - targets: ['identity-api:9091'] labels: job: identity-api app: identity-api env: dev - job_name: 'identity-rpc' static_configs: - targets: [ 'identity-rpc:9091' ] labels: job: identity-rpc app: identity-rpc env: dev
2.2 业务配置
实现上我们业务也不需要添加任何代码(除了serviceGroup管理的服务)
我们只需要在业务配置文件中配置即可,我们拿usercenter来举例
1)api
2)rpc
3)mq(serviceGroup)
【注】(再强调一次)如果像我们之前order-mq这种使用serviceGroup管理的服务,在启动文件main中要显示调用一下才可以,api、rpc不需要
package main.....func main() { .... // log、prometheus、trace、metricsUrl. if err := c.SetUp(); err != nil { panic(err) } ......}
2.3 查看
2.4 配置grafana
访问默认账号、密码都是admin
配置数据源是prometheus
然后配置
【注】这里是在docker中配置的,所以go-zero 并 star 支持我们!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~