5 if [ ! -d "$base" -o ! -f "$base/netdata.c" ]
7 echo >&2 "Cannot find my home directory '${base}'."
12 # every how many seconds to show the graphs
13 NETDATA_CONFIG_UPDATE_EVERY=2
15 # the detail of the data that will be kept in netdata
16 NETDATA_CONFIG_INTERNAL_UPDATE_EVERY=1
18 # how many points should the graphs have
19 NETDATA_CONFIG_HISTORY_POINTS=120
21 # how many points should be kept in memory
22 NETDATA_CONFIG_HISTORY_DATA=3600
24 # every how many graph refreshes, the page should be reloaded
25 # this fixes a bug in the google graphs API which leaks memory
26 # when refreshes graphs
27 NETDATA_CONFIG_RELOAD_EVERY=500
29 if [ -f netdata.conf ]
34 # how many history lines to keep in netdata
35 NETDATA_HISTORY_LINES=$[NETDATA_CONFIG_UPDATE_EVERY * NETDATA_CONFIG_HISTORY_POINTS / NETDATA_CONFIG_INTERNAL_UPDATE_EVERY]
37 echo "Creating a directory for netdata..."
39 for x in /run/netdata /var/run/netdata /tmp/netdata
41 echo " Trying '${x}'..."
44 mkdir "${x}" 2>/dev/null
47 echo " OK. '${x}' works."
52 echo " OK. '${x}' works."
60 echo >&2 "Cannot find where to put netdata files."
66 echo "Removing existing $base/data link"
72 echo "Linking '${data}' to $base/data"
73 ln -s "${data}" data || exit 1
75 echo >&2 "Directory $base/data already exists. Not touching it, however it should be a link '${data}'."
78 cp "${base}/all.xsl" "${data}/"
79 cp "${base}/netdata.js" "${data}/"
80 cp "${base}/tc-all.sh" "${data}/"
81 chmod 700 "${data}/tc-all.sh"
83 echo "Finding proper parameters for dashboard..."
85 echo "Stopping a (possibly) running netdata..."
86 killall netdata 2>/dev/null
87 killall tc-all.sh 2>/dev/null
89 echo "Compiling netdata"
90 # gcc -Wall -O3 -o netdata netdata.c -lpthread || exit 1
91 gcc -Wall -ggdb -o netdata netdata.c -lpthread || exit 1
93 echo "Starting netdata"
97 $p/netdata -d -u $NETDATA_CONFIG_INTERNAL_UPDATE_EVERY -l $NETDATA_HISTORY_LINES || exit 1
103 all=`wget http://127.0.0.1:19999/list -O - 2>/dev/null`
107 y=`echo "$x" | tr ".-" "__"`
108 eval "t=\${NETDATA_PRIORITY_${y}}"
109 if [ ! "$t" = "IGNORE" ]
115 echo "We have $count graphs..."
117 echo "Generating ${data}/index.html"
119 cat >${data}/index.html <<EOF
120 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
121 <html xmlns="http://www.w3.org/1999/xhtml">
123 * {font-family:Arial}
124 div {float: left; margin: 0 0 0 0; }
126 <title>${host} netdata</title>
128 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
130 <!--Load the AJAX API-->
131 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
132 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
133 <script type="text/javascript" src="/file/netdata.js"></script>
134 <script type="text/javascript">
136 // Set a callback to run when the Google Visualization API is loaded.
137 google.setOnLoadCallback(drawCharts);
139 function drawCharts() {
140 // EDIT: add one line per interface you have
142 // EDIT: name div id json data graph vertical axis title
143 // EDIT: --------------------------------------------------------------------------------------------------
148 y=`echo "$x" | tr ".-" "__"`
154 title="Network Usage for "
155 vtitle="bandwidth in kilobits/s"
159 title="Disk I/O for "
160 vtitle="I/O in kilobytes/s"
164 title="Class utilization for "
165 vtitle="bandwidth in kilobits/s"
170 eval "NETDATA_TITLE_${y}=\${NETDATA_TITLE_${y}:-${x}}"
171 eval "t=\${NETDATA_TITLE_${y}}"
173 eval "p=\${NETDATA_PRIORITY_${y}}"
174 if [ ! "$p" = "IGNORE" ]
176 cat >>${data}/index.html <<EOF2
177 addChart('${x}', '${y}_div', 0, 0, "data/${x}/${NETDATA_CONFIG_HISTORY_POINTS}/${NETDATA_CONFIG_UPDATE_EVERY}/average/", "${title}${t} (${x})", "${vtitle}");
182 ref=$[4 * NETDATA_CONFIG_UPDATE_EVERY]
183 tim=$[1000 * NETDATA_CONFIG_UPDATE_EVERY]
187 tim=$[1000 * NETDATA_CONFIG_UPDATE_EVERY / count]
188 if [ $tim -lt $[200 * NETDATA_CONFIG_UPDATE_EVERY] ]
190 tim=$[200 * NETDATA_CONFIG_UPDATE_EVERY]
194 cat >>${data}/index.html <<EOF3
195 refreshCharts(999999);
198 var refreshCount = 0;
199 function myChartsRefresh() {
201 if(refreshCount > $NETDATA_CONFIG_RELOAD_EVERY) location.reload();
203 // refresh up to $ref charts per second
207 setInterval(myChartsRefresh, $tim);
209 //window.onresize = function(event) {
210 // refreshCharts(999999);
218 EDIT: add one div per interface you have
219 EDIT: use the same id above and bellow!
223 tmp="/tmp/$RANDOM.netdata.$$.$RANDOM"
226 y=`echo "$x" | tr ".-" "__"`
227 eval "NETDATA_PRIORITY_${y}=\${NETDATA_PRIORITY_${y}:-${x}}"
228 eval "t=\${NETDATA_PRIORITY_${y}}"
229 if [ ! "$t" = "IGNORE" ]
235 for x in `cat "${tmp}" | sort`
237 n="`echo "$x" | cut -d '|' -f 2-`"
238 cat >>${data}/index.html <<EOF4
239 <div id="${n}_div"></div>
244 cat >>${data}/index.html <<EOF5
249 set|grep ^NETDATA_ >netdata.conf
251 if [ ! -h "${data}/data" ]
258 echo "Just hit http://127.0.0.1:19999/ from your browser."