<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://charlesreid1.com/w/index.php?action=history&amp;feed=atom&amp;title=Graphite%2FOld</id>
	<title>Graphite/Old - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://charlesreid1.com/w/index.php?action=history&amp;feed=atom&amp;title=Graphite%2FOld"/>
	<link rel="alternate" type="text/html" href="https://charlesreid1.com/w/index.php?title=Graphite/Old&amp;action=history"/>
	<updated>2026-06-19T12:48:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.12</generator>
	<entry>
		<id>https://charlesreid1.com/w/index.php?title=Graphite/Old&amp;diff=23751&amp;oldid=prev</id>
		<title>Admin: /* ModWSGI */</title>
		<link rel="alternate" type="text/html" href="https://charlesreid1.com/w/index.php?title=Graphite/Old&amp;diff=23751&amp;oldid=prev"/>
		<updated>2018-01-29T18:50:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;ModWSGI&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:50, 29 January 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l177&quot;&gt;Line 177:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 177:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:GraphiteBrokenErrors.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:GraphiteBrokenErrors.png]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=Flags=&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Graphite]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Database]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Monitoring]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Logging]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Time Series]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://charlesreid1.com/w/index.php?title=Graphite/Old&amp;diff=5345&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;=Installing=  ==Prerequisites==  PyCairo prerequisite: PyCairo  ==Installing Graphite==  Git checkout  cd git dir  &lt;pre&gt; python setup.py build &amp;&amp; python setup.py install &lt;/pr...&quot;</title>
		<link rel="alternate" type="text/html" href="https://charlesreid1.com/w/index.php?title=Graphite/Old&amp;diff=5345&amp;oldid=prev"/>
		<updated>2014-06-26T19:07:02Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Installing=  ==Prerequisites==  PyCairo prerequisite: &lt;a href=&quot;/wiki/PyCairo&quot; title=&quot;PyCairo&quot;&gt;PyCairo&lt;/a&gt;  ==Installing Graphite==  Git checkout  cd git dir  &amp;lt;pre&amp;gt; python setup.py build &amp;amp;&amp;amp; python setup.py install &amp;lt;/pr...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Installing=&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
