@Tmacy
2016-12-02T11:19:02.000000Z
字数 6118
阅读 1687
linux
grafana
influxdb
collectd
我们可以利用几个工具整合成一套实时系统资源监控方案。
需要的工具有:
关于这几个工具,简单做一下说明:
可以在官方网站找到下载页面:
https://influxdata.com/downloads/#influxdb
也可在系统的软件源中安装,不过系统的软件源通常落后于官方的版本。
安装其实很简单,因为没有依赖,只需安装一个软件包。
例如:
sudo dpkg -i influxdb_0.13.0_amd64.deb
安装之后,启动InfluxDB的数据库服务:
sudo systemctl start influxdb.server
可以在终端中进入InfluxDB,也可以在web界面中管理InfluxDB数据库,数据库web管理页面:http://localhost:8083/
>influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 0.13.0
InfluxDB shell version: 0.13.0
>
其实web页面也是使用数据查询指令。
在数据库中创建一个名为collectd的数据库。
CREATE DATABASE collectd
查询一下是否已经创建成功,然后退出:
> show databases
name: databases
---------------
name
_internal
collectd
> quit
在很多系统的软件源都默认有collectd的软件包。例如在Deepin中,我们可以利用apt-get安装:
$ sudo apt-get install collectd
安装之后,编辑配置文件/etc/collectd/collectd.conf
收集到数据后直接发给InfluxDB
LoadPlugin network
<Plugin network>
Server "192.168.1.183" "25826"
</Plugin>
在network中,有两个角色:client和server
client是用来搜集信息的,上面的配置就是默认client的配置,其含义为将数据发送给192.168.1.183的服务器。
我们可以配置多个客户端,把每个客户端的数据搜集,发送给服务器。
server一般来存储或者显示数据的。一般是监听客户端的端口:
# Server
<Plugin "network">
Listen "192.168.0.42"
Listen "172.16.0.42"
Listen "239.192.74.66"
Listen "ff18::efc0:4a42"
</Plugin>
目前我们使用InfluxDB来存储数据,所以不会去配置collectd的server。
重启collectd
sudo systemctl restart collectd
在InfluxDB上的collectd的插件是默认关闭的,编辑配置打开collectd:
[[collectd]]
enabled = true
# bind-address = ""
database = "collectd"
# typesdb = ""
之后重启InfluxDB
sudo systemctl restart influxdb.servie
备注
关于Collectd的配置,可以参考:
http://www.drupal001.com/2012/07/system-monitor-collectd/
telegraf是Influxdata的TLCK技术栈中的搜集数据工具。可以替代Collectd作为采集端。telegraf是用golang开发的,所以基本上没有依赖。
下载安装:
wget https://dl.influxdata.com/telegraf/releases/telegraf_0.13.1_amd64.deb
sudo dpkg -i telegraf_0.13.1_amd64.deb
启动:
sudo systemctl start telegraf.service
其输入输出源都可以用插件,代码开源。
在/etc/telegraf/telegraf.conf
文件中将你需要的数据源取消注释,这样就可以在服务中采集该数据
[[inputs.cpu]]
## Whether to report per-cpu stats or not
percpu = true
## Whether to report total system cpu stats or not
totalcpu = true
## Comment this line if you want the raw CPU time metrics
fielddrop = ["time_*"]
参考文档:https://docs.influxdata.com/telegraf/v0.13/
Grafana的安装也是可以通过官方网站下载:http://docs.grafana.org/installation/debian/
也可以利用系统的软件源下载:
apt-get install grafana
推荐在官方下载,很多情况下软件源中的软件比较旧,跟新较慢,会有bug
启动grafana
sudo systemctl start grafana-server.service
grafana的默认管理页面是3000端口,在浏览器中打开http://localhost:3000/
在Data Sources里面,把InfluxDB的collectd数据库添加进去。
关于grafana的使用,可以参考官方文档:
http://docs.grafana.org/guides/basic_concepts/
系统详细信息说明:
使用命令cat /proc/stat
查看cpu运行时状态
cat /proc/stat
cpu 112605 4007 30018 1422634 52008 0 536 0 0 0
cpu0 29680 1081 7238 356615 10940 0 125 0 0 0
cpu1 28594 900 7309 356293 12478 0 165 0 0 0
cpu2 29480 1073 6832 356784 11058 0 144 0 0 0
cpu3 24849 952 8638 352941 17531 0 102 0 0 0
intr 5656774 18 9 0 0 0 0 0 0 1 1242 0 0 2078 0 38271 0 250 0 0 0 0 0 0 35 2031 85494 268096 25 1191 643864 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 21610485
btime 1469582911
processes 5069
procs_running 2
procs_blocked 0
softirq 2711939 78 760312 799 753965 38372 0 4737 716514 0 437162
第一行的数值表示的是CPU总的使用情况
单位:jiffies
(jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间)
从左到右依次是:
总的cpu时间
totalCpuTime = user + nice+ system + idle + iowait + irq + softirq + stealstolen + guest
总的Cpu使用率计算
计算方法:
一、 采样两个足够短的时间间隔的Cpu快照,分别记作t1,t2,其中t1、t2的结构均为:
(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;
二、 计算总的Cpu时间片totalCpuTime
a) 把第一次的所有cpu使用情况求和,得到s1;
b) 把第二次的所有cpu使用情况求和,得到s2;
c) s2 - s1得到这个时间间隔内的所有时间片,即totalCpuTime = j2 - j1 ;
三、 计算空闲时间idle
idle对应第四列的数据,用第二次的第四列- 第一次的第四列即可
idle=第二次的第四列- 第一次的第四列
四、 计算cpu使用率
pcpu =100* (total-idle)/total
在telegraf中,cpu计算出的结果是使用率,在collectd中的cpu值是原始值。
在系统中的内存信息查看:
cat /proc/meminfo
>cat /proc/meminfo
MemTotal: 7872252 kB
MemFree: 1444120 kB
MemAvailable: 5806544 kB
Buffers: 190568 kB
Cached: 4426100 kB
SwapCached: 0 kB
Active: 3616728 kB
Inactive: 2460388 kB
Active(anon): 1472420 kB
Inactive(anon): 409156 kB
Active(file): 2144308 kB
Inactive(file): 2051232 kB
Unevictable: 172 kB
Mlocked: 172 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 316 kB
Writeback: 0 kB
AnonPages: 1460664 kB
Mapped: 702992 kB
Shmem: 421132 kB
Slab: 249668 kB
SReclaimable: 208752 kB
SUnreclaim: 40916 kB
KernelStack: 9456 kB
PageTables: 39048 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3936124 kB
Committed_AS: 6692148 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 4096 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 159932 kB
DirectMap2M: 7917568 kB
也可以利用free命令来查看
free -m
total used free shared buff/cache available
Mem: 7687 1629 1324 418 4733 5598
Swap: 0 0 0
主要关注的几个参数:
- MemTotal/total :内存总量
- MemFree/free : 空闲内存
- MemAvailable/available :可用内存
- used :已经使用的内存
- Shmem/shared : 共享内存
- Buffers: 块设备的读写缓冲区
- Cached :作为文件系统的cache,如果cache大,表示缓存的page很多,能够提高命中率。
可用内存的计算方法:
available = free+buffers+cached
利用df命令查看各分区的存储情况
df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 3.8G 0 3.8G 0% /dev
tmpfs 769M 9.4M 760M 2% /run
/dev/sda4 120G 83G 32G 73% /
tmpfs 3.8G 162M 3.6G 5% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/sda2 123G 49G 74G 41% /home/win
tmpfs 769M 28K 769M 1% /run/user/1000
利用du命令,查看目录的存储情况
du -sh <目录名>