1. 配置glances
这两天有需求需要对linux系统的各项运行参数进行监控,找到了基于python开发的一个工具————glances,介绍在这里,github上的源码及相关的文档资料在这里。软件本身的功能还是比较全面的,也能提供C/S或是web服务的方式,比较灵活。
根据github上的readme文件描述,可以通过源码来安装glances,如下:
$ wget https://github.com/nicolargo/glances/archive/ vX.Y.tar.gz -O - | tar xz
$ cd glances-*
# python setup.py install
这里实验采用的glances版本为2.10
,python版本为Python 2.7.5
为了定义自己的配置,需要制定glances运行的配置文件,如果不指定配置文件的话,glances**貌似
**是采用一套内置的配置的,而不是其安装目录中的conf/glances.conf
文件。
glances.conf
文件中包含了glances的各种配置,里面有几项是相关的内容,可以对应修改如下:
##############################################################################
# Globals Glances parameters
##############################################################################
[global]
# Does Glances should check if a newer version is available on PyPI ?
check_update=false
# History size (maximum number of values)
# Default is 28800: 1 day with 1 point every 3 seconds (default refresh time)
history_size=28800
上边check_update=false
默认是true
,可以不检查更新。
[ports]
# Ports scanner plugin configuration
# Interval in second between two scans
refresh=30
# Set the default timeout (in second) for a scan (can be overwritten in the scan list)
timeout=3
上边refresh=30
将默认的3秒
刷新改为了30秒,需求不紧急的话可以有效的节约CPU资源,只在scan的时候,会消耗。
[elasticsearch]
# Configuration for the --export-elasticsearch option
# Data are available via the ES Restful API. ex: URL/<index>/cpu/system
# https://www.elastic.co
host=192.168.0.102
port=9200
index=glances
上边配置elasticsearch的服务地址和端口,还有index的名称。对应修改即可。
所有配置都OK了以后,通过命令运行glances,并加入导出到elasticsearch的参数就行。glances导出到elasticsearch只支持standalone和client模式
。导出的运行参数如下:
[root@localhost conf]# glances --export-elasticsearch
注意1:如果运行报错了,说缺少elasticsearch的库(一般来说都会报这个错,如果没装过的话),那么需要安装python的elasticsearch库。
注意2:如果提示No elasticsearch configuration found
那是因为没有指定elasticsearch的配置,参考运行和结果
2. 安装python的elasticsearch库
如果环境上安装了pip
,那么就很简单了,直接运行
pip install elasticsearch
如果没有安装pip
,希望通过源码安装,也很简单,在这里可以找到pipy上对应的各个版本的elasticsearch库,下一个源码包,按照文档上的说明进行安装,具体命令简单如下:
[root@localhost home]# tar zxf elasticsearch-X.X.X.tar.gz
[root@localhost home]# cd elasticsearch-X.X.X/
[root@localhost elasticsearch-X.X.X]# python setup.py install
细心的同学通过文档或是上边的安装过程可以发现,elasticsearch需要依赖一个叫做urllib3
的python库,上边安装过程会自动下载,如果在离线环境的话,最后会报错,提示缺少urllib3
,还是在pypi
上搜索到urllib3-X.X.X.tar.gz
版本,按照类似上边的方法先装好这个库,然后上边的安装就可以顺利的完成了。
3. 运行和结果
指定1中配置好的类似的配置文件并运行如下命令:
[root@localhost conf]# glances -C XXX/glances.conf --export-elasticsearch
然后会看到
localhost (CentOS Linux 7.3.1611 64bit / Linux 3.10.0-514.21.1.el7.x86_64) Uptime: 18:57:21
CPU [| 1.8%] CPU 1.8% nice: 0.0% MEM 25.2% active: 544M SWAP 0.5% LOAD 8-core
MEM [|||||||||||||| 25.2%] user: 0.3% irq: 0.0% total: 3.69G inactive: 605M total: 3.87G 1 min: 0.00
SWAP [ 0.5%] system: 0.8% iowait: 0.0% used: 953M buffers: 4K used: 19.0M 5 min: 0.03
idle: 98.9% steal: 0.0% free: 2.76G cached: 748M free: 3.86G 15 min: 0.21
NETWORK Rx/s Tx/s TASKS 289 (624 thr), 1 run, 288 slp, 0 oth sorted automatically by cpu_percent, flat view
_67d799e6 0b 0b
docker0 0b 0b Systemd 4 Services active: 168 loaded: 168
ens33 2Kb 46Kb
lo 248b 248b CPU% MEM% VIRT RES PID USER NI S TIME+ R/s W/s Command
_h128506f 0b 0b 108.8 0.7 615M 25.7M 69204 root 0 R 0:01.42 0 0 /usr/bin/python /usr/bin/glances -C glances.conf --export-elasticsearch
_h1c31995 0b 0b 43.8 0.4 936M 15.2M 2131 root 0 S 12:18.70 0 0 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-contain
_h24a3400 0b 0b 0.0 0.0 0 0 75 root -20 S 0:00.00 0 0 kthrotld
_h620ce94 0b 0b 0.0 0.0 0 0 2663 root -20 S 0:00.00 0 0 xfs-conv/dm-7
_h71d8139 0b 0b 0.0 0.0 0 0 80 root -20 S 0:00.00 0 0 ipv6_addrconf
_he18dab5 0b 0b 0.0 0.0 0 0 56030 root 0 S 0:00.10 0 0 xfsaild/dm-12
_hedaee18 0b 0b 0.0 0.0 0 0 68902 root 0 S 0:00.33 0 0 kworker/3:4
_hf923e0b 0b 0b 0.0 0.0 0 0 2625 root -20 S 0:00.00 0 0 kdmflush
_hfc783b2 0b 0b 0.0 0.0 0 0 81805 root -20 S 0:00.00 0 0 xfs-conv/dm-11
0.0 0.0 0 0 461 root -20 S 0:00.00 0 0 xfs-eofblocks/d
DISK I/O R/s W/s 0.0 0.0 0 0 2615 root -20 S 0:00.00 0 0 xfs-log/dm-6
dm-0 0 11K 0.0 0.0 0 0 691 root -20 S 0:00.00 0 0 xfs-cil/dm-2
dm-1 0 0 0.0 0.0 0 0 51 root -20 S 0:00.00 0 0 kintegrityd
dm-10 0 0 0.0 0.0 0 0 2614 root -20 S 0:00.00 0 0 xfs-reclaim/dm-
dm-11 0 0 0.0 0.0 0 0 688 root -20 S 0:00.00 0 0 xfs-buf/dm-2
dm-12 0 0 0.0 0.0 0 0 31 root 0 S 0:00.11 0 0 watchdog/5
dm-2 0 0 0.0 0.0 33.6M 872K 65827 root 0 S 0:00.20 0 0 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 61209 -cont
dm-3 0 0 0.0 0.1 267M 2.83M 2685 root 0 S 0:00.40 0 0 docker-containerd-shim 2bd489bd62e8d04cb92d0ab82fa64e21c5b66cf13031d67be
dm-4 0 0 0.0 0.0 0 0 2612 root -20 S 0:00.00 0 0 xfs-conv/dm-6
dm-5 0 0 0.0 0.0 0 0 8 root 0 S 0:00.00 0 0 rcu_bh
dm-6 0 0 0.0 0.0 0 0 2509 root -20 S 0:00.00 0 0 xfs-log/dm-5
dm-7 0 0 0.0 0.0 0 0 3200 root 0 S 0:00.00 0 0 xfsaild/dm-9
dm-8 0 0 0.0 0.0 0 0 2739 root -20 S 0:00.00 0 0 xfs-cil/dm-8
dm-9 0 0 0.0 0.0 0 0 102854 root -20 S 0:00.18 0 0 kworker/0:1H
sda1 0 0 0.0 0.0 0 0 24239 root 0 S 0:00.50 0 0 kworker/u256:2
sda2 0 11K 0.0 0.0 0 0 663 root -20 S 0:00.00 0 0 xfs-log/sda1
sr0 0 0 0.0 0.0 0 0 333 root -20 S 0:00.00 0 0 mpt_poll_0
0.0 0.0 0 0 2661 root -20 S 0:00.00 0 0 xfs-buf/dm-7
FILE SYS Used Total 0.0 0.0 0 0 2466 root -20 S 0:00.00 0 0 xfs-reclaim/dm-
/ 39.0G 50.0G 0.0 0.0 0 0 65813 root -20 S 0:00.00 0 0 xfs-eofblocks/d
/boot 169M 497M 0.0 0.0 0 0 56029 root -20 S 0:00.00 0 0 xfs-eofblocks/d
/home 114M 45.5G 0.0 0.0 0 0 3199 root -20 S 0:00.00 0 0 xfs-eofblocks/d
_cemapper 39.0G 50.0G 0.0 0.0 0 0 612 root -20 S 0:00.00 0 0 nfit
_a6dd3b13 758M 9.99G 0.0 0.0 0 0 2613 root -20 S 0:00.00 0 0 xfs-cil/dm-6
_75a5f8b1 47.7M 9.99G
2017-07-11 17:24:36 No warning or critical alert detected
这样的一大坨监控结果,那么就运行成功了,同时,通过访问elasticsearch的REST接口,可以看到导出的结果。浏览器中打开:http://192.168.0.102:9200/glances/cpu/system
,这是elasticsearch监听的地址和端口,可以获得的内容类似如下:
{
"_index": "glances",
"_type": "cpu",
"_id": "system",
"_version": 20,
"found": true,
"_source": {
"timestamp": "2017-07-11T15:38:51.717794",
"value": "1.1"
}
}
由于博主对elasticsearch不了解,相关的elk整合高端玩法就不提了。
4. 其他
对于elasticsearch的python库安装时候需要特别注意,不同的版本很可能运行不了。
elasticsearch的python库pypi上有如下一段:
# Elasticsearch 5.x
elasticsearch>=5.0.0,<6.0.0
# Elasticsearch 2.x
elasticsearch>=2.0.0,<3.0.0
# Elasticsearch 1.x
elasticsearch>=1.0.0,<2.0.0
# Elasticsearch 0.90.x
elasticsearch<1.0.0
一定要对应着版本使用,否则会出现莫名奇妙的问题。
glances自定义的导出插件存放的位置在源码包中: XXX/glances-x.x/glances/exports/
,其中可以查看elasticsearch等的插件内容。