在上集中,我从prometheus采集端的golang程序准备方便进行介绍,实战了如何在咱们的golang程序里,添加自己的metrics,注册采集器,注册requestHandler,一个集成在咱们自己的golang程序里的exporter就这样完成了, 通过这个步骤,咱们的golang程序自身就是个exporter,可以通过http请求,向prometheus发送自身采集到的各种指标了。
查看上集详细剧情
本集接着上集的内容,从golang客户端,转到prometheus服务端和作为应用端的grafana,来实战一把GPE的集成过程。
Prometheus(普罗米修斯),开始整你上集略微提到了,在GPE体系中, 可以简单的把Prometheus理解为一个 时序数据库 ,他提供的是采集数据后的数据保存功能,并且提供了针对数据库的查询功能 ,
TSDB时序数据库,可能作为 java 开发多年的兄弟们,还比较陌生,这个和 关系型数据库 和其他常听到的 NOSQL 都不一样,她以时间为主键,各种维度为索引,保存单一值的一种场景性的数据库,和 neo4j 图形数据库类似的,针对特殊场景的,neo4j针对于图形关系和关系维度的处理,而咱们这里的TSDB是针对于不可更新,不可逆的时时序列的场景的,
我的物联网相关项目都是使用的TSDB, 那在项目里针对性的场景里,用起来真的是嘎嘎香呀。
上面是简单的原理介绍, 下面直接切入Prometheus的G点,安装和配置。
我是使用 Docker 进行安装的,对Docker不熟悉的朋友,就直接从官网上下载程序包进行解压安装。
docker的安装方式mkdir -p /volume/prometheus
vi /volume/prometheus/prometheus.yaml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static _configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: boot4go-gateway-group01
static_configs:
- targets: ['192.168.56.1:9000']
labels:
type: gateway-server
group: default
启动docker [ root @izwz9g3javh5eeean08tbtz ~]# docker run -d \
-p 3001:9090 \
--name=prometheus \
-v /volume/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml \
prom/prometheus
查看prometheus的target list Grafana,最全面的仪表盘产品,没有之一 Grafana是一个web端产品,是prometheus的延展应用,提供的是分析报表和仪表盘的应用功能,
prometheus可以作为其数据源Datasource来进行使用,当然她还支持其他的各种产品作为数据源,比如数据库( mysql 等),消息队列( kafka 等),ES引擎( Elasticsearch ),
老外这样的商业产品,真的是强大到一逼, 国内差了太多条街了。 还是都想着钱去了, 比如我,以前一直想做 jmeter 的本地化和云端化,自己做老板的时候,有钱的时候,得瑟的想实现理想,投入了资金进去了,
但是养一个团队长期的做这个,实在是烧钱呀,一个是需要高端人才,能够阅读英文文档,对底层代码熟悉,一个是需要市场支持, 坚持没多久,眼见钱烧完了,最后还是做商城,做APP,做小程序的项目去了, 这些都不需要高端人才,找些junior的工程师就可以搞定,而且单还好找,国内估计都是这样的,有梦想的都被现实打趴下了,没有沉淀,这也是国内为什么没有好的商业产品出现的原因,
闲话了,回到正题, 封面的图就是grafana里一个普通的仪表盘,
docker安装grafanadocker image pull grafana/grafana
mkdir /volume/grafana
启动grafana
[root@izwz9g3javh5eeean08tbtz ~]# docker run \
-d \
-p 3000:3000 \
--name=grafana \
-v /volume/grafana:/var/lib/grafana \
grafana/grafana
添加Dashboad
启动grafana后,选择prometheus作为数据源, 然后定义boot4go-gateway的dashboard, 这里需要掌握有关prometheus的ql语法和使用, 以及grafana的相关指标panel的设置和参数提取, 为了方便大家开箱即用,我已经在grafana的官网里发布了boot4go-gateway的dashboard,大家直接import到自己的grafana里即可
把这个导入到自己的dashboard里即可。
通过这里可以查看到golang程序运行时的各项指标了。
下一步就可以跑jmeter或者golang的压力测试的客户端,开压,通过仪表盘来监控程序的各项开销,达到性能分析和性能报告的目的了。