大家好,我是 JackTian。

今天给大家推荐一款基于 Shell 命令执行,可视化和警报工具 —— Sampler。

Sampler 不是全面监控系统的替代品,而是易于设置的开发工具。比如说你要用其他监控工具 Grafana 配置 Prometheus 会对你觉得一头雾水,Sampler 则可能是一个正确的解决办法。

你只需指定 Shell 命令即可使用,可直接从终端中采样任何动态过程、观察数据库中的更改情况、监视 MQ 实时消息,触发部署脚本并在完成时获取通知消息,简单方便,易于配置。

无需将 Sampler 安装在监控的每台服务器上,您可以直接在本地运行 Sampler,仍然可以从多台远程计算机上收集信息,任何可视化都可能具有 init 命令,您可以在其中命令 SSH 到远程服务器。

效果图如下:

安装

MacOS

# brew install sampler

或者

# sudo curl -Lo /usr/local/bin/sampler https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-darwin-amd64
# sudo chmod +x /usr/local/bin/sampler

Linux

# sudo wget https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64 -O /usr/local/bin/sampler
# sudo chmod +x /usr/local/bin/sampler

libasound2-dev 需安装系统库,Sampler 才能播放触发音。通常情况下,该库已存在,如没有,则可使用您喜欢的软件包管理器进行安装。例如:

$ apt install libasound2-dev

Windows

choco install sampler

或者

https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-windows-amd64.exe
Sampler 主要包括内容:
  • 组件: 运行图表、迷你图、测量、文本框等;
  • 钟声和口哨声: 触发器、交互式外壳、颜色主题等;
  • 资料库: Databases(MySQL,PostgreSQL,MongoDB)、Kafka、Docker、SSH、JMX等;
组件

具有 MacOS 兼容采样脚本的每种组件类型的配置示例。

运行图表

runcharts:
  - title: Search engine response time
    rate-ms: 500        # sampling rate, default = 1000
    scale: 2            # number of digits after sample decimal point, default = 1
    legend:
      enabled: true     # enables item labels, default = true
      details: false    # enables item statistics: cur/min/max/dlt values, default = true
    items:
      - label: GOOGLE
        sample: curl -o /dev/null -s -w '%{time_total}'  https://www.google.com
        color: 178      # 8-bit color number, default one is chosen from a pre-defined palette
      - label: YAHOO
        sample: curl -o /dev/null -s -w '%{time_total}'  https://search.yahoo.com
      - label: BING
        sample: curl -o /dev/null -s -w '%{time_total}'  https://www.bing.com

迷你图

sparklines:
  - title: CPU usage
    rate-ms: 200
    scale: 0
    sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'
  - title: Free memory pages
    rate-ms: 200
    scale: 0
    sample: memory_pressure | grep 'Pages free' | awk '{print $3}'

测量

gauges:
  - title: Minute progress
    rate-ms: 500        # sampling rate, default = 1000
    scale: 2            # number of digits after sample decimal point, default = 1
    percent-only: false # toggle display of the current value, default = false
    color: 178          # 8-bit color number, default one is chosen from a pre-defined palette
    cur:
      sample: date +%S  # sample script for current value
    max:
      sample: echo 60   # sample script for max value
    min:
      sample: echo 0    # sample script for min value
  - title: Year progress
    cur:
      sample: date +%j
    max:
      sample: echo 365
    min:
      sample: echo 0

文本框

textboxes:
  - title: Local weather
    rate-ms: 10000      # sampling rate, default = 1000
    sample: curl wttr.in?0ATQF
    border: false       # border around the item, default = true
    color: 178          # 8-bit color number, default is white
  - title: Docker containers stats
    rate-ms: 500
    sample: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.PIDs}}"
钟声和口哨声

时钟表,显示分钟进度并在每分钟开始时宣布当前时间,搜索引擎延迟图表,当延迟超过阈值时向用户发出警报;

交互式外壳支持

除 Sample 命令外,还可以指定 init 命令(在采样前仅执行一次)和 transform 命令(对 Sample 命令输出进行后处理)。

主要包括:基本模式、PTY模式、多步初始化。

传送门:

https://github.com/sqshq/sampler


原创不易,码字不易。 觉得这篇文章对你有点用的话,麻烦你为本文点个赞留言转发一下,因为这将是我输出更多优质文章的动力,感谢!

⬇⬇⬇⬇⬇⬇⬇⬇

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