文章目录
转载请注明原始链接: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/wal
(wal-dir
的配置部分)和influxdb/data
(dir
的配置部分)目录,其中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的博客)或者为这篇文章点赞,谢谢!