[性能测试+数据采集展示分析+告警策略]Jmeter+Collectd+Influxdb+Grafana

 
 

Grafana相比graphite, 优势非常大, 特别是配置和部署, 要简单很多, 界面方面的体验做得非常好, 特别是还兼容graphite的数据。由于grafana仅仅只是提供界面显示, 所以他需要从influxdb中获取数据, 而influxdb中的数据又需要从其他地方收集过来, 常用的收集工具是collectd和telegraf, 我们选择telegraf,collectd在这里不做介绍, 有些数据不是太适合, 而 influxdb 自身集成 telegraf插件, 不需要进行专门的配置。

采集数据(collectd)-> 存储数据(influxdb) -> 显示数据(grafana)
  • InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据

  • collectd C 语言写的一个系统性能采集工具

  • Grafana 是纯 Javascript 开发的前端工具,用于访问 InfluxDB,自定义报表、显示图表等

  • Jmeter是Apache组织开发的基于Java的压力测试工具
  • 报警:自开发shell/Python

系统性能指标图示例:

 在此采用centos+Influxdb+collectd+grafana搭建监控系统,特此说明下influxdb的0.9,0.10,0.11,0.12均不支持delect功能,0.8和0.13支持delect功能,其实最主要的区别是0.9版本和0.10版本,0.10更改了数据存储引擎,能够节省大量空间,查询速度也快了很多,所以第一次安装的话最好优先选择0.10及以上版本,在此,个人采用0.13。 

一、 Collectd

1. 下载安装

         官网下载地址:https://collectd.org/download.shtml

              tar xf collectd-version.tar.bz2

              cd collectd-version

              ./configure

              make all install

         yum安装

              先查询是否已安装epel-release ,没有则执行yum install epel-release–y安装;

              yum install -y collectd;

