【监控工具Sampler】还在用命令行检察服务器状态?试试这款监控工具吧,直 ...

打印 上一主题 下一主题

主题 1866|帖子 1866|积分 5598

我们在检察服务器运行状态时,除了使用命令行照旧命令行。那么有什么办法可以不用命令行,直观地检察服务器的CPU、内存、网络、容器运行状态等信息呢?今天给各人分享一款好用的服务器监控工具Sampler,使用它能快速方便地检察这些信息,盼望对各人有所资助!
Sampler简介

Sampler是一款基于shell命令的可视化监控工具,通过简单的YAML文件来进行设置即可实现监控,目前在Github上已有12k+Star。下面是使用Sampler来进行服务器状态监控的结果图,看起来照旧挺炫酷的!

安装

Sampler的安装非常简单,这里以Linux系统为例,使用如下命令下载Sampler的安装包;
  1. # 下载sampler的安装包保存到/usr/local/bin目录下
  2. sudo wget https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64 -O /usr/local/bin/sampler
  3. # 给安装包添加执行权限
  4. sudo chmod +x /usr/local/bin/sampler
复制代码
安装完成后在/usr/local/bin目录下,就有一个可执行的sampler文件了。

使用

Sampler的使用非常简单,只要在yaml文件中设置好监控脚本,然后使用如下命令执行即可;
  1. # 配置文件需要添加可执行权限
  2. chmod +x config.yml
  3. # 然后通过配置文件启动Sampler
  4. sampler -c config.yml
复制代码
假如你想检察服务器CPU和可用内存情况,可以在config.yml文件中添加如下脚本,然后使用上面的命令来运行;
  1. sparklines:
  2.   - title: CPU usage(%)
  3.     rate-ms: 200
  4.     scale: 0
  5.     sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'
  6.   - title: RAM free(MB)
  7.     rate-ms: 200
  8.     scale: 0
  9.     sample: free -m| grep "Mem:" | awk '{print $4}'
复制代码
执行命令后,显示结果如下:

假如你想检察服务器上Docker容器的运行状态,可以添加如下脚本;
  1. textboxes:
  2.   - title: Docker containers stats
  3.     rate-ms: 500
  4.     sample: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.PIDs}}"
复制代码
执行命令后,显示结果如下:

假如你想检察服务器的网络状态,例如UDP和TCP的收发情况,可以添加如下脚本;
  1. barcharts:
  2.   - title: Local network activity
  3.     rate-ms: 500
  4.     scale: 0
  5.     items:
  6.       - label: UDP bytes in
  7.         sample: netstat -anu | awk '{sum += $2} END {print sum}'
  8.       - label: UDP bytes out
  9.         sample: netstat -anu | awk '{sum += $3} END {print sum}'
  10.       - label: TCP bytes in
  11.         sample: netstat -ant | awk '{sum += $2} END {print sum}'
  12.       - label: TCP bytes out
  13.         sample: netstat -ant | awk '{sum += $3} END {print sum}'
复制代码
执行命令后,显示结果如下:

假如你想检察服务器的时间,可以添加如下脚本;
  1. asciiboxes:
  2.   - title: CST time
  3.     rate-ms: 500
  4.     font: 2d
  5.     border: false   
  6.     color: 43
  7.     sample: env TZ=Asia/Shanghai date +%r
复制代码
执行命令后,显示结果如下:

我们再把上面这些监控信息组合起来,制作一个面板来看下结果,照旧挺炫酷的;

