利用collectd, influxdb和grafana进行简单的负载预警

本文仅仅是对负载预警的简单尝试,能够预测的场景也比较有限,但是作为预测工作的开始已经比较能够说明问题了。

利用collectd, influxdb和grafana进行监控系统搭建可以参考这篇文章Monitoring hosts with CollectD, InfluxDB and Grafana grafana的操作比nagios和cacti真的友好很多,可定制的能力也强很多。

负载监控

虽然grafana有一定的报警能力(在grafana4.0版本之后,alert模块直接继承进来,所以推荐4.0的版本),但是能够提前十几分钟对于集群负载超标进行预警,一直是我们的一个小目标。所以在这里,我们就开始为这个小目标做了一点小努力。

在实际运行中,我们安装了这个小插件。它能够对应用负载进行批量的显示,节约了好多体力活。

图片描述

通过分析,我们可以看到以下几种负载

简单趋势型

图片描述

周期型

图片描述

规律不明显型

而对于周期型我们也可以看到在短期是可以看到一定趋势的。

在这里我们仅采用线性回归对简单趋势进行预测。这点对于python很好实现

from datetime import datetime
from influxdb import DataFrameClient
import numpy as np
from scipy import stats

if __name__ == "__main__":
    host = 'localhost'
    port = 8086
    user = 'root'
    password = 'root'
    dbname = 'collectd'

    client = DataFrameClient(host, port, user, password, dbname)

    print("Create pandas DataFrame")
    start_time = datetime(2016, 11, 17, 3,10).timestamp()
    end_time = datetime(2016, 11, 17, 8,50).timestamp()
    query = "select * from load_midterm where host='web153' and time > " + str(int(start_time)) + "s and time < " \
            + str(int(end_time)) + "s"
    df = client.query(query)

    slope, intercept, r_value, p_value, std_err = stats.linregress(range(df['load_midterm'].shape[0]), df['load_midterm']['value'].values)
    print(slope)
    print(intercept)
    print(r_value)
    print(p_value)

在这里我们用的是统计模块得到斜率和截距。需要注意的是,我们还要对R2,p值以及方差进行评价。一般来说r^2 >0.7, p<0.05, std_err<0.1

在这里,为什么没有采用一些更复杂的机器学习方法呢?

无论采用什么模型,关键是要提取一些关键feature。我观察过简单的应用服务器的其他指标,包括tcp连接数,cpu,磁盘io等,与load的协同性比较高,很难成为15min后load的先导预测feature。如果从服务器集群的整体角度去找feature的话,也许是可以做的,未来会关注这块。

在具体实现上,后端基于python flask编写一个预测服务器,而前端开发可以基于grafana的clock插件进行开发:clock-panel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我会为您详细讲解 jmeter+influxdb+grafana 的监控实例。 首先,JMeter 是一个用于性能测试的工具,可以进行压力测试、负载测试、功能测试等。它可以模拟多种不同的用户行为,以便评估系统的性能和稳定性。 InfluxDB 是一个高性能的时序数据库,可以存储和查询大量的时间序列数据。它具有高度可扩展性和灵活性,可以轻松地处理海量数据。 Grafana 是一个流行的开源数据可视化工具,可以连接多种数据源并将其可视化。它提供了灵活的图表和仪表板,可以帮助用户更好地理解数据。 下面是 jmeter+influxdb+grafana 监控实例的具体步骤: 1. 安装 InfluxDBGrafana 在官网下载最新版的 InfluxDBGrafana,然后按照官方文档进行安装和配置。 2. 配置 InfluxDB 数据库 在 InfluxDB 中创建一个新的数据库,并为其设置一个名称和一个保存策略。保存策略可以指定数据的保存时间和数据的复制系数。 3. 配置 JMeter 插件 在 JMeter 中安装 InfluxDBGrafana 插件,然后配置插件以连接到 InfluxDB 数据库。 4. 在 JMeter 中添加聚合器 在 JMeter 中添加聚合器,以便收集数据并将其发送到 InfluxDB 数据库中。 5. 创建 Grafana 仪表板 在 Grafana 中创建一个新的仪表板,并添加一个新的数据源。选择 InfluxDB 数据库作为数据源,并输入数据库的详细信息。 6. 创建 Grafana 图表 在 Grafana 中创建一个新的图表,并选择要显示的数据。可以使用不同的图表类型和样式来显示数据。 7. 测试 JMeter 脚本 使用 JMeter 运行测试脚本,并在 Grafana 中查看结果。可以使用 Grafana 的仪表板和图表来分析数据,识别瓶颈和优化性能。 以上就是 jmeter+influxdb+grafana 监控实例的具体步骤。希望可以对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值