Graphite 是一个企业级的监控工具,用 Python 编写,采用 django 框架,sqlite 数据库存储,自有简单文本协议通讯,绘图功能强大。Graphite由多个后端和前端组件组成。后端组件用于存储数值型的时间序列数据。前端组件则用于获取指标项数据并根据情况渲染图表。
一、graphite 安装前准备——升级python、easy_install和pip
CENTOS 6.X 系列默认安装的 Python 2.6 ,而目前主流开发软件都在使用Python-2.7,最新版本的graphite也不例外,所以需要先升级系统默认的Python环境,才能安装最新版本graphite。
1、升级python 到 2.7:
1)查看python 版本:1
2# python -V
Python 2.6.6
2)下载、解压:python 2.7.31
2
3# wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
解压:
# tar -xvjf Python-2.7.3.tar.bz2
2、准备工作:
1)安装openssl:
解决在安装Python2.7 时报错 ImportError: cannot import name HTTPSHandler
# yum install openssl openssl-devel -y
2)安装zlib:
解决安装Python-2.7对应的easy_install和pip时报错:
# yum install zlib zlib-devel readline readline-devel -y
3)安装sqlite-devel:
解决在安装graphite-web时报错:Error loading either pysqlite2 or sqlite3 modules。安装sqlite-devel之后,重新编译安装Python(http://blog.csdn.net/nuccch/article/details/42132267)
# yum install sqlite-devel
3、编译、安装:1
2
3
4# cd Python-2.7.3
# ./configure
# make
# make install
安装过程没有报错,证明安装成功。
4、修改环境:
1)建立软连接,使系统默认的 python指向 python2.7:1
2
3
4
5
6
7
8#mv /usr/bin/python /usr/bin/python2.6.6
#ln -s /usr/local/bin/python2.7 /usr/bin/python
查看/usr/bin/目录下python信息:
# ll /usr/bin/python*
lrwxrwxrwx 1 root root 24 May 22 21:30 /usr/bin/python -> /usr/local/bin/python2.7
lrwxrwxrwx. 1 root root 6 Mar 9 2015 /usr/bin/python2 -> python
-rwxr-xr-x. 2 root root 9032 Jan 22 2014 /usr/bin/python2.6
-rwxr-xr-x. 2 root root 9032 Jan 22 2014 /usr/bin/python2.6.6
2)由于yum没有兼容python2.7,修改yum文件:1
2
3
4vi /usr/bin/yum,第一行
#!/usr/bin/python
修改为:
#!/usr/bin/python2.6.6
3)退出当前控制台,重新登录后查看python版本:1
2# python -V
Python 2.7.3
参考:http://blog.csdn.net/jcjc918/article/details/11022345
5、安装Python 2.7.3对应的easy_install和pip:
1)安装easy_install:1
2
3
4
5
6
7
8# wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.zip --no-check-certificate
# unzip setuptools-7.0.zip
# cd setuptools-7.0
# python setup.py install
最后提示如下信息表示安装成功:
Installed /usr/local/lib/python2.7/site-packages/setuptools-7.0-py2.7.egg
Processing dependencies for setuptools==7.0
Finished processing dependencies for setuptools==7.0
2)安装pip:1
2
3
4
5
6
7
8# wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz
# tar -xvzf 1.5.5.tar.gz
# cd pip-1.5.5/
# python setup.py install
最后提示如下信息表示安装成功:
Installed /usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg
Processing dependencies for pip==1.5.5
Finished processing dependencies for pip==1.5.5
3)验证:
需要退出当前控制台窗口,重新登录后,输入如下命令:1
2
3
4# easy_install --version
setuptools 7.0
# pip -V
pip 1.5.5 from /usr/local/lib/python2.7/site-packages/pip-1.5.5-py2.7.egg (python 2.7)
二、graphite 安装
1、使用pip安装graphite、whisper、carbon :(默认安装到了/opt下面)
1)安装graphite:
pip install https://github.com/graphite-project/ceres/tarball/master
2)安装whisper:
pip install whisper
安装好whisper后,会有如下文件:1
2
3
4
5
6
7
8
9
10
11# ls -l /usr/local/bin/whisper*
-rwxr-xr-x 1 root root 2843 May 22 22:35 /usr/local/bin/whisper-create.py
-rwxr-xr-x 1 root root 2208 May 22 22:35 /usr/local/bin/whisper-diff.py
-rwxr-xr-x 1 root root 2908 May 22 22:35 /usr/local/bin/whisper-dump.py
-rwxr-xr-x 1 root root 1786 May 22 22:35 /usr/local/bin/whisper-fetch.py
-rwxr-xr-x 1 root root 4305 May 22 22:35 /usr/local/bin/whisper-fill.py
-rwxr-xr-x 1 root root 1077 May 22 22:35 /usr/local/bin/whisper-info.py
-rwxr-xr-x 1 root root 681 May 22 22:35 /usr/local/bin/whisper-merge.py
-rwxr-xr-x 1 root root 5990 May 22 22:35 /usr/local/bin/whisper-resize.py
-rwxr-xr-x 1 root root 925 May 22 22:35 /usr/local/bin/whisper-set-aggregation-method.py
-rwxr-xr-x 1 root root 976 May 22 22:35 /usr/local/bin/whisper-update.py
3)安装carbon :
pip install carbon
安装好carbon后,会在/opt/graphite/bin下有carbon 相关的文件;
注:安装carbon 时可能会报错CompressionError: bz2 module is not available(因为carbon时使用Twisted作为事件驱动网络引擎监听时间序列数据),解决方法如下( http://www.ithao123.cn/content-1273730.html ):1
2
3
4wget https://pypi.python.org/packages/source/T/Twisted/Twisted-14.0.0.tar.bz2#md5=9625c094e0a18da77faa4627b98c9815 --no-check-certificate
tar -jxf Twisted-14.0.0.tar.bz2
cd Twisted-14.0.0;
python setup.py install
4)安装graphite-web:
pip install graphite-web
2、配置、启动carbon:
1)graphite目录:(使用pip安装,默认会将graphite安装到/opt目录下)
- bin : 二进制文件目录,包括carbon-cache.py、carbon-relay.py、validate-storage-schemas.py、carbon-aggregator.py、carbon-client.py等程序
- build
- conf : 配置文件目录
- lib : 库目录
- storage : 数据存放目录,包括log,whisper数据库,索引,rrd数据等
- webapp : webapp文件存放目录
2)配置carbon相关参数 :
Carbon安装包中包含了关于端口号和其他多个配置参数的明确缺省值。拷贝这些已有的示例配置文件:1
2
3
4
5
6
7
8
9
10# cd /opt/graphite/conf
# cp aggregation-rules.conf.example aggregation-rules.conf
# cp blacklist.conf.example blacklist.conf
# cp carbon.conf.example carbon.conf
# cp carbon.amqp.conf.example carbon.amqp.conf
# cp relay-rules.conf.example relay-rules.conf
# cp rewrite-rules.conf.example rewrite-rules.conf
# cp storage-schemas.conf.example storage-schemas.conf
# cp storage-aggregation.conf.example storage-aggregation.conf
# cp whitelist.conf.example whitelist.conf
进入/opt/graphite/bin目录,执行如下命令启动(之后可以看到carbon-cache进程):1
# ./carbon-cache.py start
Starting carbon-cache (instance a)
注:carbon.conf文件中,在cache区段下,接收端口这一行包含一个默认值,用于通过平文本协议(plaintext protocol )接受输入指标项(如下所示):
[cache]
LINE_RECEIVER_INTERFACE = 0.0.0.0
LINE_RECEIVER_PORT = 2003
3)测试:
为了简单起见,在本文示例中我将通过netcat命令用平文本协议发布指标项。1
2# yum install nc
# echo "carbon.agents.graphite-tutorial.metricsReceived 28198 `date +%s`" | nc localhost 2003
Carbon与Whisper交互,将这些时间序列数据存储到文件系统中,可以用whisper-info脚本获取为这些指标项创建的Whisper文件的元数据信息:1
# whisper-info.py /opt/graphite/storage/whisper/carbon/agents/graphite-tutorial/metricsReceived.wsp
3、Graphite Web应用:
1)配置Graphite-web:1
2# cd /opt/graphite/webapp/graphite
# cp local_settings.py.example local_settings.py
Graphite Web应用中包含默认的仪表盘和图表模版:1
2# cp dashboard.conf.example dashboard.conf
# cp graphTemplates.conf.example graphTemplates.conf
2)初始化数据库:1
# python manage.py syncdb
可能会报错:ImportError: No module named django.core.management,解决:1
# pip install Django==1.8
之后再运行# python manage.py syncdb可能会报错:ImportError: No module named tagging,解决:1
# pip install django-tagging
之后再运行# python manage.py syncdb就可以安装成功,在安装过程中需要输入用户名、密码、邮件等信息。
4、启动graphite:
1)启动:1
2
3# cd /opt/graphite
# PYTHONPATH=`pwd`/storage/whisper ./bin/run-graphite-devel-server.py --port=8085 --libs=`pwd`/webapp /opt/graphite 1>/opt/graphite/storage/log/webapp/process.log 2>&1 &
# tail -f /opt/graphite/storage/log/webapp/process.log
默认会在8058端口运行,浏览器输入:http://192.168.137.122:8085/
2)图片无法显示:
启动后,图片无法显示,提示如下错误。
需要安装:
# pip install cairocffi
在安装时可能会报错:No package ‘libffi’ found,解决:
yum install libffi-devel
参考:
http://www.infoq.com/cn/articles/graphite-intro
http://wrox.cn/tag/graphite/ (http://wrox.cn/article/100000312/ http://wrox.cn/article/100039828/)
http://www.cnblogs.com/zhengyun_ustc/archive/2015/01/23/55solution9.html
http://blog.csdn.net/iloveyin/article/details/17069257