Shell 命令执行可视化和告警工具


Shell 命令执行可视化和告警工具文章插图
转自:良许Linux来自:FreeBuf.COM作者:secist链接:Sampler是一个用于shell命令执行 , 可视化和告警的工具 。 其配置使用的是一个简单的YAML文件 。
1、为什么我需要它?你可以直接从终端对任意动态进程进行采样 – 观察数据库中的更改 , 监控MQ动态消息(in-flight messages) , 触发部署脚本并在完成后获取通知 。
如果有一种方法可以使用shell命令获取指标(metric) , 那么可以使用Sampler立即对其进行可视化 。
2、安装macOSbrew cask install sampler
sudo curl -Lo /usr/local/bin/sampler sudo chmod +x /usr/local/bin/samplerLinuxsudo wget-O /usr/local/bin/samplersudo chmod +x /usr/local/bin/sampler注意:需要为Sampler安装libasound2-dev系统库用以播放触发器声音 。 通常库已安装在相应位置 , 但如果没有 – 你可以使用你习惯的包管理器进行安装 , 例如apt install libasound2-dev
Windows(实验)建议在高级控制台模拟器下使用 , 如Cmder
Download .exe
3、使用指定shell命令 , Sampler会相应的速率执行这些命令 。 输出用于可视化 。
使用Sampler基本上的三步过程:
在YAML配置文件中定义shell命令
运行sampler -c config.yml
在UI上调整组件大小和位置
市面早已有许多监控系统Sampler绝不是监控系统的替代品 , 而是易于设置的开发工具 。
如果spinning up和使用Grafana配置Prometheus是完全多余的任务 , 那么Sampler可能是正确的解决方案 。 没有服务器 , 没有数据库 , 不需要部署 – 你指定了shell命令 , 它就可以工作了 。
我监控的每台服务器上都需要安装吗?不 , 你可以在本地运行Sampler , 但仍然可以从多台远程计算机上收集遥测数据 。 任何可视化都可能具有init命令 , 你可以在其中ssh到远程服务器 。 请参阅SSH example
4、组件以下是每种组件类型的配置示例列表 , 其中包含与macOS兼容的采样脚本 。
Runchart
Shell 命令执行可视化和告警工具文章插图
runcharts:- title: Search engine response timerate-ms: 500 # sampling rate, default = 1000scale: 2 # number of digits after sample decimal point, default = 1legend:enabled: true # enables item labels, default = truedetails: false # enables item statistics: cur/min/max/dlt values, default = trueitems:- label: GOOGLEsample: curl -o /dev/ -s -w '%{time_total}' color: 178 # 8-bit color number, default one is chosen from a pre-defined palette- label: YAHOOsample: curl -o /dev/ -s -w '%{time_total}' - label: BINGsample: curl -o /dev/ -s -w '%{time_total}' Sparkline
Shell 命令执行可视化和告警工具文章插图
sparklines:- title: CPU usagerate-ms: 200scale: 0sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'- title: Free memory pagesrate-ms: 200scale: 0sample: memory_pressure | grep 'Pages free' | awk '{print $3}'Barchart
Shell 命令执行可视化和告警工具文章插图
barcharts:- title: Local network activityrate-ms: 500 # sampling rate, default = 1000scale: 0 # number of digits after sample decimal point, default = 1items:- label: UDP bytes insample: nettop -J bytes_in -l 1 -m udp | awk '{sum += $4} END {print sum}'- label: UDP bytes outsample: nettop -J bytes_out -l 1 -m udp | awk '{sum += $4} END {print sum}'- label: TCP bytes insample: nettop -J bytes_in -l 1 -m tcp | awk '{sum += $4} END {print sum}'- label: TCP bytes outsample: nettop -J bytes_out -l 1 -m tcp | awk '{sum += $4} END {print sum}'Gauge
Shell 命令执行可视化和告警工具文章插图
gauges:- title: Minute progressrate-ms: 500 # sampling rate, default = 1000scale: 2 # number of digits after sample decimal point, default = 1percent-only: false # toggle display of the current value, default = falsecolor: 178 # 8-bit color number, default one is chosen from a pre-defined palettecur:sample: date +%S # sample script for current valuemax:sample: echo 60 # sample script for max valuemin:sample: echo 0 # sample script for min value- title: Year progresscur:sample: date +%jmax:sample: echo 365min:sample: echo 0Textbox
Shell 命令执行可视化和告警工具文章插图
textboxes:- title: Local weatherrate-ms: 10000 # sampling rate, default = 1000sample: curl wttr.in?0ATQFborder: false # border around the item, default = truecolor: 178 # 8-bit color number, default is white- title: Docker containers statsrate-ms: 500sample: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.PIDs}}"