@Tmacy
2016-12-02T11:19:02.000000Z
字数 6118
阅读 1720
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/
>influxVisit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.Connected to http://localhost:8086 version 0.13.0InfluxDB shell version: 0.13.0>
其实web页面也是使用数据查询指令。
在数据库中创建一个名为collectd的数据库。
CREATE DATABASE collectd
查询一下是否已经创建成功,然后退出:
> show databasesname: databases---------------name_internalcollectd> 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.debsudo 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 notpercpu = true## Whether to report total system cpu stats or nottotalcpu = true## Comment this line if you want the raw CPU time metricsfielddrop = ["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/statcpu 112605 4007 30018 1422634 52008 0 536 0 0 0cpu0 29680 1081 7238 356615 10940 0 125 0 0 0cpu1 28594 900 7309 356293 12478 0 165 0 0 0cpu2 29480 1073 6832 356784 11058 0 144 0 0 0cpu3 24849 952 8638 352941 17531 0 102 0 0 0intr 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 0ctxt 21610485btime 1469582911processes 5069procs_running 2procs_blocked 0softirq 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/meminfoMemTotal: 7872252 kBMemFree: 1444120 kBMemAvailable: 5806544 kBBuffers: 190568 kBCached: 4426100 kBSwapCached: 0 kBActive: 3616728 kBInactive: 2460388 kBActive(anon): 1472420 kBInactive(anon): 409156 kBActive(file): 2144308 kBInactive(file): 2051232 kBUnevictable: 172 kBMlocked: 172 kBSwapTotal: 0 kBSwapFree: 0 kBDirty: 316 kBWriteback: 0 kBAnonPages: 1460664 kBMapped: 702992 kBShmem: 421132 kBSlab: 249668 kBSReclaimable: 208752 kBSUnreclaim: 40916 kBKernelStack: 9456 kBPageTables: 39048 kBNFS_Unstable: 0 kBBounce: 0 kBWritebackTmp: 0 kBCommitLimit: 3936124 kBCommitted_AS: 6692148 kBVmallocTotal: 34359738367 kBVmallocUsed: 0 kBVmallocChunk: 0 kBHardwareCorrupted: 0 kBAnonHugePages: 4096 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kBDirectMap4k: 159932 kBDirectMap2M: 7917568 kB
也可以利用free命令来查看
free -mtotal used free shared buff/cache availableMem: 7687 1629 1324 418 4733 5598Swap: 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% /devtmpfs 769M 9.4M 760M 2% /run/dev/sda4 120G 83G 32G 73% /tmpfs 3.8G 162M 3.6G 5% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup/dev/sda2 123G 49G 74G 41% /home/wintmpfs 769M 28K 769M 1% /run/user/1000
利用du命令,查看目录的存储情况
du -sh <目录名>