阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

ubuntu14.04安装和使用Graphite2014-10-10 17:40

安装

14.04的库里默认已经有了Graphite,所以安装只需:

sudo apt-get install graphite-web graphite-carbon

Carbon是Graphite的存储后端

配置Graphite

graphite-web是一个django站点,其settings文件在/etc/graphite/local_settings.py

So,配置django,再熟悉不过,修改其配置文件:

sudo vim /etc/graphite/local_settings.py

解除SECRET_KEY的注释,并手动设置它的值,要长且唯一:

SECRET_KEY = 'Qj+gO9aawkQFV6QWYX7XPKPXvc4FpK7h\n'

可以使用python来帮你生成:

>>> import os
>>> os.urandom(24).encode('base64')

解除TIME_ZONE注释,修改默认时区为你需要的时区:

TIME_ZONE = 'Asia/Shanghai'

打开remote_user的身份验证:

USE_REMOTE_USER_AUTHENTICATION = True

数据库默认使用的是sqlite3,这里我更改为postgresql

DATABASES = {
    'default': {
        'NAME': 'graphite',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'graphite',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT': ''
    }
}

完成后同步数据库:

sudo graphite-manage syncdb

ps:django 1.7使用的是migrate命令,可以方便的修改数据了,还不错。


ps:安装postgresql:(安装了请无视)

sudo apt-get install postgresql libpq-dev python-psycopg2

postgres用户登录数据库:

sudo -u postgres psql

创建数据库新用户:

CREATE USER graphite WITH PASSWORD 'password';

创建数据库:

CREATE DATABASE graphite WITH OWNER graphite;

退出:

\q

配置Carbon

设置carbon服务为开机启动:

sudo vim /etc/default/graphite-carbon

修改为:

CARBON_CACHE_ENABLED=true

开启Carbon的log rotation配置:

sudo vim /etc/carbon/carbon.conf

修改为:

ENABLE_LOGROTATION = True

配置storage schemas:

sudo vim /etc/carbon/storage-schemas.conf

告诉Carbon存储数据的方式。

在最前面添加一个新的test schema:

[test]
pattern = ^test\.
retentions = 10s:10m,1m:1h,10m:1d

意思是匹配任何以test.开头的metrics,用三种方式收集存储数据(10s:10m: 每10秒创建一个数据点,保存10分钟内的所有数据点。其他依次类推,当请求前5分钟数据时,就用第一种返回,请求前50分钟时就用第二种返回。)

修改aggregation method:

sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
sudo vim /etc/carbon/storage-aggregation.conf

默认使用的是average,其中的xFileFactor的值代表Carbon做聚合的最小百分比值,根据你的具体情况修改

运行Carbon:

sudo service carbon-cache start

部署

Nginx配置:

sudo vim /etc/nginx/sites-available/graphite.conf

内容为:

upstream graphite {
  server unix:///run/uwsgi/app/graphite/socket;

  keepalive 600;
}

server {
  listen 80;
  server_name lvh.me;

  access_log /var/log/nginx/graphite.access.log;
  error_log /var/log/nginx/graphite.error.log;


  location / {
    uwsgi_pass graphite;
    include uwsgi_params;
  }

}

然后:

sudo ln -s /etc/nginx/sites-available/graphite.conf /etc/nginx/sites-enabled

uwsgi配置:

sudo vi /etc/uwsgi/apps-available/graphite.ini

内容为:

[uwsgi]
processes = 8
uid = _graphite
gid = _graphite
master = True
chdir = /usr/share/graphite-web
wsgi-file = graphite.wsgi
chmod-socket = 666
enable-threads = true

然后:

sudo ln -s /etc/uwsgi/apps-available/graphite.ini /etc/uwsgi/apps-enabled

重启所有服务:

sudo service carbon-cache restart
sudo service nginx restart
sudo service uwsgi restart

访问http://lvh.me 就可以看到graphite的界面了。

ps:

> ping lvh.me -c4
PING lvh.me (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.029 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.026 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.031 ms

--- lvh.me ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.017/0.025/0.031/0.008 ms

现在试试给Graphitee发送metric message到test schema,格式为metric_name value timestamp:

echo "test.count 4 `date +%s`" | nc -q0 127.0.0.1 2003

数据接收端口是/etc/carbon/carbon.conf中定义的:

LINE_RECEIVER_PORT = 2003
UDP_RECEIVER_PORT = 2003
PICKLE_RECEIVER_PORT = 2004
CACHE_QUERY_PORT = 7002

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Linux/Mac#   #django
分享到:
阅读[1660] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

发表评论