惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
G
GRAHAM CLULEY
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cybersecurity and Infrastructure Security Agency CISA
Simon Willison's Weblog
Simon Willison's Weblog
Latest news
Latest news
C
CERT Recently Published Vulnerability Notes
T
Threatpost
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog
Blog — PlanetScale
Blog — PlanetScale
C
Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
U
Unit 42
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
Stack Overflow Blog
Stack Overflow Blog
The Hacker News
The Hacker News
AI
AI
Project Zero
Project Zero
Scott Helme
Scott Helme
S
Securelist
Vercel News
Vercel News
GbyAI
GbyAI
S
Security @ Cisco Blogs
I
InfoQ
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
Forbes - Security
Forbes - Security
Google Online Security Blog
Google Online Security Blog
W
WeLiveSecurity
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
H
Heimdal Security Blog
G
Google Developers Blog
D
DataBreaches.Net
The Last Watchdog
The Last Watchdog
D
Docker
MyScale Blog
MyScale Blog
T
Tor Project blog
Cyberwarzone
Cyberwarzone
Recent Announcements
Recent Announcements
Microsoft Security Blog
Microsoft Security Blog
T
Tenable Blog
T
Threat Research - Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 聂微东
月光博客
月光博客

依云's Blog

Wayfire支持不缩放Xwayland啦 - 依云's Blog 使用wayvnc远程访问无头Wayfire会话 - 依云's Blog pacfiles: 高速的 pacman -F 替代品 用 Android 手机当电脑的话筒 - 依云's Blog 使用 ffmpeg 对音频文件进行响度归一化 - 依云's Blog 使用 nftables 屏蔽大量 IP - 依云's Blog YubiKey 初体验 - 依云's Blog fcitx5 码表同步方案 - 依云's Blog 我正在使用的火狐扩展(2024年版) - 依云's Blog 使用 PipeWire 实现自动应用均衡器 如果你发现你的 OOM Killer 在乱杀进程 使用 atuin 管理 shell 命令历史 btrfs 元数据满了怎么办 btrfs 翻车记 在 nspawn 里运行 docker Linux 上的字体配置与故障排除 新的 PaddleOCR 部署方案 使用 EasyEffects 调整 Bose 音箱的体验 让离线软件真正离线 我所讨厌的网页行为 tmux 状态栏优化 Google Chrome 中的字体设置 从 getmail6 到 offlineimap 微信消息通知的困扰 Qt 的字体渲染问题 Wayfire 迁移进展(四):不那么 high 的 DPI Wayfire 迁移进展(二):Xwayland HiDPI 以及 waybar Wayfire 迁移进展 不同情况下的图形效果 Wayland 初体验 纯 CSS 实现倒三角箭头 倾听蓝牙耳机的按键事件 使用 bwrap 沙盒 一次失败的 KDE 尝试 i3 的 scratchpad 处理逻辑 HiDPI 配置记录 让 QEMU 使用 SPICE 协议 Python 小版本升级是怎么 break 已有项目的 让 Arch Linux 系统和最新的镜像同步,从最快的镜像下载 tar 归档的权限问题 Linux 的环境变量怎么设 终端色彩总结 桥接无线网卡! Linux 的进程优先级与 nice 值 Intel GVT-g 初体验 自制大上 Paperlike HD「驱动」 Python 3.8 升级记录 Poker II 键盘调教记 红黑树到底是个什么树 gdb 不肯加载调试信息怎么办? NVIDIA PRIME 配置笔记 寻找最快的 GitHub IP 火狐远程调试火狐 fcitx 扩展:使用键盘粘贴选区(以及X选区原理科普) T470p 使用N卡运行 Xorg 系统在解析哪些域名呢? 正确的隐藏挂载点的方法 迁移系统到 SSD 使用 cgroups net_cls 来让 docker 走代理 使用 cgroups 限制指定进程的内存使用 在 Linux 下整理磁盘碎片 docker 里几个基本概念的简单类比 解析 zxinc IPv6 数据库 Ant Design 彩蛋事件之我见 通过 Cloudflare DNS 验证来申请 Let's Encrypt 证书 正确地上传至 PyPI 并展示文档 与 Android 进行 WLAN Direct 连接 获得高精度环形镜子一枚 每次修 Python 代码的 bug 的时候总会想念 Rust 永远不要 tail -f 管道 人生苦短,我用 skim XZ2C: 没有 root 的日子(也还过得去) 使用 iptables 透明代理 TCP 与 UDP Linux 下获取文件的创建时间 递归遍历目录:Python vs Go vs Rust 这个博客要死了 Windows 10 中配置网络共享 小米 Note 3 令人失望地方 小米 Note 3 入手体验 使用 VirtualBox 启动本地磁盘上的其它系统 大上 Paperlike HD 电子墨水屏开箱体验 加固 systemd 服务 嗨 Win10,这是我的浏览器 在 Linux 下设置录音笔的时间 我正在使用的火狐扩展 使用 Python 读取火狐的 cookies WireGuard: 简单好用的 VPN To hup or not to hup 书签搜索:藏在书签里的搜索引擎 使用 Prince 转换 HTML 文档给 Kindle 阅读 放弃 you-get,转投 youtube-dl 等连上互联网之后再来找我吧 改了一下 GTK 3 的默认主题 新的火狐,新的旅程 师者不师,学生不学 谁又用掉了我的磁盘空间?——魔改 ncdu 来对比文件树大小变化 NeWifi 3.2.1.5900 root swapview 更新 nodejs 子进程的正确用法(你应该忽视函数名) 电脑被盗事件
rrdtool 初体验
依云 · 2012-12-02 · via 依云's Blog

