因为公司打算监控kafka队列信息,但是又不想直接安装KafkaOffsetMonitor这个工具,希望能够将kafka的监控信息内嵌到grafana上面,在这个项目的github上面无意中看到这个个工具可以当作一个插件使用,可以直接内嵌到graphite当中,所有前提是需要搭建一个graphite,所以才有了这篇文章。
系统环境描述:
CentOS 7.2
Python 2.7
前置条件:Python2.7
因为我使用的是CentOS7.2,系统自带的是Python2.7,但是现在graphite的线上支持最低版本是2.7,最高版本是不超过3.x。所有使用CentOS6.x系统的需要升级为Python2.7,具体的升级过程在此就不在描述了。
一.graphite的安装
1.直接从github上面下载项目即可。
Graphite-web:
git clone https://github.com/graphite-project/graphite-web.git
Carbon:
git clone https://github.com/graphite-project/carbon.git
Whisper:
git clone https://github.com/graphite-project/whisper.git
Ceres:
git clone https://github.com/graphite-project/ceres.git
2.依赖环境的安装。
1)进入graphite-web目录下面,可以看到下面文件
2)在目录下面可以看到一个文件requirment.txt文件,这个文件内是graphite的依赖包。
可以直接执行以下命令,安装依赖包:
pip install -r requirment.txt
3)检查依赖关系。
在graphite下面存在以恶搞check-dependencies.py脚本,执行这个脚本会检测graphite的环境信息。
python check-dependencies.py
[OPTIONAL] Unable to import the 'pyhash' module. This is useful for fnv1_ch hashing support.
1 optional dependencies not met. Please consider the optional items before proceeding.
All necessary dependencies are met.
当环境检测输出O optional的时候,就说明graphite的环境已经搭建完成了。
PS:pyhash这个模块需要依赖C++的boots库,编译完成之后可以下载pyhash的源码包安装。
PS:虽然我没有安装pyhash,但是后续的安装还是没有出什么问题,不过能尽量编译的话就编译
PS:安装过程中会有一些报错,需要yum install python-devel openssl openssl-devel
4)安装graphite
cd graphite-web
python setup.py build
python setup.py install
执行上面三个命令,graphite会默认安装路径是/opt/graphite
5)安装Carbon,Whisper,Ceres
依次进入三个源码目录,执行下面俩个命令
python setup.py build
python setup.py install
3.文件配置信息修改
1)修改时区
mv /opt/graphite/webapp/graphite/local_stettings.py.example
/opt/graphite/webapp/graphite/local_stettings.py
vi /opt/graphite/webapp/graphite/local_stettings.py
修改成:TIME_ZONE = 'Asia/Shanghai'
2)同步数据库,建库简表(我使用的是默认的数据库,需要修改成其他的数据可以进在local_settiongs.py里面自己修改,具体参数的修改就不再描述了)
PYTHONPATH=/opt/graphite/webapp django-admin.py migrate --settings=graphite.settings --run-syncdb
3)生成配置文件信息
PYTHONPATH=/opt/graphite/webapp django-admin.py collectstatic --noinput --settings=graphite.settings
4)配置文件修改
cd /opt/graphite/conf
cp carbon.conf.example carbon.conf
cp relay-rules.conf.example relay-rules.conf
cp storage-schemas.conf.example storage-schemas.conf
cp storage-aggregation.conf.example storage-aggregation.conf
cp graphite.wsgi.example graphite.wsgi
5)修改graphite.ini配置文件
因为我使用的是Nginx作为web服务器,所有需要安装下载uwsgi
pip install uwsgi
配置uwsgi文件graphite.ini
cd /opt/graphite/conf
vi graphite.ini
[uwsgi]
processes = 2
socket = 127.0.0.1:43210
#gid = nobody
#uid = nobody
chdir = /opt/graphite/conf/ #wsgi文件路径
wsgi-file=graphite.wsgi #wsgi文件
master=true
vacuum=true
#module = wsgi:application
#buffer-size = 65536
pidfile = /var/run/uwsgi.pid
#chmod-socket = 666
#pythonpath = /opt/graphite/webapp
daemonize = /var/log/uwsgi.log 日志
6)修改nginx配置文件信息
server {
listen 90;
server_name 172.16.3.15;
charset utf-8;
access_log /var/log/nginx/graphite_access.log;
error_log /var/log/nginx/graphite_error.log error;
location / {
add_header Access-Control-Allow-Origin $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'origin, authorization, accept';
uwsgi_pass 127.0.0.1:43210;
include uwsgi_params;
}
4.启动文件
1)启动carbon
/opt/graphite/bin/carbon-cache.py start
PS:第一次启动的时候没有成功,然后第二次启动的时候成功了。
2)启动Nginx
3)启动uwsgi
uwsgi /opt/graphite/conf/graphite.ini
5.访问和测试
在浏览器中输入http://172.16.3.15:90就可以访问
测试
python /opt/graphite/examples/example-client.py