prometheus命令_使用Prometheus构造自己的性能监控大盘

619885715c822df513cf573826b74f9c.png

        我们在面试测试工程师的过程中都会被问到怎么开展性能测试,一部分同学会回答通过loadrunner、jmeter这些工具去执行压测,查看qps、响应时间等指标来衡量压测结果,另一部分同学可能会回答出通过一些top的命令来分析。然而,在我们的真实压测过程之中,使用命令在服务器上监控时往往会遇到一些问题,例如环境中有很多台机器,要监控的服务器资源项很多,在这个时候再通过命令行去进行监控可能会出现很多的遗漏。那么我们该如何解决这个问题呢?        

624b1bab2c3bde87b1e944d0a89be087.gif        这个时候不得不拿出来一个更专业的监控利器来帮助我们更好的去做性能测试,这个利器就是Prometheus。Prometheus是由SoundCloud使用Go语言开发的开源监控报警系统和时序列数据库(TSDB)。

            下面我们来详细介绍一下

1

        Prometheus特征

  •         多维数据模型

  •         PromQL

  •         单服务节点完全自主,不依赖分布式存储

  •         通过Http的pull方式进行数据拉取

  •         可以通过网关进行时序列数据推送

  •         通过服务发现或静态配置来发现目标服务对象

  •         支持多种图形化工具来展示数据

2

        Prometheus架构图

dd435f10a59e49e6ccc9725c0de36bf3.png

3

基本工作原理

        Prometheus通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

4

部署步骤

 1、安装Prometheus server端

        server端可以用编译包或docker进行部署,本文会分别介绍这两种方式。

        编译包安装:

        解压缩Prometheus包后查看包含的内容:

[root@besttest-1 prometheus-2.18.1.linux-amd64]# lsconsole_libraries  consoles  data  LICENSE  NOTICE  prometheus  prometheus.yml  promtool  tsdbconsole_libraries  consoles  data  LICENSE  NOTICE  prometheus  prometheus.yml  promtool  tsdb

        其中的prometheus就是prometheus的server执行文件,prometheus.yml则是我们的配置文件。

# 配置文件global: scrape_interval: 15s # 控制Prometheus多久取一次数据 evaluation_interval: 15s # 控制Prometheus多久检查一次规则rule_files: # 加载的规则,当前我们暂时没有做任何规则 # - "first_rules.yml" # - "second_rules.yml" scrape_configs: # 监视资源列表  - job_name: 'prometheus' # 如果有多个job,需要将job_name和下面的配置一起添加    static_configs:        - targets: ['localhost:9090'] # 资源地址,如有多个则在这个[]中添加,通过,分隔  - job_name: 'prometheus2'    static_configs:        - targets: ['localhost:9091']
        

    启动prometheus时默认会使用9090端口,因此启动后直接访问网页地址+端口号就可以访问,本文中示例服务器ip为192.168.5.128,则访问地址为http://192.168.5.128:9090,当然如果需要指定端口可以增加配置如下示例,就可以访问到Prometheus的页面上。

# 修改端口并启动,如不需要修改端口号则不需要加-web.listen-address这个参数./prometheus --config.file=prometheus.yml --web.listen-address=0.0.0.0:9090
        

cbf6d7121f7965113d0ce97ebfddd8da.png

    看到 Server is ready to receive web requests,就代表我们的服务已经启动了,如果需要后台运行,可以使用nohup的方式启动。

8a4a46bfcd1cf5e44f7f5f8d6d7583f9.png

    同时还可以访问http://192.168.5.128:9090/metrics访问抓取到全部指标数据

023b83c242591099f5fc8abf00aa93f5.png

    默认情况下,我们的prometheus会主动抓取自己的/metrics数据,这个时候我们可以访问页面中的的Graph来查看数据,如下图所示为查询cpu的使用情况;

6a3af7183222c4550fea5e896196228d.png点击上方的status->taget可以查看当前已连接的节点。

67c0fb26fdc48d3317fe93206f153087.png

    接下来我们看下docker部署的方式,docker部署需要先行准备好一份配置文件,如上编译包中的配置相同即可。本文示例中配置文件保存在/data目录下,大家记得使用docker部署的时候需要替换一下路径;

docker run -idt --name=prometheus \    -p 9090:9090 \    -v /data/prometheus.yml:/etc/prometheus/prometheus.yml \    prom/prometheus \    --config.file=/etc/prometheus/prometheus.yml \    --web.enable-lifecycle

其余操作与编译包部署的一样,访问地址即可

 2、部署node_exporter节点

    前面我们的prometheus服务端已经部署完成,现在开始我们要为我们的服务端提供更多的节点接入了,此处我们使用的是node_exporter来进行介入。同样可以使用包和docker进行部署,下面先从包开始介绍;

    解压缩node_exporter包,并启动node_exporter

# 启动命令./node_exporter
    

bcd89fab86262a62a128a14985612934.png

    从上面的启动内容中,我们可以看到node_exporter默认帮我们监听了9100端口,接下来,让我们修改一下前面prometheus的配置,在下面的targets中添加上node_exporter的节点ip+端口。

