1.安装
1.1 安装jemter
①下载地址: http://jmeter.apache.org/download_jmeter.cgi(Windows版本下载.zip,Linux版本下载.tgz)
②下载后无需安装,解压即可使用.解压目录如下:
③配置环境变量
新增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图表都省略了
- 打开网站:选择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.总结
仅供自己学习记录,有不好的地方大家可以提出来,共同学习进步。