text:
Monitor your production systems and application analytics using Graphite. This article will help you setup these tools on Ubuntu 14.04 on a Nginx webserver with PostgreSQL as backend.
What is what
What is Graphite?
Graphite is an open source software that is used for monitoring any system. The monitored data is the numeric information that represents any performance metric. Graphite also as a renderer which renders this information as graphs. Official Documentation
What is Nginx?
NGINX is a very fast Webserver, its faster than most web servers available in the market. The biggest advantage of Nginx is its concurrency (because of asynchronous nature). It can also act as
- HTTP Cache
- Reverse Proxy
- Load Balancer
For more information visit Nginx Wiki
Installing Nginx
sudo apt-get install nginx nginx-extras
Installing Graphite
Graphite Ubuntu Package Installation
Install Graphite packages
sudo apt-get update
sudo apt-get install graphite-web graphite-carbon
NOTE: During the installation, you will be asked if during uninstallation of Graphite you also like to remove its files. Please select NO because anyways you can delete them manually. The files are kept in
Install and Configure PostgreSQL Database
Graphite internally uses carbon and whisper database library for storing data. But the web application is a Django application which needs some data store for its own purpose. The default data store configured is SQLite3 database files. But this is not a full fledged database system hence we will use PostgreSQL.
Script to install database and libs used by Graphite to communicate with PostgreSQL
sudo apt-get install postgresql libpq-dev python-psycopg2
Once our PostgreSQL is installed we will create a user and a database
Login to PostgreSQL console
sudo -u postgres psql
Create a user graphite which will be used by Django to operate on our database.
$ CREATE USER graphite WITH PASSWORD 'mypassword';
Please make sure you select a secure password for your user.
Create a database graphite and give our new user graphite ownership of it.
$ CREATE DATABASE graphite WITH OWNER graphite;
Please verify is database is created or not by connection to it
$ \c graphite
If you can successfully connect to the database graphite then you are good to go to next step.
Exit from the PostgreSQL console
$ \q
Configure Graphite Web Application
Now, as we have our PostgreSQL database and user ready to go we can now move to configuring the web application.
Open the Graphite web app configuration file:
sudo vim /etc/graphite/local_settings.py
Uncomment the SECRET_KEY and give a nice random value to it
Uncomment the TIMEZONE and set it to some appropriate value. I have set it to UTC, but you may choose any one you like
Uncomment the USE_REMOTE_USER_AUTHENTICATION and set tot to True so that remote user will be authenticated first before making any DB changes
USE_REMOTE_USER_AUTHENTICATION = True
Change the database dictionary definition:
'default': {
'NAME': 'graphite',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'graphite',
'PASSWORD': 'mypassword',
Save and close this file.
Sync the Database
Once your web application is configured, it is time to sync your database, create a super user and create the correct structure.
sudo graphite-manage syncdb
NOTE: It will ask you to create a superuser. Make sure you remember the credentials with which you create one. This user will be used to connect to Graphite application and be admin of it. Being admin you will change interface of Graphite and create graphs.
Configure Carbon
Carbon is the Graphite storage backend.
Open the configuration file:
sudo vim /etc/default/graphite-carbon
Change value of CARBON_CACHE_ENABLED to true
CARBON_CACHE_ENABLED = true
This enables the carbon service to start at boot
Save and close the file.
Next, open the Carbon configuration file:
sudo vim /etc/carbon/carbon.conf
Set ENABLE_LOGROTATION to True to turn on log rotation
ENABLE_LOGROTATION = True
Save and close the file
Configuring Storage Schemas
Now, open the storage schema file. This tells Carbon how long to store values and how detailed these values should be:
sudo vim /etc/carbon/storage-schemas.conf
Inside you will find entries like
pattern = ^carbon\.
retentions = 60:90d
which implies: pattern that matches regular expression ^carbon. should retain the data with retention policy 60:90d which is
- how often a metric is recorded: 60 seconds
- length of time to store those values: 90 days
For detail information on retention policy visit here
Now we need to add our own entry. Let's take an example test i.e. we need to monitor data points and our data point entries will start with string test.
NOTE: This entry should be added before the default entry mentioned at the bottom of the file
pattern = ^test\.
retentions = 10s:10m,1m:1h
This will match any metrics beginning with "test.". It will store the data it collects two times, in varying detail.
The first archive definition (1s:10m) will create a data point every ten seconds. It will store the values for only ten minutes.
The second archive (1m:1h) will create a data point every one minute. It will gather all of the data from the past minute (six points, since the previous archive creates a point every ten seconds) and aggregate it to create the point. By default, it does this by averaging the points, but we can adjust this later. It stores the data at this level of detail for one hour.
This example is taken from this link
Save and close the file.
Storage Aggregation Methods
This aggregation methods are used when we try to fetch data that is less detailed (In our previous example we saw 6 data points were aggregated to create 1 data point). Understanding aggregation is important is we want accurate metrics.
Default aggregation method is taking out mean of values which implies that all retention policies other than most detailed one will create data points by taking mean of all data points it received.
We can specify the aggregation configuration in file called storage-aggregation.conf . A sample file is already provided by Carbon, so you can simply copy-paste it for default behaviour.
sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
You can view official documentation to understand it better.
Save and close the file.
Start the carbon service
sudo service carbon-cache start
Setup uwsgi and init script
To install uwsgi globally you can run following command
sudo apt-get install python-dev
sudo pip install uwsgi
If pip is not installed in your system, you can run following command
sudo apt-get install python-pip
The entrance file for Django application is stored in directory /usr/share/graphite-web and is by default named as graphite.wsgi. You should rename it to graphite_wsgi.py.
You can do this by executing following command
sudo cp /usr/share/graphite-web/graphite.wsgi /usr/share/graphite-web/graphite_wsgi.py
Create log files and socket files with appropriate permissions
sudo touch /var/run/graphite.sock
sudo chmod 777 /var/run/graphite.sock
sudo touch /var/log/graphite.log
sudo chmod 777 /var/log/graphite.log
Once you have uwsgi setup in your system its time to set up the init script which will make it easier to manage the service.
Create the following file
sudo vim /etc/init/uwsgi-graphite.conf
And put following content in it
# vim: syntax=upstart
env UWSGI_BIN=/usr/local/bin/uwsgi
env PYTHONPATH=/usr/share/graphite-web
expect fork
umask 0000
start on runlevel [2345]
stop on runlevel [!2345]
exec $UWSGI_BIN --socket /var/run/graphite.sock --master --need-app \
--catch-exceptions --reload-on-exception --pp $PYTHONPATH \
-w graphite_wsgi:application --buffer-size 32768 -p 4 -O 2 >>/var/log/graphite.log 2>&1 &
end script
Now you can start the Graphite Web application service using following command
sudo service uwsgi-graphite start
But before you can see anything on browser you need to setup Nginx configuration
Setup Nginx for Graphite
Let us first create all files and links
sudo touch /etc/nginx/sites-enabled/graphite
sudo ln -s /etc/nginx/sites-enabled/graphite /etc/nginx/sites-available/graphite
# Log files
sudo touch /var/log/nginx/graphite.access.log
sudo chmod 666 /var/log/nginx/graphite.access.log
sudo touch /var/log/nginx/graphite.error.log
sudo chmod 666 /var/log/nginx/graphite.error.log
Now we are ready for configuring Nginx server for Graphite
Open file /etc/nginx/sites-enabled/graphite and put following content in it
sudo vim /etc/nginx/sites-enabled/graphite
Nginx configuration
server {
server_name graphite.yourservername.com;
listen 80;
rewrite ^(.*) https://$host$1 permanent;
server {
server_name graphite.yourservername.com;
listen 443 ssl spdy;
access_log /var/log/nginx/graphite.access.log;
error_log /var/log/nginx/graphite.error.log;
location = /robots.txt {
echo "User-agent: *\nDisallow: /\n";
root /usr/share/graphite-web;
location = /favicon.ico {
return 204;
location /content {
alias /usr/share/graphite-web/static;
expires max;
location / {
uwsgi_pass unix:/var/run/graphite.sock;
include uwsgi_params;
Now you can view a working Graphite on your server. Just hit http://graphite.yourservername.com from your favourite browser.
See it working
Login to the system with credentials that you provided while creating the superuser.
Once you are logged in, you should see a screen like this.
First we need to add data into the system. Remember we added a pattern matcher in Storage Schema, according to which any pattern that starts with test. will be recorded as our pattern. Lets add some random data
In order to add data we need to run following
echo "test.count 9 `date +%s`" | nc -q0 127.0.0.1 2003;
This will add one data metric of value 9 in system. Lets add some more data; this time wee loop through values
for i in 4 6 8 16 2; do echo "test.count $i `date +%s`" | nc -q0 127.0.0.1 2003; sleep 6; done
Now you should see something like this.
I already had some data in the system, your graph will look a bit different but should be similar
This completes the setup of Graphite on your machine. Although the UI does not look good but when used along with Grafana, it gives a complete experience along with high level of customization and metric analytics.


text:
The Cuban jazz would not be complete without the figure of the virtuoso pianist and composer Gonzalo Rubalcaba.
Considered a musician of the post-bop era, he has won awards both at home and abroad. He has also shared the stage with renowned artists such as Beatriz Márquez, Pablo Milanes, Juan Luis Guerra, Charlie Haden and Dizzy Gillespie.
Birth and first steps in music
Gonzalo Gonzalez Fonseca was born in Havana, Cuba, on 27th May 1963. A member of a prominent family of musicians, he studied at the Conservatory Manuel Saumell, the Amadeo Roldan and the Superior Institute of Art. Owner of a natural talent, Gonzalo has worked for 14 years with orchestras such as Aragon, Síntesis and Van Van, among others. In addition, he has accompanied on piano soloists such as Alina Sanchez, Soledad Delgado, Ela Calvo, Beatriz Marquez and Pablo Milanes.
Solo career
In 1983, his personal initiative leads him to found the Proyecto group. As a conductor and pianist, he went to several renowned festivals in countries like Holland, England, Spain, Japan, Belgium, Germany and Denmark. He is also founder of the Cuban Quartet and collaborates with artists like Charlie Haden, Jim Hall, Chick Corea, Paul Motian, and the bands Weather Uptdate and Mel Lewis, among others.
In the first editions of the Jazz Plaza Festival in Havana, he stood out with excellent piano solos, rich improvisation and a rhythmic profusion that surprised the audience. On his albums La nueva cubana (1984) and Concatenación I y II (1986), he merged the best jazz elements in themes like Rapsodia española, Pergamín, Pisando el césped and Nueva cubana. So imp
So impressed trumpeter Dizzy Gillespie attended his performance of the Cuban musician in the Jazz Plaza 1986, and he decided to invite Gonzalo Rubalcaba to record the live album Gillespie with Gonzalo Rubalcaba. That same year, Gonzalo Rubalcaba signed a contract with the German label Messidor, that released the albums Gonzalo Rubalcaba (1986), Live in Havana (1986), Mi gran pasión (1987) and Giraldilla (1989).
The consecration of a master
It is awarded with the EGREM 1986 and 1987 awards, and the Benny Moré Festival in 1987. That same year, he makes its first foray into symphonic music with the record Concierto Negro with the National Symphony Orchestra. This album combines Latin jazz with traditional Yoruba music and Cuban genres.
Later, in 1988, he decides to reduce his group only to 5 members and experimenting with computerized effects. Under this new line, he composed the soundtrack for the film Cartas del parque of Tomas Gutierrez. In 1992, Gonzalo Rubalcaba settles in the Dominican Republic.
Thereafter, the number of recordings and tours around the world record increases. One of its most important contracts is with the Blue Note label. Under this label, he recorded albums like Discovery (1990), The Blessing (1991), Suite 4 and 20 (1992), Live in the USA (1994-96), Antiguo (1997), The Trio (1998) and Supernova (2002). For them, he received several Grammy nominations.
Finally, he gets the Latin Grammy 2002 with Supernova, and again in 2006 with the album Solo. He has also recorded with Issac Delgado, Charlie Haden, Francisco Céspedes and Juan Luis Guerra. Today, he lives in the US city of Fort Lauderdale, Florida.

subset: commoncrawl


text:
Prenuptial Agreements are not very common in India as marriage is viewed as a sacred and holy event rather than a contract between parties. The concept of prenuptial agreements is strange to people as they believe that one cannot even think of breaking this sacred bond. In India, prenups do not have binding effects as per law but the prenups can only be referred if the matter is taken to a test in a court of law. However, we get health insurance not because we hope to get into an accident but because we want to protect ourselves as life is uncertain. The same should apply to a prenuptial agreement. One can hope that it is never required but in the event that it is, its presence shall be beneficial.
Our team offers expert guidance for the formulation of prenuptial agreements for Indians as well as Non Resident Indians. Our team is the best in their respective fields and have drafted several such prenuptial agreements all to the satisfaction of our clients.
You could immediately write to us or mail us on email@example.com for immediate needed help /assistance.
Kindly note that you will have to bear the necessary hourly professional fees/charges for needed consultations and advisory or for any other legal assistance needed.
Prior to fixing up meeting/conference, you may call on 09322286663 or on 022-26111281 or write to us on firstname.lastname@example.com for necessary fee structure and quote and / or to know about hourly consultation professional charges.


text:
Christian Books
Michelle Larks
Publisher : Urban Books
TIl Debt Do Us Part is the fictionalized story of a Nichole Singleton the lead soprano of a Chicago based church who battles a fierce gambling addiciton.
If you're an author or publisher, you've come to the right place. BookBuzzr provides one of the most comprehensive set of book-marketing technologies and services in the world. We're constantly adding new features in a race with ourselves to build technologies that will help your books fly out of book-stores.
Copyright © 2023 Selvi Software Technologies Pvt. Ltd. Privacy | Terms


text:
Through the power of smart sensors and the magic of the cloud, children being parched is on its way to becoming a thing of the past — at least, if the Gulülu team has anything to say in the matter. The company's bottle, launching on Kickstarter today, is the newest, most high-tech weapon in the battle to get kids to imbibe enough liquids throughout the day.
The idea is to turn the act of drinking water into an integrated game. The water bottle has a small screen built in, and additional sensors mean that shaking two bottles in close proximity to each other make the pets "friends," enabling them to interact.
The bottles have rechargeable batteries and a wireless charging dock to keep the battery topped up. The company claims the Gulülu will stay juiced for four days before another recharge is required.
The bottles use multiple embedded sensors to measure not just how much water is disappearing from the bottle throughout the day, but also to attempt to determine whether the kid is actually rehydrating, or trying to be cheeky, pouring the water out in the flower bed outside the school. The idea is that only actually drinking is rewarded, and that the digital pets thrive best if the bottle's owners use them as intended.
My gut tells me that Gulülu is an expensive solution to a non-existent problem.
For parents, in addition to having a chance to try to influence their children to drinking more water, there's an additional incentive: The Gulülu syncs with the cloud and lets parents monitor how their kids are getting on via the iOS and Android apps. Parents can also schedule "sleep" or "school" modes, during which the pets go to sleep and become unresponsive, so the pets don't become a distraction during sleeping or learning hours.
Gulülu has prototypes ready to go, and today launched a Kickstarter campaign to get the product through the final production phase, with early-bird pricing starting at $89, followed by regular-priced Gulülu bottles at $99 each. The company estimates a shipping date of September, and the recommended retail price will be $129 once the products start making an appearance on shelves.
It's an interesting product, and it's easy to imagine a world where every child in your vicinity is running around shaking their Gulülu bottles at each other and the product turns into a huge hit. For that to happen, however, two things need to click into alignment. Parents need to both feel that hydration is a big enough problem to solve and decide that a $129 water bottle is the right way of going about tackling the issue. My gut tells me that Gulülu is an expensive solution to a non-existent problem. Time will tell, and it'll be interesting to keep an eye on the Kickstarter campaign either way.