PyCairo prerequisite: [[PyCairo]]&lt;br /&gt;
&lt;br /&gt;
==Installing Graphite==&lt;br /&gt;
&lt;br /&gt;
Git checkout&lt;br /&gt;
&lt;br /&gt;
cd git dir&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python setup.py build &amp;amp;&amp;amp; python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing Carbon==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python setup.py build &amp;amp;&amp;amp; python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing Whisper==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python setup.py build &amp;amp;&amp;amp; python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Setting Things Up=&lt;br /&gt;
&lt;br /&gt;
Once you&amp;#039;ve installed everything, assuming you went with the default installation configuration, graphite will be in &amp;lt;code&amp;gt;/opt/graphite&amp;lt;/code&amp;gt;. That includes Graphite web app frontends, Carbon, and Whisper.&lt;br /&gt;
&lt;br /&gt;
Now I&amp;#039;ll cover how to get each component running and get simple I/O working.&lt;br /&gt;
&lt;br /&gt;
==Setting Up Graphite==&lt;br /&gt;
&lt;br /&gt;
I followed these instructions for getting Graphite set up and installed and running and all that:&lt;br /&gt;
&lt;br /&gt;
* http://graphite.readthedocs.org/en/latest/install.html&lt;br /&gt;
&lt;br /&gt;
I installed graphite from source to the default location:&lt;br /&gt;
&lt;br /&gt;
* http://graphite.readthedocs.org/en/latest/install-source.html&lt;br /&gt;
&lt;br /&gt;
The way to test Graphite is not really to test it on its own, but rather to test it via/with Carbon.&lt;br /&gt;
&lt;br /&gt;
==Setting Up Carbon==&lt;br /&gt;
&lt;br /&gt;
To get Carbon running, you have to start with some configuration files, described on this page:&lt;br /&gt;
&lt;br /&gt;
* http://graphite.readthedocs.org/en/latest/config-carbon.html&lt;br /&gt;
&lt;br /&gt;
Basically, you give some thought to your schema - see this page http://graphite.wikidot.com/getting-your-data-into-graphite for information on what I mean. Decide your time series data naming convention, then decide how much data to gather, at what frequency. &lt;br /&gt;
&lt;br /&gt;
Enter information about your storage schema in your &amp;lt;code&amp;gt;storage-schemas.conf&amp;lt;/code&amp;gt; file, located in &amp;lt;code&amp;gt;/opt/graphite/conf/storage-schemas.conf&amp;lt;/code&amp;gt;; example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[dummy]&lt;br /&gt;
priority = 100&lt;br /&gt;
pattern = dummy&lt;br /&gt;
retentions = 1:7200&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which will gather data at a frequency of 1 Hz for 2 hours (7200 seconds total).&lt;br /&gt;
&lt;br /&gt;
There are a couple of other files to modify, specifically &amp;lt;code&amp;gt;relay-rules.conf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;carbon.conf&amp;lt;/code&amp;gt;. For these, I used the examples provided by the installation.&lt;br /&gt;
&lt;br /&gt;
Once you&amp;#039;ve finished, it&amp;#039;s time for the hello world tests.&lt;br /&gt;
&lt;br /&gt;
=Hello World=&lt;br /&gt;
&lt;br /&gt;
==Hello Carbon World==&lt;br /&gt;
&lt;br /&gt;
===Start===&lt;br /&gt;
&lt;br /&gt;
First step is to start Carbon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/graphite/bin/carbon-cache.py start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you see some regular expression problems, try fixing your regular expression in your storage-schemas configuration file, in the &amp;quot;pattern&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
===Log Files===&lt;br /&gt;
&lt;br /&gt;
Once you&amp;#039;ve started Carbon, take a look at the log files in &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/graphite/storage/log/carbon-cache/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sending Data to Carbon===&lt;br /&gt;
&lt;br /&gt;
When it comes to describing how to send data to Carbon, the Graphite documentation is pretty pathetic. Here&amp;#039;s their page:&lt;br /&gt;
&lt;br /&gt;
http://graphite.readthedocs.org/en/latest/feeding-carbon.html&lt;br /&gt;
&lt;br /&gt;
What&amp;#039;s missing is any description of how to check if Carbon has received the data correctly, what the messages in the log file mean, or even whether a piece of data has been processed by Carbon at all, or whether it has been put into a database. For that matter, maybe some description of whether Carbon has connected to the MongoDB database? Or how about some indication if the database isn&amp;#039;t even running?&lt;br /&gt;
&lt;br /&gt;
If you send data to the port, using the nc command given in the Graphite documentation,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;channel.name 12345 `date +%s`&amp;quot; | nc $SERVER $PORT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you can check the listener log file and see something like this for each piece of data you send to the port Graphite/Carbon is listening to (specified with DESTINATION in carbon.conf file):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
25/06/2014 13:59:49 :: MetricLineReceiver connection with 127.0.0.1:50930 established&lt;br /&gt;
25/06/2014 13:59:49 :: MetricLineReceiver connection with 127.0.0.1:50930 closed cleanly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hello Graphite Webapp World (Crap Version)==&lt;br /&gt;
&lt;br /&gt;
Following this page:&lt;br /&gt;
&lt;br /&gt;
* http://graphite.readthedocs.org/en/latest/config-local-settings.html&lt;br /&gt;
&lt;br /&gt;
You can configure your Graphite webapp using the configuration file settings described in the link above.&lt;br /&gt;
&lt;br /&gt;
Following this page:&lt;br /&gt;
&lt;br /&gt;
* http://graphite.wikidot.com/quickstart-guide&lt;br /&gt;
&lt;br /&gt;
You can go through a simple example step-by-step.&lt;br /&gt;
&lt;br /&gt;
I copied &amp;lt;code&amp;gt;local_settings.py.example&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;local_settings.py&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;DEBUG = True&amp;lt;/code&amp;gt; in the config file.&lt;br /&gt;
&lt;br /&gt;
Next, you&amp;#039;ll start the Carbon data collector:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python /opt/graphite/bin/carbon-cache.py --debug start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now run one of the example scripts,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python /opt/graphite/examples/example-client.py&lt;br /&gt;
&lt;br /&gt;
sending message&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
system.loadavg_1min 1.46 1403734071&lt;br /&gt;
system.loadavg_5min 1.26 1403734071&lt;br /&gt;
system.loadavg_15min 1.20 1403734071&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can check the whisper storage directory, located in &amp;lt;code&amp;gt;/opt/graphite/storage/whisper/&amp;lt;/code&amp;gt;, and verify that data is being dumped into the proper buckets:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls /opt/graphite/storage/whisper/&lt;br /&gt;
system&lt;br /&gt;
&lt;br /&gt;
$ ls -l system/&lt;br /&gt;
total 120&lt;br /&gt;
-rw-r--r--  1 charlesreid  admin  17308 Jun 25 15:08 loadavg_15min.wsp&lt;br /&gt;
-rw-r--r--  1 charlesreid  admin  17308 Jun 25 15:08 loadavg_1min.wsp&lt;br /&gt;
-rw-r--r--  1 charlesreid  admin  17308 Jun 25 15:08 loadavg_5min.wsp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hello Graphite Webapp World (Good Version)==&lt;br /&gt;
&lt;br /&gt;
http://kaivanov.blogspot.com/2012/02/how-to-install-and-use-graphite.html&lt;br /&gt;
&lt;br /&gt;
Yet another example/guide:&lt;br /&gt;
&lt;br /&gt;
http://geek.michaelgrace.org/2011/09/how-to-install-graphite-on-ubuntu/&lt;br /&gt;
&lt;br /&gt;
===ModWSGI===&lt;br /&gt;
&lt;br /&gt;
After dealing with a bunch of ModWSGI issues, I finally saw this dashboard when I started Apache and go to 0.0.0.0:&lt;br /&gt;
&lt;br /&gt;
[[Image:GraphiteBroken.png]]&lt;br /&gt;
&lt;br /&gt;
There are things on the page, but everything is broken. (Probably because of a bunch of 403s, shown when I pop open a browser console:)&lt;br /&gt;
&lt;br /&gt;
[[Image:GraphiteBrokenErrors.png]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>