这里使用的脚本如下,感爱好的小伙伴可以尝试下!
  1. runcharts:
  2.   - title: Search engine response time
  3.     position: [[0, 0], [45, 19]]
  4.     rate-ms: 500
  5.     triggers:
  6.       - title: Latency threshold exceeded
  7.         condition: echo "$prev < 0.8 && $cur > 0.8" |bc -l
  8.         actions:
  9.             terminal-bell: true
  10.             sound: true
  11.             visual: true
  12.             script: 'say alert: ${label} latency exceeded ${cur} second'
  13.     legend:
  14.         enabled: true
  15.         details: false
  16.     scale: 2
  17.     items:
  18.       - label: BAIDU
  19.         color: 178
  20.         sample: curl -o /dev/null -s -w '%{time_total}'  https://www.baidu.com
  21.       - label: BING
  22.         sample: curl -o /dev/null -s -w '%{time_total}'  https://www.bing.com
  23. barcharts:
  24.   - title: Local network activity
  25.     position: [[45, 20], [35, 8]]
  26.     rate-ms: 500
  27.     scale: 0
  28.     items:
  29.       - label: UDP bytes in
  30.         sample: netstat -anu | awk '{sum += $2} END {print sum}'
  31.       - label: UDP bytes out
  32.         sample: netstat -anu | awk '{sum += $3} END {print sum}'
  33.       - label: TCP bytes in
  34.         sample: netstat -ant | awk '{sum += $2} END {print sum}'
  35.       - label: TCP bytes out
  36.         sample: netstat -ant | awk '{sum += $3} END {print sum}'
  37. gauges:
  38.   - title: YEAR PROGRESS
  39.     position: [[45, 0], [35, 2]]
  40.     cur:
  41.         sample: date +%j
  42.     max:
  43.         sample: echo 365
  44.     min:
  45.         sample: echo 0
  46.   - title: DAY PROGRESS
  47.     position: [[45, 3], [35, 2]]
  48.     cur:
  49.         sample: date +%H
  50.     max:
  51.         sample: echo 24
  52.     min:
  53.         sample: echo 0
  54.   - title: HOUR PROGRESS
  55.     position: [[45, 6], [35, 2]]
  56.     cur:
  57.         sample: date +%M
  58.     max:
  59.         sample: echo 60
  60.     min:
  61.         sample: echo 0
  62.   - title: MINUTE PROGRESS
  63.     position: [[45, 9], [35, 2]]
  64.     triggers:
  65.       - title: CLOCK BELL EVERY MINUTE
  66.         condition: '[ $label == "cur" ] && [ $cur -eq 0 ] && echo 1 || echo 0'
  67.         actions:
  68.             sound: true
  69.             script: say -v samantha `date +%I:%M%p`
  70.     cur:
  71.         sample: date +%S
  72.     max:
  73.         sample: echo 60
  74.     min:
  75.         sample: echo 0
  76. sparklines:
  77.   - title: CPU usage
  78.     position: [[0, 20], [22, 8]]
  79.     rate-ms: 200
  80.     scale: 0
  81.     sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'
  82.   - title: RAM free(MB)
  83.     position: [[22, 20], [23, 8]]
  84.     rate-ms: 200
  85.     scale: 0
  86.     sample: free -m | grep "Mem:" | awk '{print $4}'
  87. textboxes:
  88.   - title: Docker containers stats
  89.     position: [[0, 29], [45, 10]]
  90.     rate-ms: 500
  91.     sample: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.PIDs}}"
  92.   - title: Local weather
  93.     position: [[69, 31], [13, 7]]
  94.     rate-ms: 10000
  95.     sample: curl wttr.in?0ATQF
  96.     border: false
  97.   - title: New York weather
  98.     position: [[45, 31], [13, 7]]
  99.     rate-ms: 10000
  100.     sample: curl wttr.in/newyork?0ATQF
  101.     transform: echo 1
  102.     border: false
  103.   - title: San Francisco weather
  104.     position: [[56, 31], [13, 7]]
  105.     rate-ms: 10000
  106.     sample: curl wttr.in/sanfrancisco?0ATQF
  107.     border: false
  108. asciiboxes:
  109.   - title: CST time
  110.     position: [[45, 12], [35, 7]]
  111.     rate-ms: 500
  112.     sample: env TZ=Asia/Shanghai date +%r
  113.     border: false
  114.     font: 2d
复制代码
总结

今天给各人介绍了一款直观易用的服务器监控工具Sampler,使用它来检察服务器运行状态真的是一览无余。其实Sampler的功能不止于此,它还能用于监控MySQL、MongoDB、Kafka这类中间件的信息,该爱好的小伙伴可以尝试下!
项目地点

https://github.com/sqshq/sampler

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表