graphite 安装、配置、使用(一)

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.3

1
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
4
vi /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
4
wget 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