Showing posts with label ceres. Show all posts
Showing posts with label ceres. Show all posts

Tuesday, 8 July 2014

Latest graphite on Amazon Linux at AWS

NOTE: someone broke master branch, so reverting to 0.9.x
  1. yum update -y;reboot
  2. yum -y groupinstall "Development Tools"
  3. yum -y install git-core python-pip mlocate
  4. yum -y install python-rrdtool pycairo-devel
  5. mkdir -p /root/graphite-install
  6. cd /root/graphite-install
  7. git clone https://github.com/graphite-project/carbon.git
  8. git clone https://github.com/graphite-project/whisper.git
  9. git clone https://github.com/graphite-project/ceres
  10. git clone https://github.com/graphite-project/graphite-web.git
  11. cd /root/graphite-install/whisper
  12. git checkout 0.9.x
  13. python setup.py install
  14. cd /root/graphite-install/ceres
  15. # only has master branch, but it works with others
  16. pip install -r requirements.txt
  17. python setup.py install
  18. cd /root/graphite-install/carbon
  19. git checkout 0.9.x
  20. pip install -r requirements.txt
  21. python setup.py install
  22. cd /root/graphite-install/graphite-web
  23. git checkout 0.9.x
  24. yum install libffi-devel -y # some developer broke things, add this
  25. pip install -r requirements.txt
  26. python check-dependencies.py
  27. python setup.py install 
  28. cp -v /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
  29. cp -v /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf
  30. cp -v /opt/graphite/conf/storage-aggregation.conf.example /opt/graphite/conf/storage-aggregation.conf
  31. cp -v /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py
  32. cp -v /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
  33. vi /opt/graphite/webapp/graphite/local_settings.py
    1. set SECRET_KEY param
    2. uncomment DATABASE section
  34. add these lines to /root/.bash_profile
    1. export GRAPHITE_ROOT=/opt/graphite
    2. export PYTHONPATH=$GRAPHITE_ROOT/webapp:$GRAPHITE_ROOT/whisper
  35. source /root/.bash_profile
  36. django-admin.py syncdb --settings=graphite.settings
  37. yum -y install httpd24 mod24_wsgi
  38. mkdir /etc/httpd/vhosts.d
  39. add to end of /etc/httpd/conf/httpd.conf
    1. IncludeOptional vhosts.d/*.conf
  40. create /etc/httpd/vhosts.d/graphite.conf with below
  41. mkdir /var/run/wsgi;chmod -v 777 /var/run/wsgi
  42. apachectl -S
    1. check for errors
  43. service httpd start
  44. /opt/graphite/bin/carbon-cache.py start
  45. find /opt/graphite/storage -type d -exec chmod -v 777 {} \;
  46. find /opt/graphite/storage -type f -exec chmod -v 666 {} \;
  47. echo '127.0.1.3 graphite' >> /etc/hosts
  48. curl -I http://graphite
  49. on local machine
    1. make same /etc/hosts entry
    2. port forward 127.0.1.3:8081 to remote-server:80
    3. curl -I http://graphite:8081
  50. END

WSGISocketPrefix /var/run/wsgi

<VirtualHost *:80>
    ServerName graphite
    DocumentRoot "/opt/graphite/webapp"
    ErrorLog logs/webapp_error.log
    CustomLog logs/webapp_access.log common

    WSGIDaemonProcess graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120
    WSGIProcessGroup graphite
    WSGIApplicationGroup %{GLOBAL}
    WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite application-group=%{GLOBAL}
    WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi

    Alias /content/ /opt/graphite/webapp/content/
    <Location "/content/">
        SetHandler None
        Require all granted
    </Location>
  
    Alias /media/ "@DJANGO_ROOT@/contrib/admin/media/"
    <Location "/media/">
        SetHandler None
        Require all granted
    </Location>
 
    <Directory /opt/graphite/conf/>
        Require all granted
    </Directory>
</VirtualHost>


Thursday, 3 January 2013

Quick start how-to graphite base install on Debian

UPDATE: Also see Latest Graphite on Amazon Linux at AWS.

This only gets graphite working on your local Linux box. Left to user to translate to remote server installation thereafter.

NOTE: Do everything as root user

  1. make sure apache2 is installed and working with wsgi
    1. apt-get install apache2 -y
    2. apt-get install libapache2-mod-wsgi -y
    3. a2enmod wsgi
    4. wsgi needs a place for its sockets
      1. mkdir /etc/apache2/run
      2. mkdir /var/run/wsgi
      3. chmod 777 /etc/apache2/run /var/run/wsgi
      4. this seems undocumented, thanks!
  2. Install dependencies
    1. apt-get install -y libapache2-mod-wsgi python-twisted python-memcache python-pysqlite2 python-simplejson
    2. apt-get install -y python2.6 python-pip python-cairo python-django python-django-tagging
  3. Install graphite elements
    1. mkdir -p /root/graphite-install
    2. cd /root/graphite-install
    3. git clone https://github.com/graphite-project/graphite-web.git
    4. git clone https://github.com/graphite-project/carbon.git
    5. git clone https://github.com/graphite-project/whisper.git
    6. git clone https://github.com/graphite-project/ceres
    7. cd /root/graphite-install/whisper
    8. git checkout 0.9.x
    9. python setup.py install
    10. cd /root/graphite-install/ceres
    11. python setup.py install
    12. cd /root/graphite-install/carbon
    13. git checkout 0.9.x
    14. python setup.py install
    15. cd /root/graphite-install/graphite-web
    16. git checkout 0.9.x
    17. python check-dependencies.py
      1. fix any missing dependencies
      2. ignore warnings if certain you don't need a feature
    18. python setup.py install
  4. Setup configuration files and permissions
    1. cp -v /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
    2. cp -v /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf
    3. Create Django database
      1. cp -v /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py
        1. Edit this file by uncommenting the entire DATABASES section
          1. Otherwise next commands may fail with bizarre error
      2. cd /opt/graphite/webapp/graphite
      3. python manage.py syncdb
        1. Make sure NO errors
        2. Create a user/pass you'll never forget
    4. chown -Rv www-data:www-data /opt/graphite/storage/
      1. EXTREMELY IMPORTANT
  5. Apache
    1. Add below Apache configuration as a virtual host (details not covered here)
      1. Or do this and struggle to make it work
        1. cp -v /opt/graphite/examples/example-graphite-vhost.conf /etc/apache2/sites-available/graphite
    2. Every "directory" and "location" in the virtual hosts file need these entries, or you'll get permission denied errors
      1. apache versions before 2.4
        1. Order deny,allow
        2. Allow from all
      2. apache versions 2.4 and after
        1. Require all granted
    3. a2ensite graphite
    4. cp -v /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
    5. apache2ctl -S
      1. Check all is OK
    6. service apache2 stop
    7. service apache2 start
    8. If you have trouble check permissions under this directory and/or run this again
      1. chown -Rv www-data:www-data /opt/graphite/storage/
      2. Seems some files are created by root that should be created by www-data user maybe
  6. Start carbon daemon
    1. cd /opt/graphite
    2. /opt/graphite/bin/carbon-cache.py start
      1. verify with:
        1. lsof -nP -i :2003
      2. TASK: automate this to start on reboot somehow
  7. Add to /etc/hosts
    1. 127.0.1.3 graphite
  8. tail -F /opt/graphite/storage/log/webapp/error.log
  9. python /opt/graphite/examples/example-client.py
  10. Hit http://graphite
    1. Should show initial graphite interface
  11. View results
    1. Click down into "system" -> loadavg_5min
    2. Find "Select Recent Data" icon in upper-left toolbar
      1. Set to 10 mins
    3. You should see lines appearing as script runs and feed data to Graphite via Carbon
  12. Check out giraffe once you get some stats to shove in it
    1. https://github.com/kenhub/giraffe
    2. Just dump the files you get from the git clone into a directory under you default Apache install and tweedle with dashboard.js until you see something
  13. Try this a few times on the CLI of your graphite server every few minutes
    1. echo "system.logs.changed_last10 `find /var/log -mmin -10 | wc -l` `date +%s`" | nc -w 1 localhost 2003
    2. Try similar commands to pass in other stats
      1. echo must output a single integer.

WSGISocketPrefix /var/run/wsgi

<VirtualHost *:80>
    ServerName graphite
    DocumentRoot "/opt/graphite/webapp"
    ErrorLog /opt/graphite/storage/log/webapp/error.log
    CustomLog /opt/graphite/storage/log/webapp/access.log common
    
    WSGIDaemonProcess graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120
    WSGIProcessGroup graphite
    WSGIApplicationGroup %{GLOBAL}
    WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite application-group=%{GLOBAL}
    WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi 

    Alias /content/ /opt/graphite/webapp/content/
    <Location "/content/">
        SetHandler None
    </Location>
    
    Alias /media/ "@DJANGO_ROOT@/contrib/admin/media/"
    <Location "/media/">
        SetHandler None
    </Location>
    
    <Directory /opt/graphite/conf/>
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

Interview questions: 2020-12

Terraform provider vs provisioner Load balancing Network Load Balancer vs Application Load Balancer  Networking Layer 1 vs Layer 4 haproxy u...