-
-
Save jgeurts/3112065 to your computer and use it in GitHub Desktop.
#################################### | |
# BASIC REQUIREMENTS | |
# http://graphite.wikidot.com/installation | |
# http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/ | |
# Last tested & updated 10/13/2011 | |
#################################### | |
cd | |
sudo apt-get update | |
sudo apt-get upgrade | |
wget https://launchpad.net/graphite/0.9/0.9.10/+download/graphite-web-0.9.10.tar.gz | |
wget https://launchpad.net/graphite/0.9/0.9.10/+download/carbon-0.9.10.tar.gz | |
wget https://launchpad.net/graphite/0.9/0.9.10/+download/whisper-0.9.10.tar.gz | |
tar -zxvf graphite-web-0.9.10.tar.gz | |
tar -zxvf carbon-0.9.10.tar.gz | |
tar -zxvf whisper-0.9.10.tar.gz | |
mv graphite-web-0.9.10 graphite | |
mv carbon-0.9.10 carbon | |
mv whisper-0.9.10 whisper | |
rm graphite-web-0.9.10.tar.gz | |
rm carbon-0.9.10.tar.gz | |
rm whisper-0.9.10.tar.gz | |
sudo apt-get install --assume-yes apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 build-essential python3.2 python-dev libpython3.2 python3-minimal libapache2-mod-wsgi libaprutil1-ldap memcached python-cairo-dev python-django python-ldap python-memcache python-pysqlite2 sqlite3 erlang-os-mon erlang-snmp rabbitmq-server bzr expect ssh libapache2-mod-python python-setuptools | |
sudo easy_install django-tagging | |
sudo easy_install zope.interface | |
sudo easy_install twisted | |
sudo easy_install txamqp | |
#################################### | |
# INSTALL WHISPER | |
#################################### | |
cd ~/whisper | |
sudo python setup.py install | |
#################################### | |
# INSTALL CARBON | |
#################################### | |
cd ~/carbon | |
sudo python setup.py install | |
cd /opt/graphite/conf | |
sudo cp carbon.conf.example carbon.conf | |
sudo cp storage-schemas.conf.example storage-schemas.conf | |
sudo gedit storage-schemas.conf | |
### Replace contents of storage-schemas.conf to be the following | |
[stats] | |
priority = 110 | |
pattern = .* | |
retentions = 10:2160,60:10080,600:262974 | |
### | |
#################################### | |
# CONFIGURE GRAPHITE (webapp) | |
#################################### | |
cd ~/graphite | |
sudo python check-dependencies.py | |
sudo python setup.py install | |
# CONFIGURE APACHE | |
################### | |
cd ~/graphite/examples | |
sudo cp example-graphite-vhost.conf /etc/apache2/sites-available/default | |
sudo cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi | |
sudo mkdir /etc/httpd | |
sudo mkdir /etc/httpd/wsgi | |
sudo gedit /etc/apache2/sites-available/default | |
##### | |
# Change the line: WSGISocketPrefix run/wsgi | |
# To: WSGISocketPrefix /etc/httpd/wsgi | |
##### | |
sudo /etc/init.d/apache2 reload | |
#################################### | |
# INITIAL DATABASE CREATION | |
#################################### | |
cd /opt/graphite/webapp/graphite/ | |
sudo python manage.py syncdb | |
# follow prompts to setup django admin user | |
sudo chown -R www-data:www-data /opt/graphite/storage/ | |
sudo /etc/init.d/apache2 restart | |
cd /opt/graphite/webapp/graphite | |
sudo cp local_settings.py.example local_settings.py | |
#################################### | |
# START CARBON | |
#################################### | |
cd /opt/graphite/ | |
sudo ./bin/carbon-cache.py start | |
WSGISocketPrefix should really be in /var, not /etc - since it's a transient runtime file, not configuration. For example:
WSGISocketPrefix /var/run/wsgi
I had to add one more step: sudo easy_install psycopg2
Thanks for the great instructions!
As a note to this:
Since you are installing apache2-mpm-worker, if your server has any PHP apps on it they will certainly break. The MPM worker is not required for this setup to work but if you wish to keep it you need to install php accordingly. Also note, any php apps you plan to be running with the worker mpm requires avoiding functions that are not considered thread safe. PHP threading is a constant moving target so consult their website for info.
Nice. Thanks.
Line 75, use
sudo sed -i 's/WSGISocketPrefix run\/wsgi/WSGISocketPrefix \/var\/httpd\/wsgi/' /etc/apache2/sites-available/default
+1
8 months later it still works.
Thanks
Nice, thanks. I decided to write up an auto-install latest Graphite script for Ubuntu 12.04, you can check it out at: https://github.com/gdbtek/setup-graphite
Works perfectly. Thanks
You need specify a twisted version, the latest doesn't work. Replace
sudo easy_install twisted
with
sudo easy_install twisted==12.2.0
Thanks gdbtek, your script is working very good and we can install only single commend. Thank you so much
thanks @gdbtek your script works great. I have on feature request. Adding a upstart script that starts carbon when the machine get booted up.
Works Great!
I needed to use: sudo easy_install django-tagging==0.3.1
@Raman148: thanks, this helped me get rid of "ImportError: cannot import name python_2_unicode_compatible" error.
If you don't install an earlier version of Django tagging, you need to:
- Run/install Django 1.5.* -
sudo easy_install django==1.5.8
, django-tagging requires 1.5+ and graphite requires < 1.6
If you don't install an earlier version of Twisted, you need to:
- Remove the lines:
from twisted.scripts._twistd_unix import daemonize
anddaemonize = daemonize # Backwards compatibility
lines from/opt/graphite/lib/carbon/util.py
Other issues:
sudo cp local_settings.py.example local_settings.py
beforesudo python manage.py syncdb
- Add an appropriate SECRET_KEY to
/opt/graphite/webapp/graphite/settings.py
- adding it tolocal_settings.py
doesn't work - Add an appropriate or wild-card ALLOWED_HOSTS to
/opt/graphite/webapp/graphite/settings.py
(for the same reason as SECRET_KEY)
Pretty close. Just to clarify --add the SECRET_KEY and ALLOWED_HOSTS = at the end of the settings.py file. Some other minor issues, but works!
Great doc, thanks!
One thing - in order to start carbon, I first had to:
# pip install daemonize
then edit "/opt/graphite/lib/carbon/util.py" and change "from twisted.scripts._twistd_unix import daemonize" to just "import daemonize".
Thank you!
Here are three additional tips for those who need to install with Django higher than 1.6. Assuming that you've installed graphite in the standard location:
- Replace your /opt/graphite/webapp/graphite/manage.py file by this one: https://pikacode.com/meister/cerberio-graphite/file/4593b7cf6eb684b4d2ee1361588459b7f2f54276/webapp/graphite/manage.py
Doing this will preclude calling the now deprecated function execute_manager.
- In /opt/graphite/webapp/graphite/local_settings.py un-comment the last line:
from graphite.app_settings import *
If DEBUG = False in /opt/graphite/webapp/graphite/settings.py, add ALLOWED_HOSTS = ['*'] to /opt/graphite/webapp/graphite/settings.py
This will allow you to connect.
- If not present in /opt/graphite/webapp/graphite/settings.py, add SECRET_KEY = 'Something'
This will allow Django to start.
If commented out, un-comment:
DATABASES = {
'default': {
'NAME': '/opt/graphite/storage/graphite.db',
'ENGINE': 'django.db.backends.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': ''
}
}
This will spare you errors on database variables being not set.
Now you can create initial database by running:
sudo python manage.py syncdb
After starting carbon, don't forget starting graphite :)
python /opt/graphite/bin/run-graphite-devel-server.py --port 8080 /opt/graphite/
Now navigate from the browser to 0.0.0.0:8080
You should see Graphite composer up and running. Enjoy!
While running the command python manage.py syncdb I am getting the following error:
Traceback (most recent call last):
File "manage.py", line 13, in
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/init.py", line 443, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/init.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(_args, *_options.dict)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 231, in execute
self.validate()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 266, in validate
num_errors = get_validation_errors(s, app)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 30, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 158, in get_app_errors
self._populate()
File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 67, in _populate
self.load_app(app_name)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 88, in load_app
models = import_module('.models', app_name)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
import(name)
File "/opt/graphite/webapp/graphite/events/models.py", line 6, in
from tagging.managers import ModelTaggedItemManager
File "/usr/local/lib/python2.7/dist-packages/tagging/managers.py", line 7, in
from tagging.models import Tag
File "/usr/local/lib/python2.7/dist-packages/tagging/models.py", line 10, in
from django.contrib.contenttypes.fields import GenericForeignKey
ImportError: No module named fields
Can somebody help?
HI shubhada-antapurkar ,
I faced the same problem.
In the official django documentation for ContentTypes, the import statement used for GenericForeignKey is given as -
from django.contrib.contenttypes.fields import GenericForeignKey
This will raise an ImportError. Replace it with the following -
from django.contrib.contenttypes.generic import GenericForeignKey
It worked for me.
works great. thanks.