rrdtool 是「Round Robin Database tool」的缩写,是一个存放固定数量的数值型数据库,适合随时间变化的量的统计。比如网络传输速度、CPU 使用率、聊天室在线人数等。与大部分数据库软件不一样的是,它可以直接可视化数据,生成 PNG 图像。第一次使用,找点容易快速获取又有意义的数据源——ping 延迟好了。

第一步,确定数据库怎么存放什么数据。我打算发一千个 ping 包,然后存储其延迟。rrdtool 本来是按时间存储的,我用序号来骗骗它好了。起始时间为现在时间。数据的时间间隔为 1 秒,但实际上是一个序号。聚集函数为平均值,存储 1000 个数据。命令如下(百分号提示符表示 shell 是 zsh,下同):

% start=$(date +'%s')
% rrdtool create ping.rrd --start=$start -s1 DS:ping:GAUGE:1:0:U RRA:AVERAGE:0.5:1:1000

其中,DS是「数据源(data source)」的意思,RRA 是「round robin archives」。-s1表示间隔为 1s。时间点是以距 epoche 的秒数表示的。

DS 部分,ping 是数据的名字,GAUGE表示这就是一个值,不是累加(COUNTER,如已传输字节数)或者其它的。1是 heartbeat,超时这个时间还没收到数据的话就当作UNKNOWN值了。再后边是最小值和最大值,超出的话也会被当成UNKNOWN。那里的U表示「UNKNOWN」。

RRA 部分,AVERAGE是求平均值的聚集函数。类似的还有MAX之类的。用于决定一个区间内的多个值如何归并为一个值。0.5部分没看太懂。1即每秒取一个值,1000则是存储 1000 个这样的值。

取得数据:

% ping -c 1000 google.com > ping.log

把数据处理后喂给 rrdtool 的数据库,每次喂最多 1000 条数据:

% grep -oP '\d+\sttl\S+ \S+' ping.log | sed 's/ttl.*=//g' | awk -vstart=$start '{print $1+start ":" $2}' | xargs -n 1000 rrdtool update ping.rrd 

生成每 1、5、15 秒的统计图像:

% for i in 1 5 15; do rrdtool graph ping_$i.png --start=$start --end=$(( $start + 1000 )) -S $i --vertical-label=ms --width=800 --height=300 DEF:v=ping.rrd:ping:AVERAGE 'AREA:v#00dd00'; done

其中,-S是指定绘图的步长。其它参数很好理解。后两部分解释如下:

DEF设置变量v为 ping.rrd 数据库中的 ping 变量。还有可选的CDEF,比如可以写CDEF:s=v,1000,/,即令变量s等于v / 1000。这里是逆波兰表达式。'AREA:v#00dd00'表示绘制矩形图,纵轴变量为v,颜色为 #00dd00。画线的话可以用'LINE1:v#00dd00'这样子,LINE后边的数字是线的宽度。

好啦,图像如下: