美文网首页Jmeter
Jmeter+InfluxDB+Grafana+Promethe

Jmeter+InfluxDB+Grafana+Promethe

作者: 小二哥很二 | 来源:发表于2021-05-03 16:29 被阅读0次

    前置:
    - Linux系统版本:CentOS Linux release 7.8.2003 (Core)
    - 命令:cat /etc/redhat-release

    - JMeter版本:apache-jmeter-5.4.1
    - InfluxDB版本:InfluxDB shell version: 1.8.4
    - JDK版本:openjdk version "1.8.0_292"
    - Windows查看端口是否被占用:netstat -ano|findstr "3306",没有返回数据代表没被占用

    C:\Users\小二哥>netstat -ano|findstr "3306"
    
    C:\Users\小二哥>netstat -ano|findstr "6060"
    

    - Centos查看端口是否被占用:netstat -tunlp | grep 8086

    一、安装JDK

    1.查看JDK可安装版本
    yum search java|grep jdk

    [root@iZwz9ga2spyeb5u9tdq8t5Z /]# yum search java|grep jdk
    ldapjdk-javadoc.noarch : Javadoc for ldapjdk
    java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
    java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
    java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
    java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
    java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
    java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
    java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
    java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
    java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
    java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without
    java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
    java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
    java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment 8
    java-1.8.0-openjdk.x86_64 : OpenJDK 8 Runtime Environment
    java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
    java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
    java-1.8.0-openjdk-demo.i686 : OpenJDK Demos 8
    java-1.8.0-openjdk-demo.x86_64 : OpenJDK 8 Demos
    java-1.8.0-openjdk-devel.i686 : OpenJDK Development Environment 8
    java-1.8.0-openjdk-devel.x86_64 : OpenJDK 8 Development Environment
    java-1.8.0-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 8
    java-1.8.0-openjdk-headless.x86_64 : OpenJDK 8 Headless Runtime Environment
    java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
    java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed
    java-1.8.0-openjdk-src.i686 : OpenJDK Source Bundle 8
    java-1.8.0-openjdk-src.x86_64 : OpenJDK 8 Source Bundle
    java-11-openjdk.i686 : OpenJDK Runtime Environment 11
    ......
    java-latest-openjdk-static-libs-fastdebug.x86_64 : OpenJDK 16 libraries for
    ldapjdk.noarch : The Mozilla LDAP Java SDK
    

    2.查安装JDK,这里安装的是open jdk,默认安装路径:/usr/lib/jvm/
    yum install -y java-1.8.0-openjdk-devel.x86_64

    3.配置JDK环境变量
    1)进入配置文件:vim /etc/profile
    2)在结尾处添加, G 快速移至最后一行:

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
    export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    

    3)重新加载profile文件:source /etc/profile
    4)验证JDK安装和配置成功:java -version

    二、安装JMeter

    1.官网下载到本地:http://jmeter.apache.org/download_jmeter.cgi

    Jmeter

    2.服务器创建安装目录

    [root@iZwz9ga2spyeb5u9tdq8t5Z local]   cd /usr/local
    [root@iZwz9ga2spyeb5u9tdq8t5Z local]   mkdir jmeter
    

    3.上传并解压
    1)上传方式很多,自行百度。上传到jmeter目录下
    2)解压:unzip apache-jmeter-5.4.1.zip

    [root@iZwz9ga2spyeb5u9tdq8t5Z jmeter]# unzip apache-jmeter-5.4.1.zip 
    [root@iZwz9ga2spyeb5u9tdq8t5Z jmeter]# ls
    apache-jmeter-5.4.1  apache-jmeter-5.4.1.zip
    

    4.配置JMeter环境变量
    1)进入配置文件:vim /etc/profile
    2)在结尾处添加, G 快速移至最后一行:

    export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.4.1
    export PATH=${JMETER_HOME}/bin:$PATH
    

    3)重新加载profile文件:source /etc/profile
    4)验证安装配置成功:jmeter -v

    [root@iZwz9ga2spyeb5u9tdq8t5Z jmeter]# jmeter -v
    OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
        _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
       / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
      / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
     / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
    /_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.4.1
    
    Copyright (c) 1999-2021 The Apache Software Foundation
    

    二、安装InfluxDB

    1.指定目录下下载InfluxDB,由于之前安装2.x的兼容不了,这里学习记录的是1.x:
    - 1.0 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.4.x86_64.rpm
    - 2.0 wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.4.x86_64.rpm

    2.安装InfluxDB:yum localinstall influxdb-1.8.4.x86_64.rpm,两个主要文件位置

    influxdb.service: /usr/lib/influxdb/scripts/influxdb.service
    influxdb.conf: /etc/influxdb/influxdb.conf
    

    3.更改服务启动配置:vim influxdb.service
    1)将User和Group值改成root

    [Service]
    User=root
    Group=root
    LimitNOFILE=65536
    EnvironmentFile=-/etc/default/influxdb
    ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf $INFLUXD_OPTS
    KillMode=control-group
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    Alias=influxd.service
    

    2)重新生效服务:systemctl daemon-reload

    4.查看Influxdb安装成功:influx -version

    [root@iZwz9ga2spyeb5u9tdq8t5Z scripts]# influx -version
    InfluxDB shell version: 1.8.4
    

    5.启动Influxdb服务
    1)临时启动:systemctl start influxdb
    2)开机启动:systemctl enable influxdb
    3)查看运行状态:ps -ef | grep -i "influx"或者service influxdb status

    [root@iZwz9ga2spyeb5u9tdq8t5Z /]# ps -ef | grep -i "influx"
    influxdb 18955     1  0 19:21 ?        00:00:00 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
    root     22749 18221  0 19:24 pts/0    00:00:00 grep --color=auto -i influx
    
    [root@iZwz9ga2spyeb5u9tdq8t5Z /]# service influxdb status
    Redirecting to /bin/systemctl status influxdb.service
    ● influxdb.service - InfluxDB is an open-source, distributed, time series database
       Loaded: loaded (/usr/lib/systemd/system/influxdb.service; enabled; vendor preset: disabled)
       Active: active (running) since 一 2021-05-03 19:21:06 CST; 4min 22s ago
         Docs: https://docs.influxdata.com/influxdb/
     Main PID: 18955 (influxd)
       CGroup: /system.slice/influxdb.service
               └─18955 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
    

    6.创建Influxdb数据库
    1) 进入influx命令:influx

    [root@iZwz9ga2spyeb5u9tdq8t5Z /]# influx
    Connected to http://localhost:8086 version 1.8.4
    InfluxDB shell version: 1.8.4
    

    2)展示数据库,和mysql类似:show databases

    > show databases
    name: databases
    name
    ----
    _internal
    

    3)创建/删除数据库: create/drop(删除) jmeter(库名)

    > create database jmeter
    > show databases
    name: databases
    name
    ----
    _internal
    jmeter
    

    4)切换数据库:use jmeter(库名);展示表:show measurements

    > use jmeter
    Using database jmeter
    > show measurements
    > 
    

    5)创建measurements:influxdb中没有创建表的语句,是直接通过insert语句实现measurement
    insert语法:insert measurementName,tag1=value1[,tag2=value2] field1=value1[,field2=value2] <时间戳>

    • insert
    > insert aliyun,name="lily",age=18 favourite="melon",job=800
    > insert aliyun,name="harry",age=22 favourite="magic",job=666
    > show measurements
    name: measurements
    name
    ----
    aliyun
    > 
    
    • 查询该表aliyun
    > select * from aliyun
    name: aliyun
    time                age favourite job name
    ----                --- --------- --- ----
    1620047056397676385 18  melon     800 "lily"
    1620047100232010422 22  magic     666 "harry"
    > 
    

    ※会发现查询出来的时间是时间戳,解决办法是:influx -precision rfc3339启动数据库

    • 查询所有tag的key和value:age name
    keys:
    > show tag keys from aliyun
    name: aliyun
    tagKey
    ------
    age
    name
    > 
    
    values:
    > show tag values from aliyun with key="name"
    name: aliyun
    key  value
    ---  -----
    name "harry"
    name "lily"
    > 
    
    • ※疑问:
      a) 如何修改端口?2.x怎么安装?小二还没摸索明白~~
      b)官网说的yum安装,还有密钥认证,小二也没成功

    三、安装Chronograf

    由于InfluxDB1.x以后就没有了webUI界面,所以需要Chronograf来实现可视化构建

    1.下载安装Chronograf
    wget https://dl.influxdata.com/chronograf/releases/chronograf-1.8.10.x86_64.rpm
    sudo yum localinstall chronograf-1.8.10.x86_64.rpm

    2.启动Chronograf:systemctl start chronograf,同样可以设置开机启动
    3.访问webUI界面,配置influxdb数据库:http://ip:8888
    一路点到底,因为小二也不知道那些字段干什么的?/(ㄒoㄒ)/~~

    新增数据库连接 配置数据库

    四、安装Grafana

    Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能:https://grafana.com/grafana/download

    1.切换到指定目录下rpm方式下载
    wget https://dl.grafana.com/oss/release/grafana-7.4.3-1.x86_64.rpm

    2.安装:sudo yum install grafana-7.4.3-1.x86_64.rpm,配置文件grafana.ini位置

    [root@iZwz9ga2spyeb5u9tdq8t5Z grafana]# ls
    grafana.ini  ldap.toml  provisioning
    [root@iZwz9ga2spyeb5u9tdq8t5Z grafana]# pwd
    /etc/grafana
    

    3.启动grafana
    1)开机启动
    启动服务:systemctl start grafana-server
    开机启动:systemctl enable grafana-server
    重新启动:systemctl restart grafana-server

    2)查看启动状态

    [root@iZwz9ga2spyeb5u9tdq8t5Z grafana]# service grafana-server status
    ● grafana-server.service - Grafana instance
       Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: disabled)
       Active: active (running) since Wed 2021-05-05 17:56:30 CST; 1min 56s ago
         Docs: http://docs.grafana.org
     Main PID: 18383 (grafana-server)
       CGroup: /system.slice/grafana-server.service
    

    4.配置grafana:默认监听端口3000,账号admin/admin
    1)添加数据源
    Configration –>Data Sources –> Add data source 选择InfluxDB

    配置InfluxDB image.png

    点击 Save&Test 后出现绿色提示代表添加成功

    保存

    2)寻找仪表盘Dashboard模板:https://grafana.com/dashboards?dataSource=influxdb

    输入jmeter 复制ID

    3)添加仪表盘Dashboard:Create→Import

    第一步Import 第二步Load 第三步确认

    ※这里的measurement name要和jmeter里的一致~

    五、安装Prometheus

    1.官网下载:https://prometheus.io/docs/introduction/first_steps/,以二进制方式安装

    下载地址

    2.安装Prometheus和node_exporter

    • 创建目录:mkdir prometheus
    • 上传压缩包
    • 解压文件:tar -zxvf prometheus.tar.gz
    • 修改解压文件夹名称:mv prometheus-2.26.0.linux-amd64 prometheus
    • 进入prometheus目录下:cd prometheus

    3.启动服务:./prometheus --config.file=prometheus.yml &

    level=info ts=2021-05-11T05:39:39.559Z caller=main.go:815 fs_type=EXT4_SUPER_MAGIC
    level=info ts=2021-05-11T05:39:39.559Z caller=main.go:818 msg="TSDB started"
    level=info ts=2021-05-11T05:39:39.559Z caller=main.go:944 msg="Loading configuration file" filename=prometheus.yml
    level=info ts=2021-05-11T05:39:39.560Z caller=main.go:975 msg="Completed loading of configuration file" filename=prometheus.yml totalDuration=906.425µs remote_storage=7.891µs web_handler=543ns query_engine=1.073µs scrape=346.046µs scrape_sd=81.428µs notify=54.125µs notify_sd=30.896µs rules=4.826µs
    level=info ts=2021-05-11T05:39:39.560Z caller=main.go:767 msg="Server is ready to receive web requests."
    

    4.版本查询:./promethues --version

    [root@iZwz9ga2spyeb5u9tdq8t5Z prometheus]  ./prometheus --version
    prometheus, version 2.26.0 (branch: HEAD, revision: 3cafc58827d1ebd1a67749f88be4218f0bab3d8d)
      build user:       root@a67cafebe6d0
      build date:       20210331-11:56:23
      go version:       go1.16.2
      platform:         linux/amd64
    

    4.访问UI界面:IP:9090

    • 打开网页输入以下指令
      rate(promhttp_metric_handler_requests_total{code="200"}[1m])
      输入指令

    5.下载安装node_exporter:https://prometheus.io/download/

    下载地址
    • 创建文件夹:mkdir /etc/default/node_exporter
    • 上传压缩文件
    • 解压文件:tar -zxvf node_exporter.1.1.2.linux-amd64.tar.gz
    • 修改解压文件夹名称:mv node_exporter.1.1.2.linux-amd64 node_exporter
    • 进入目录:cd node_exporter
    • 启动服务:nohup /etc/default/node_exporter/node_exporter/node_exporter &
    • 打开UI:IP:9100,查看端口:lsof -i:9100
    [root@iZwz9ga2spyeb5u9tdq8t5Z node_exporter]# lsof -i:9100
    COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    node_expo 30994 root    3u  IPv6 4015988      0t0  TCP *:jetdirect (LISTEN)
    
    Node_exporter

    6.编辑Prometheus配置文件:

    • 先杀掉prometheus:pkill prometheus
    level=info ts=2021-05-11T05:22:10.102Z caller=main.go:668 msg="Stopping scrape discovery manager..."
    level=info ts=2021-05-11T05:22:10.102Z caller=main.go:682 msg="Stopping notify discovery manager..."
    level=info ts=2021-05-11T05:22:10.102Z caller=main.go:704 msg="Stopping scrape manager..."
    level=info ts=2021-05-11T05:22:10.102Z caller=main.go:664 msg="Scrape discovery manager stopped"
    level=info ts=2021-05-11T05:22:10.102Z caller=main.go:678 msg="Notify discovery manager stopped"
    level=info ts=2021-05-11T05:22:10.102Z caller=manager.go:934 component="rule manager" msg="Stopping rule manager..."
    level=info ts=2021-05-11T05:22:10.102Z caller=manager.go:944 component="rule manager" msg="Rule manager stopped"
    level=info ts=2021-05-11T05:22:10.103Z caller=main.go:698 msg="Scrape manager stopped"
    level=info ts=2021-05-11T05:22:10.110Z caller=notifier.go:601 component=notifier msg="Stopping notification manager..."
    level=info ts=2021-05-11T05:22:10.110Z caller=main.go:872 msg="Notifier manager stopped"
    level=info ts=2021-05-11T05:22:10.111Z caller=main.go:884 msg="See you next time!"
    
    • 然后vim prometheus.yml,在最后面添加:
    [root@iZwz9ga2spyeb5u9tdq8t5Z prometheus]# vim prometheus.yml 
    # Here it's Prometheus itself.
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: 'prometheus'
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
        - targets: ['localhost:9090']
    
      - job_name: 'xxx.xx.xxx.xxx'
        static_config:
        - targets: ['xxx.xx.xxx.xx:9100']
    

    参考https://blog.csdn.net/qq_43417559/article/details/109012296

    7.重启服务:./prometheus --config.file=prometheus.yml &
    8.访问IP:9090,点击导航栏中的status→targets。显示如下图说明配置成功
    ※如果状态位DOWN,需要检查下防火墙是否关闭

    配置结果

    9.在Grafana中配置prometheus

    • 添加prometheus的data sources
    • Import Dashboard,方法跟Influxdb类似,不做过多介绍

    10.Jmeter非GUI命令运行
    jmeter -n -t file.jmx -l result.jtl -e -o reopot

    • -n:非GUI模式运行
    • -t:指定jmx文件位置
    • -l:指定生成jtl的格式结果
    • -e:生成html报告
    • -o:指定html报告文件夹(必须是空目录)

    相关文章

      网友评论

        本文标题:Jmeter+InfluxDB+Grafana+Promethe

        本文链接:https://www.haomeiwen.com/subject/islfdltx.html