前言
公司业务发展过程中,随着用户规模的增长。不管是采用传统的idc模式,还是最近比较火的vps。作为运维,不免被老板灵魂拷问,哪家的vps比较好,哪家的idc比较好。价格上没什么好说的,谁高谁低,一幕了然。但是相同的价格下,要比较初一个优劣,肯定要用数据说话。
祭出搜索引擎,一顿搜索。找到了网络上存在的的一键测试脚本,然后再使用过程中,发现输出要不就是相对简单,要不就是很久没有更新了,部分功能失效。
给老板看总不能截几张图就完了吧。于是采众家之长,自己做了一个,起名idcmonitor。以后再也不担心老板要评估选点了。
项目说明
idcmonitor采用docker部署
- 网络质量监控,监控三大运营商网络延迟,丢包,可以设置省内/全国。
- 监控dns解析域名速度。
- 后台更新网络监控节点(手动更新,自动更新)。
- 部署节点性能测试,生成测试报告。
模块
名称 | 说明 |
---|---|
smokeping | 监控网络质量,包括ping,dig等。生成丢包,延迟等数据。 |
prometheus | 收集smokeping采集的数据,与pushgateway配合使用。 |
grafana | 数据展示,展示prometheus的数据。 |
etcmanager | smokeping配置管理,节点更新,服务器(vps)性能测试,生成测试报告,将smokeping采集数据推送给prometheus。 |
部署
准备资源
- 一台vps主机
- 项目代码
vps初始化
安装项目依赖
yum install glibc.i686 libstdc++.i686 -y
yum install mesa-libGL.x86_64 opencv -y
yum install jq -y
启动idcmonitor
cd /opt/idcmonitor/
docker-compose up -d
数据推送
# 计划任务,crontab -e
# 每分钟同步一次数据
*/1 * * * * flock -xn /tmp/datapush.lock -c '/opt/idcmonitor/bin/datapush > /var/log/datapush.log 2>&1'
# 自动更新,smokeping配置
*/3 * * * * flock -xn /tmp/confupdate.lock -c 'cd /opt/idcmonitor/bin/ && ./confupdate > /var/log/confupdate.log 2>&1'
使用
生成测试报告
cd myapp/etcmanager/bin/
python3 report.py
更新节点IP地址
http://ip:3004
网络质量监控
smokeping数据展示
http://ip:3020/smokeping/
grafana数据展示
http://ip:3010/
- sum:求和
- min:最小值
- max:最大值
- avg:平均值
- stddev:标准差
- stdvar:方差
- count:元素个数
- count_values:等于某值的元素个数
- bottomk:最小的 k 个元素
- topk:最大的 k 个元素
- quantile:分位数
- rate: 增长率
FAQ
prometheus清理数据
#prometheus启动时添加参数
./prometheus --storage.tsdb.retention=180d --web.enable-admin-api
#清理数据
curl -X POST -g 'http://IP:9092/api/v1/admin/tsdb/delete_series?match[]=up&match[]={alias="未知"}'
文件更新后推送
# 目标节点IP
sh support/ts.sh myapp/etcmanager/templates/report.html ip地址
thank you share !!!
终于找到这篇文章了,感谢作者的分享!
终于找到这篇文章了,感谢作者的分享!
kabkab
看看