docker+jmeter+prometheus+grafana入门实战

1.安装

1.1 安装jemter

①下载地址: http://jmeter.apache.org/download_jmeter.cgi(Windows版本下载.zip,Linux版本下载.tgz)
②下载后无需安装,解压即可使用.解压目录如下:
jmeter解压目录
③配置环境变量
新增JMETER_HOME环境变量,变量值为JMeter解压路径
环境变量
编辑CLASSPATH变量,加上%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
在这里插入图片描述
④打开jmeter
完成以上操作后打开JMeter中bin目录下面的jmeter.bat文件即可打开JMeter了,打开的时候会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不要关闭命令窗口。
在这里插入图片描述
在这里插入图片描述
打开成功后,出现如下图界面即为成功
在这里插入图片描述

1.2 安装docker

因为网上的安装方式较多,我这里就用自己常用的方式进行安装,可以参考:[docker安装方法]
(https://www.runoob.com/docker/centos-docker-install.html)
使用国内daocloud一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

测试docker是否安装成功(没报错,即成功):

dokcer --version

展示如下内容代表安装成功
展示如下内容代表安装成功

1.3 docker安装prometheus

  • 拉取镜像包:
docker pull prom/prometheus
  • 启动镜像:
    prometheus.yml配置文件可以先不用配置,等我们启动了其它服务并需要监听时在配置
docker run -d --name=prometheus \
    --restart=always \
    -p 9090:9090 \
    -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    -v prometheus_data:/prometheus \
    -v /etc/localtime:/etc/localtime:ro \
    prom/prometheus
  • 命令讲解:
/etc/prometheus/prometheus.yml这是你云服务上的prometheus.yml的配置文件

-d:后台运行容器,返回容器ID
-name:为容器指定一个名称
--restart=always:当Docker重启时,容器能自动启动
-p: 指定端口映射 格式为: 主机port:容器port
-v或-volume: 绑定一个卷(简单说就是你云服务上文件和容器中的文件共享) 
  • 验证:
    浏览器输入:http://ip:9090/targets
    打开如下界面说明成功了,没有内容是正常的,后面会进行配置的.
    成功图片

1.4 docker安装grafana

  • 拉取镜像包:
docker pull grafana/grafana
  • 启动容器:
docker run -d --name=grafana \
  --restart always \
  -p 3000:3000 \
  -v /etc/localtime:/etc/localtime \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana
  • 验证:
    启动成功后访问:http://ip:3000
    进入grafana界面说明成功了,默认用户密码为admin/admin
    成功页面

2.监控mysql

安装mysql等操作文章内容过多就不在这里写了,如果确实需要可以私信我.
如果我们要监听mysql就需要下载mysql_exporter,这里我们也是使用容器安装mysql_exporter

2.1安装mysql_exporter

  • 拉取mysql_exporter镜像:
docker pull prom/mysqld-exporter
  • 启动mysql_exporter容器
docker run -d \
  --name mysql_exporter \
  --restart always \
  -p 9104:9104 \
  -e DATA_SOURCE_NAME="user:password@(my-mysql-network:3306)/" \
  prom/mysqld-exporter

注意:
	-e DATA_SOURCE_NAME="user:password@(my-mysql-network:3306)/"这行命令中,
	user:是你的数据库名称,
	passowrd:是数据库密码,
	my-mysql-network:是数据库的ip切记是ip没有http,
	3306:是端口,如果你的不一致你可以进行修改
  • 验证mysql_exporter容器是否启动成功:
    启动成功后就已经开始监听你的mysql了,验证:浏览器打开http://ip:9104/metrics
    打开如下图说明成功
    在这里插入图片描述

2.2配置prometheus

  • 修改prometheus配置文件
# 这里配置文件就是之前你启动容器时映射出来的配置文件路径
vim /etc/prometheus/prometheus.yml

配置文件里填写如下内容:

scrape_configs:
  # 添加作业并命名(这个名称自己随便定义,不过最好是和你监听的服务有关)
  - job_name: 'mysql'
    # 静态添加node
    static_configs:
    # 指定监控端 ip:你服务器的ip  port:你启动mysql_exporter容器映射出来的端口(9104)
    - targets: ['{ip}:{port}']
  • 重新加载prometheus配置文件(重启容器即可)
    在这里插入图片描述
# 查看prometheus的CONTAINER ID
docker ps
# 重启你的prometheus容器
docker restart {CONTAINER ID|NAMES}
  • 验证
    访问网址:http://{ip}:9090/targets,出现如下图片内容说明配置成功:
    在这里插入图片描述

2.3配置grafana

  • prometheus自带的报告图表
    在这里插入图片描述
    如果你觉得这个图表还可以那就不用配置grafana了
  • 配置grafana图表
    • 配置数据源-Data Sources
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 选择一个好看的grafana图表
      打开网站:选择grafana图表
      在这里插入图片描述
      在这里插入图片描述
    • 导入grafana图表(这里我用的是7362)
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

3.监控主机系统

这里我们要监控主机系统,所以是不太建议讲其部署到Docker容器中,因为它需要访问主机系统,所以我们这里是直接安装在主机的,当然也是支持docker容器安装以及配置的,后面我会给一个借鉴网站,你可以在哪里去看看,这里就写我自己实战的

3.1安装node_exporter

  • 下载地址: exporter download,其中有各种exporter可供选择,监控主机我们选择node_exporter.
    在这里插入图片描述
  • 将文件上传到云服务上去,再解压:
# 解压
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz
  • 直接执行node_exporter文件
# 进入解压目录
cd node_exporter-1.3.1.linux-amd64
# 方式一:直接执行文件
./node_exporter
# 方式二:也可以进行后台启动进程(推荐)
nohup ./node_exporter >> output.log 2>&1 &
  • 验证,访问:http://ip:9100/metrics,出现如下信息说明成功:
    在这里插入图片描述

3.2配置prometheus

这里其实和mysql一样,以后你要新增一个exporter其实就是在配置文件中加一下就好了

  • 修改prometheus配置文件
# 这里配置文件就是之前你启动容器时映射出来的配置文件路径
vim /etc/prometheus/prometheus.yml

配置文件里填写如下内容:

scrape_configs:
  # 添加作业并命名(这个名称自己随便定义,不过最好是和你监听的服务有关)
  - job_name: 'node'
    # 静态添加node
    static_configs:
    # 指定监控端 ip:你服务器的ip  port:你启动mysql_exporter容器映射出来的端口(9104)
    - targets: ['{ip}:{port}']
  • 重新加载prometheus配置文件(重启容器即可)
    在这里插入图片描述
# 查看prometheus的CONTAINER ID
docker ps
# 重启你的prometheus容器
docker restart {CONTAINER ID|NAMES}
  • 验证
    访问网址:http://{ip}:9090/targets,出现如下图片内容说明配置成功:
    在这里插入图片描述

3.3配置grafana

  • 查看prometheus的图表
    在这里插入图片描述
  • 配置grafana图表
    基本和mysql哪里配置的一样,先配置数据源,然后导入grafana图表,这里配置数据源就省略了,以及如何选择grafana图表都省略了
  • 选择好id然后导入
    在这里插入图片描述
  • 效果展示:
    在这里插入图片描述

4.jmeter+Prometheus+Grafana集成

在JMeter插件库中,有一些后端监听器可供Kafka、ElasticSearch和Azure使用。默认情况下,Jmeter支持Graphite和InfluxDB。但是Prometheus没有后端监听器。
幸运的是,找到了这个优秀的开源项目来为Prometheus导出JMeter指标
(https://github.com/johrstrom/jmeter-prometheus-plugin)

4.1安装JMeter-Prometheus插件

我们需要下载jmeter-prometheus-plugin-0.6.0.jar文件,然后将其放在/lib/ext中,重启Jmeter就可以了。
下载插件地址:下载地址一 下载地址二

  • 通过在JMeter中创建一个简单的脚本来验证安装,然后右击 线程组 > 添加 > 监听器 > Prometheus Listener,如下图:
    在这里插入图片描述
    Prometheus Listener
    或者右键点击 线程组 > 添加 > 配置元件> Prometheus Metrics
    在这里插入图片描述
  • 运行JMeter测试,用几个线程配置你的线程组,并点击无限循环运行。
    插件会默认帮你在本地创建一个端口为9270的服务,你访问网址:http://localhost:9270/metrics就会看到如下内容:
    在这里插入图片描述

4.2配置prometheus这里和上面的步骤都是一样的

这里我看了很多地方都是本地启动的这个服务,和influxdb不太一样,可以本地连接远程的。
我想了如下两种方法解决,这里留个疑问吧。
一、这里要不就是把jmeter在云服务上执行,然后它默认开的ip和端口绑定到prometheus配置文件中,然后就可以监控到
二、本地做内网穿透用netapp,然后把ip和端口绑到prometheus配置文件中,这样也可
三、不用prometheus去监控,改用infuxldb去监控,我后面出一篇infuxldb+jmeter+grafana的博客
总结:这里就不写了,上面两种方法都实践过了,是可行的,期待大佬们有更好的方法。

4.3配置grafana

如果你上面的监控mysql和监控主机都实战了,这里也就是OK的,差不多分享到这了,有问题可以评论区提出来。

5.总结

仅供自己学习记录,有不好的地方大家可以提出来,共同学习进步。
参考:https://www.kancloud.cn/willseecloud/prometheus/1904300

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值