2. 修改配置

         vi /etc/collectd.conf

         确保以下几项的注释(#)是去掉的

             Hostname    "192.168.1.126"      此处改为安装collectd的机器IP地址

             LoadPlugin cpu

             LoadPlugin memory

             LoadPlugin network

             LoadPlugin swap

            <Plugin cpu>

                    ReportByCpu true

                    ReportByState true

                    ValuesPercentage true   此处启用cpu的使用率,5.7.*以上才有,低版本的不支持百分百

           </Plugin>

           <Plugin network>

                   <Server "192.168.1.222" "25826"> 此处指定将collectd收集的数据发送到的influxdb地址和端口

                            Interface "enp0s31f6"   通过ifconfig获取网卡的名称

                  </Server>

          </Plugin>

3. 启动

service collectd start

二、 InfluxDB

1. 下载安装

     下载地址:https://portal.influxdata.com/downloads

     选择InfluxDB最新版本如:v1.4.2,点击进去后选择对应的系统版本,如:

     wget https://dl.influxdata.com/influxdb/releases/influxdb-1.4.2-static_linux_amd64.tar.gz

     解压:tar xvfz influxdb-1.4.2-static_linux_amd64.tar.gz

2. 修改配置

    vi influxdb.conf

    找到 [http] 和 [[collectd]] 、 [[graphite]]节点,enabled改为true(默认是开启的),bind-address修改绑定的IP和端口:

       [http]

       #Determines whether HTTP endpoint is enabled.

       enabled= true      

       # The bindaddress used by the HTTP service.

       bind-address= ":8086"          此处配置的IP和端口供grafana连接使用

       [[collectd]]

       enabled= true

       bind-address = ":25826"         此处配置的IP和端口供collectd上传数据使用

       typesdb = " /usr/share/collectd/types.db"      可在安装collectd的机器上(yum安装默认在/usr/share/collectd目录)拷贝过来,存储在指定的目录

       [[graphite]]

       enabled= true                   Jmeter通过“Backend Listener”,将测试的数据上传到InfluxDB来存储

       database= "graphite"            指定jmeter的性能监控数据存储的数据库名称

       bind-address= ":2003"           此处配置的IP和端口供jmeter上传数据使用

3. 启动

   执行 ./influxd&

   启动成功后执行./influx创建collectd 和 graphite 数据库:

   同时还要执行create database graphite 创建graphite数据供jmeter上传数据使用;

   看到图中会出现httpd的日志,可以修改influxdb.conf 将log-enabled 改为 false,关闭日志打印功能;

   influxdb的数据量一多,会非常影响性能,可以设置只保留5天的数据:

   use collectd

   create retention policy "5_days" on collectd duration 5d replication 1 default

   show retention policies on collectd

InfluxDB 自带的 collectd 插件默认是关闭的,需要手动配置打开 enabled = true,并填上 database = “collectd” 这一行,这里的 “collectd” 就是我们上面创建的那个数据库,更改配置后记得重启 InfluxDB.

在刚安装好的 InfluxDB 上创建一个名为 collectd 的数据库,可以用命令行创建,也可以用 Web 管理界面操作:

$ curl  "http://192.168.2.183:8086/db?u=root&p=root" - "{\"name\": \"collectd\"}"

三、 Jmeter

1.  下载安装

       下载地址:http://jmeter.apache.org/download_jmeter.cgi

       可选择zip包,如“apache-jmeter-3.3.zip”,下载到windows上直接解压即可。

2. 启动

       在bin目录,运行jmeter.bat,可打开图形化界面。

3. 添加测试计划

      右击测试计划,指向添加,展开菜单后选择Thread(Users),点击线程组;

 

      右击线程组,添加http请求:


      输入请求的域名或IP,添加参数

 

      右击测试计划,选择添加→监听器→Backend Listener(用于将性能数据上传到Influxdb)


      如下图填好相应参数:


      启动测试后,jmeter会异步将测试的数据上传到InfluxDB;

      如果要集群测试,linux上运行“./jmeter-server”,windows上运行jmeter-server.bat,客户端需要在jmeter.properties上配置remote_hosts属性,设置远程机器的IP和端口,然后客户端运行jmeter.bat,打开图形化界面,选择运行→远程启动。

四、 Grafana

1.  下载安装

   下载地址:https://grafana.com/grafana/download

   选择对应的系统版本,Linux通用的下载地址

      wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2.linux-x64.tar.gz

      解压:tar -zxvf grafana-4.6.2.linux-x64.tar.gz

2.  修改配置

     http_port= 3000              管理界面的访问端口

     admin_user= admin           管理界面登录的用户名

     admin_password= admin        管理界面登录的密码

     type =mysql                  可配置mysql、postgres、sqlite3,默认是sqlite3,第一次启动自动创建数据库和初始化表

     host =192.168.1.222:3307     数据库的地址和端口

     name =grafana                数据库名称

     user =root                   数据库用户名

     # If the password contains # or ; you have to wrap it with triple quotes. Ex"""#password;"""

     password= 123456             数据库密码

3.  启动

     ./grafana-server

     浏览器访问:http://ip:3000 ,输入用户名和密码(默认admin)

4. 配置DataSource

     登录Granfana管理页面后,点击左上角的图标,展开二级菜单,点击“Data Source”进入数据源管理页面:

     点击Add datasource添加数据源:

     按实际填好数据好,点击“Add”,成功添加会显示“Data source is working”

5. 配置Dashboard(系统指标)

     点击左上角图标,展开二级菜单,鼠标指向Dashboards,展开右侧的菜单,点击New:

 

     进入Newdashboard页面:

     点击Graph,进入如下页面:

     点击PannelTitle,然后点击Edit,出现Graph的编辑区域:

     点击ToggleEdit Mode可看到生成的sql,如下:

     点击Add Query,分别添加cpu的idle、system、wait数据;

     在General菜单项Title属性,输入“Cpu”;

     在Axes菜单项Left Y 的Unit,选择none – percent(0-100) , 修改Y轴单位;

     一个机器cpu的监控即可配置完成,如下图:

     按CTRL+S,输入监控的机器IP,保存设置。

     点击左上角的 “Backto dashboard”返回dashboard页面,点击“+ADDROW”,分别添加网络流量、内存、Swap等监控。

     网络流量只能在ToggleEdit Mode模式下输入以上SQL,单位是datarate > bytes/sec

     内存的单位是data(IEC)> bytes

     Swap的单位是data(IEC)> bytes

 

     如果监控安装collectd的机器与Grafana的机器时间有差异,可以在Time range修改:


6.  配置Dashboard(Jmeter指标)

        添加一个新的Dashboards,配置名字Jmeter;

        添加响应时间的Graph,Axes的unit设置为none:

        添加TPS的Graph,Axes的unit设置为none:

Jmeter监控指标图示例:



【参考资料】

1、基于jmeter+sysstat+influxdb+grafana+flume的性能测试平台 - https://blog.csdn.net/weilan100/article/details/51953572

2、日志系统的搭建(collectd + logstash + influxdb) - CSDN博客 https://blog.csdn.net/julykobe/article/details/44002687

(rsyslog-->ELK-->logstash-->Influxdb+collectd+grafana

3、Influxdb+collectd+grafana搭建现代化监控系统 - https://blog.csdn.net/qq_27078095/article/details/52088423

4、58.应用性能监控APM之collectd+InfluxDB+Grafana系统搭建 - CSDN博客 https://blog.csdn.net/a464057216/article/details/53043551

5、collectd plugin:mysql - CSDN博客 https://blog.csdn.net/jndxjing/article/details/8469328

6、grafana+influxdb+telegraf监控服务器cpu,内存和硬盘 -https://blog.csdn.net/myhuashengmi/article/details/77097705

7、使用 Grafana、collectd 和 InfluxDB 打造现代监控系统_服务器应用_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2015-04/116123.htm

8、使用Zabbix和grafana来监控交换机流量-ZJ的记事本-51CTO博客 http://blog.51cto.com/wangzhijian/2112431

9、使用Prometheus和Grafana监控Mysql服务器性能 -https://www.cnblogs.com/tomato0906/articles/6026290.html

10、Grafana连接 ntop 数据源 - CSDN博客 https://blog.csdn.net/zxln007/article/details/78906082


猜你喜欢

转载自blog.csdn.net/English0523/article/details/80830077
今日推荐