58.应用性能监控APM之collectd+InfluxDB+Grafana系统搭建

转载请注明原始链接:http://blog.csdn.net/a464057216/article/details/53043551

后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
在这里插入图片描述

APM简介

我们都希望能够迅速解决产品线上问题或者迅速定位测试环境发生问题的原因,迅速解决问题的前提之一就是对问题发生时间点前后的系统或者服务程序的状态有详细的记录,比如机器内存、CPU使用情况、服务程序日志及其依赖的数据库服务的健康度等,这些信息的记录依赖一个健全的应用程序性能监控系统(Application Performance Monitoring,APM)。
本文将介绍collectd+InfluxDB+Grafana这种APM系统的组合的搭建方法,其中collectd负责收集系统健康度信息(也可以替换成StatsD等),InfluxDB负责基于时序存储收集到的数据(也可以替换成Elasticsearch等),Grafana负责监控数据的报表展示(也可以替换成Graphite等)。

collectd

collectd简介

collectd是一个用C语言编写的周期性收集系统和应用程序性能数据的守护程序,收集到的数据可以存储为指定格式的文件,然后借助其他工具展示结果。因为采用C语言编写,所以可以用来收集所有支持POSIX标准的操作系统的运行信息,且资源消耗小。Ubuntu系统上安装collectd非常简单:

# written by: CSDN - Mars Loo的博客
sudo apt-get update
sudo apt-get install collectd

collectd本身没有依赖,其监控数据的收集都是通过插件完成的,各个插件会有相应的依赖,通过/usr/share/doc/collectd-core/README.Debian.plugins可以查看各个插件的依赖。collectd的配置文件位置在/etc/collectd/collectd.conf,通过其中的LoadPlugin section部分控制使能哪些插件,其中#符号的数量表示不同含义:

  • 两个##开头表示该插件还没有构建,也就不会使能。
  • 一个#开头表示该插件已经构建,但是不使能。
  • 没有#表示该插件已经构建且使能。

collectd的输出可以有rrdtool、network、csv等多种选择,默认开启了rrdtool插件。日志插件默认开启的是syslog,也可以使用logfile。配置中FQDNLookup(Fully Qualified Domain Name)置为true以后,如果也正确配置了被检测系统的FQDN,collectd会将这个值作为节点的名字。Interval参数可以配置全局的数据收集周期或者针对具体插件设置不同的收集周期,一旦设置以后最好不要再改动。
使用collectd收集不同信息需要使用不同的插件,所有插件的列表地址可以参考其官网

配置collectd将数据发往InfluxDB

采用InfluxDB存储collectd收集到的数据,可以通过collectd的network插件实现数据的传输。首先注释掉collectd配置中的rrdtool配置,然后使能network插件,network插件的配置如下:

# written by: CSDN - Mars Loo的博客
<Plugin network>
    Server "127.0.0.1" "25826" #本例中collectd与InfluxDB在同一台机器上
</Plugin>

InfluxDB

InfluxDB简介

InfluxDB是用Go语言编写的高性能、高可用的分布式时序数据存储数据库,无其他依赖,安装简单快速。最新版本的InfluxDB的安装包位置可以参考其官网。在Ubuntu上安装过程如下:

# written by: CSDN - Mars Loo的博客
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.0.2_amd64.deb
sudo dpkg -i influxdb_1.0.2_amd64.deb

InfluxDB的配置文件位于/etc/influxdb/influxdb.conf,可以通过配置文件修改默认配置。默认情况下:

  • 在8083端口运行数据库管理的Web页面。
  • 通过8086端口接受HTTP形式的数据。
  • graphite、opentsdb、collectd部分不使能

需要修改InfluxDB的配置使能collectd部分:

# written by: CSDN - Mars Loo的博客
[[collectd]]
  enabled = true
  port = 25826
  database = "collectd_db" #来自collectd的数据写入这个数据库
  typesdb = "/usr/share/collectd/types.db" #该文件描述了collectd的数据结构,帮助InfluxDB正确存储数据

InfluxDB服务器的推荐硬件配置

  • 8G RAM。
  • 使用两个SSD硬盘分别挂载influxdb/walwal-dir的配置部分)和influxdb/datadir的配置部分)目录,其中influxdb/wal推荐低硬盘空间高IOPS,influxdb/data推荐高硬盘空间低IOPS。同时这两个目录的所有者权限为influxdb:influxdb。
  • 根据负载情况,IOPS在1k~3k之间。

启动InfluxDB和collectd

# written by: CSDN - Mars Loo的博客
sudo service influxdb start
sudo service collectd start

使用浏览器访问InfluxDB所在服务器的8083端口,点击右上角的设置使用默认的root:root登录系统:
这里写图片描述

然后在下面的QUERY文本框执行CREATE DATABASE collectd_db命令建立collectd_db数据库,InfluxDB即可接受collectd传输过来的监测数据。

想要熟练使用整个监控系统,需要读者了解一些InfluxDB的操作方法,具体可以参考我的下一篇博客。

Grafana

Grafana是一个高效的对时间序列数据进行查询和可视化的工具。安装Grafana首先需要将如下配置添加到/etc/apt/sources.list文件:

# written by: CSDN - Mars Loo的博客
deb https://packagecloud.io/grafana/stable/debian/ jessie main

添加证书:

# written by: CSDN - Mars Loo的博客
curl https://packagecloud.io/gpg.key | sudo apt-key add -

升级后安装并启动Grafana:

# written by: CSDN - Mars Loo的博客
sudo apt-get update
sudo apt-get install grafana
sudo service grafana-server start

Grafana的环境变量文件位置在/etc/default/grafana-server,配置文件在/etc/grafana/grafana.ini,默认情况下Grafana启动后监听3000端口,管理用户为admin:admin,登录后首先添加InfluxDB这个数据源:
这里写图片描述

填写InfluxDB的相关信息:
这里写图片描述

填写完成后可以点击Save & Test按钮测试Grafana是否能够从InfluxDB读取数据:
这里写图片描述

测试成功以后,创建新的Dash Board,然后在Dash Board中添加新的Panel即可,最终的示例效果如下:
这里写图片描述

如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值