# 配置文件global:  scrape_interval:     15s # 控制Prometheus多久取一次数据  evaluation_interval: 15s # 控制Prometheus多久检查一次规则rule_files: # 加载的规则,当前我们暂时没有做任何规则  # - "first_rules.yml"  # - "second_rules.yml"scrape_configs: # 监视资源列表  - job_name: 'prometheus' # 如果有多个job,需要将job_name和下面的配置一起添加    static_configs:  - targets: ['192.168.5.128:9090','192.168.5.127:9100'] # 资源地址,如有多个则在这个[]中添加,通过,分隔

    添加完以后,刷新我们前面的服务端的targets页面,如本文环境访问:http://192.168.5.128:9090/targets

648d50d8058ab7c2f85020faeaa12593.png

    

    访问前面的数据图表查看,此时获取出的数据已经包含了所有节点的数据。

fc2f7b94bd7f4c31b2559f733f48b520.png

    接下来介绍一下docker部署node_exporter的方法:

docker run -d --name=node-exporter -p 9100:9100 prom/node-exporter

    其余操作与前面的一致,到此我们的服务端和子节点的部署已经完成了,剩下的就是如何让我们能更完善的看到数据图表,此时就要引出我们今天要介绍的另外一部分核心 Grafana了。

3、Grafana的使用

        Grafana是用于可视化大型测量数据的开源程序,它提供了强大和优雅的方式去创建、共享、浏览数据。并且支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。

        

    部署方式我们通过docker来执行部署在prometheus的server端上

docker run -d -p 3000:3000 grafana/grafana

    如果通过安装包的话,执行下面的命令即可

wget https://dl.grafana.com/oss/release/grafana-6.7.3.linux-amd64.tar.gztar -zxvf grafana-6.7.3.linux-amd64.tar.gz

    安装并启动好以后,访问http://部署机器ip:3000/。默认的用户名密码都是admin,当第一次访问的时候会要求修改密码,按照规则修改管理员密码即可进入。

8d5ceaa57fdcc66ce951855c4ac882c2.png

    

    修改过密码以后,会进入到欢迎的界面中,并且有一个步骤对我们的配置提供帮助。

d30cd60e04775c5567961b62f519ac09.png

    点击add data source 添加数据源,如下图所示,显示了我们可以添加的数据源,由于我们现在要展示的是prometheus的数据,则选择prometheus。

f60d8f2c02f36ca4714e41894c4b78c6.png

    选择以后,进入配置页面中,settings中的配置,name是当前数据源的名称,url配置我们前面prometheus的server端地址,此处为http://192.168.5.128:9090,Scrape interval是向prometheus去获取数据的时间周期,默认为15s,query timeout为查询超时设置,设置好以后点击 Save & Test 按钮保存

28e9563daa32008a9f4ded38dc20742c.png

    接下来为我们添加用户,点击左侧的serverAdmin 按钮中的Users来添加用户

e61b05fa9e9907595f94fe30c01f115f.png

    ,在Configuration中的Users可以设置用户的权限

80dc6c36e296298cfb77883387be77bb.png

数据源配置好了,用户也配置好了,接下来就是我们最后一步了,引入并配置一个好看的DashBoard。我们可以自己自定义一个DashBoard,也可以从Grafana的官网上已有的模版导入到我们的Grafana中来使用。官网的Dashboards地址:https://grafana.com/grafana/dashboards?orderBy=name&direction=asc,此次我们打开模板为:https://grafana.com/grafana/dashboards/8919

168340867751e1f0e7a1bde21f6b8b1d.png

在图中可以看到 Get this dashboard:  8919 ,这个8919 就是当前这个模板的id,复制下来这个id后回到我们的Grafana中的Import模块,输入id 8919后,点击其他空白处后展示出导入操作,可以修改导入到DashBoard的名字,最下面的Prometheus Data Source选项选择我们前面配置的数据源。

533ba6b7c9976246dd49896e1a06810c.png

16064bcb0fd34b6c170b4a68c47379df.png

点击import后,就可以进入到我们的监控页面了,上方job是我们前面配置JobName,主机名是我们targets中的机器的hostname。

e7698bfed440dd16069094bc0970a756.png

    到此,我们的环境监控大盘已经部署完成了,剩下要做的就是当你要将哪些机器加入到监控大盘中的时候,在前面的配置中添加即可。

    通过这个环境监控大盘的曲线图可以很好的帮助我们完成压测过程中的监控,在我们的压测过程之中可以通过点选右上角的按钮选择刷新时间和展示的监控时间,可以让我们看到更细粒度的监控数据,从而更好的了解到压测时服务器资源的使用率。

    当然prometheus不仅仅能帮我们完成监控,他还可以为我们提供针对环境指标的报警功能,后续会一一给大家讲解。

600d316bd7160ca5b8999a3c4e04b5b3.png

安大叔高级性能测试实战班

5.16(本周六)开课

报名咨询请添加下方微信

08e2367911ee737ecf9bd96d198c67ae.gif

829772832f6256a31e1e3e73cd19314e.png

扫码联系我

课程大纲:高级性能测试&全栈测试课程简介

发送 监控大盘 可以获取软件包噢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值