]> git.openstreetmap.org Git - chef.git/commitdiff
Merge remote-tracking branch 'zerebubuth/add-tile-log-analysis'
authorTom Hughes <tom@compton.nu>
Sat, 17 Jan 2015 12:23:08 +0000 (12:23 +0000)
committerTom Hughes <tom@compton.nu>
Sat, 17 Jan 2015 12:23:08 +0000 (12:23 +0000)
cookbooks/tilelog/CHANGELOG.md [new file with mode: 0644]
cookbooks/tilelog/README.md [new file with mode: 0644]
cookbooks/tilelog/attributes/default.rb [new file with mode: 0644]
cookbooks/tilelog/metadata.rb [new file with mode: 0644]
cookbooks/tilelog/recipes/default.rb [new file with mode: 0644]
cookbooks/tilelog/templates/default/tilelog.cron.erb [new file with mode: 0644]
cookbooks/tilelog/templates/default/tilelog.erb [new file with mode: 0644]
roles/ironbelly.rb

diff --git a/cookbooks/tilelog/CHANGELOG.md b/cookbooks/tilelog/CHANGELOG.md
new file mode 100644 (file)
index 0000000..e0d5f63
--- /dev/null
@@ -0,0 +1,13 @@
+tilelog CHANGELOG
+=================
+
+This file is used to list changes made in each version of the tilelog cookbook.
+
+1.0.0
+-----
+- Matt Amos - first version of tilelog
+
+- - -
+Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
+
+The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
diff --git a/cookbooks/tilelog/README.md b/cookbooks/tilelog/README.md
new file mode 100644 (file)
index 0000000..31f6f4d
--- /dev/null
@@ -0,0 +1,74 @@
+tilelog Cookbook
+================
+This cookbook contains the tile log processing / analysis tools. This includes creating the tile log summaries of the number of tiles downloaded from the tile caches.
+
+Requirements
+------------
+
+#### cookbooks
+- `tools` - tilelog needs the OSM tools cookbook.
+- `git` - tilelog needs the OSM git cookbook to download the tile log analysis source.
+
+#### packages
+- `gcc` - for building the analysis tool.
+- `make` - for building the analysis tool.
+- `autoconf` - for building the analysis tool.
+- `automake` - for building the analysis tool.
+- `libboost-filesystem-dev` - a dependency of the analysis tool.
+- `libboost-system-dev` - a dependency of the analysis tool.
+- `libboost-program-options-dev` - a dependency of the analysis tool.
+
+
+Attributes
+----------
+
+#### tilelog::default
+<table>
+  <tr>
+    <th>Key</th>
+    <th>Type</th>
+    <th>Description</th>
+    <th>Default</th>
+  </tr>
+  <tr>
+    <td><tt>[:tilelog][:source_directory]</tt></td>
+    <td>String</td>
+    <td>Directory in which the source is checked out and built.</td>
+    <td><tt>/opt/tilelog</tt></td>
+  </tr>
+  <tr>
+    <td><tt>[:tilelog][:input_directory]</tt></td>
+    <td>String</td>
+    <td>Directory in which the input log files can be found.</td>
+    <td><tt>/store/logs/tile.openstreetmap.org</tt></td>
+  </tr>
+  <tr>
+    <td><tt>[:tilelog][:source_directory]</tt></td>
+    <td>String</td>
+    <td>Directory in which the output analysis files are to be placed.</td>
+    <td><tt>/store/planet/tile_logs</tt></td>
+  </tr>
+</table>
+
+Usage
+-----
+#### tilelog::default
+TODO: Write usage instructions for each cookbook.
+
+e.g.
+Just include `tilelog` in your node's `run_list`:
+
+```json
+{
+  "name":"my_node",
+  "run_list": [
+    "recipe[tilelog]"
+  ]
+}
+```
+
+License and Authors
+-------------------
+Released under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0).
+
+Authors: Matt Amos
diff --git a/cookbooks/tilelog/attributes/default.rb b/cookbooks/tilelog/attributes/default.rb
new file mode 100644 (file)
index 0000000..d07a287
--- /dev/null
@@ -0,0 +1,4 @@
+
+default[:tilelog][:source_directory] = "/opt/tilelog"
+default[:tilelog][:input_directory] = "/store/logs/tile.openstreetmap.org"
+default[:tilelog][:output_directory] = "/store/planet/tile_logs"
diff --git a/cookbooks/tilelog/metadata.rb b/cookbooks/tilelog/metadata.rb
new file mode 100644 (file)
index 0000000..0c75d9e
--- /dev/null
@@ -0,0 +1,9 @@
+name             'tilelog'
+maintainer       'OpenStreetMap Administrators'
+maintainer_email 'admins@openstreetmap.org'
+license          'Apache 2.0'
+description      'Installs and configures tile log analysis'
+long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
+version          '1.0.0'
+depends          'git'
+depends          'tools'
diff --git a/cookbooks/tilelog/recipes/default.rb b/cookbooks/tilelog/recipes/default.rb
new file mode 100644 (file)
index 0000000..9deb70d
--- /dev/null
@@ -0,0 +1,97 @@
+#
+# Cookbook Name:: tilelog
+# Recipe:: default
+#
+# Copyright 2014, OpenStreetMap Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+include_recipe "tools"
+
+package "gcc"
+package "make"
+package "autoconf"
+package "automake"
+package "libboost-filesystem-dev"
+package "libboost-system-dev"
+package "libboost-program-options-dev"
+
+tilelog_source_directory = node[:tilelog][:source_directory]
+tilelog_input_directory = node[:tilelog][:input_directory]
+tilelog_output_directory = node[:tilelog][:output_directory]
+
+# resources for building the tile analysis binary
+git tilelog_source_directory do
+  action :sync
+  repository "https://github.com/zerebubuth/openstreetmap-tile-analyze.git"
+  revision "live"
+  user "www-data"
+  group "www-data"
+  notifies :run, "execute[tilelog-autogen]", :immediate
+end
+
+execute "tilelog-autogen" do
+  action :nothing
+  command "./autogen.sh"
+  cwd tilelog_source_directory
+  user "www-data"
+  group "www-data"
+  notifies :run, "execute[tilelog-configure]", :immediate
+end
+
+execute "tilelog-configure" do
+  action :nothing
+  command "./configure --with-boost-libdir=/usr/lib"
+  cwd tilelog_source_directory
+  user "www-data"
+  group "www-data"
+  notifies :run, "execute[tilelog-build]", :immediate
+end
+
+execute "tilelog-build" do
+  action :nothing
+  command "make"
+  cwd tilelog_source_directory
+  user "www-data"
+  group "www-data"
+end
+
+# resources for running the tile analysis
+template "/usr/local/bin/tilelog" do
+  source "tilelog.erb"
+  owner "root"
+  group "root"
+  mode 0755
+  variables {
+    :analyze_bin => "#{tilelog_source_directory}/openstreetmap-tile-analyze",
+    :input_dir => tilelog_input_directory,
+    :output_dir => tilelog_output_directory
+  }
+end
+
+template "/etc/cron.d/tilelog" do
+  source "tileog.cron.erb"
+  owner "root"
+  group "root"
+  mode 0644
+end
+
+# resources related to the output of the analysis and where it
+# can be publicly downloaded.
+directory tilelog_output_directory do
+  action :create
+  user "www-data"
+  group "www-data"
+  mode 0755
+end
diff --git a/cookbooks/tilelog/templates/default/tilelog.cron.erb b/cookbooks/tilelog/templates/default/tilelog.cron.erb
new file mode 100644 (file)
index 0000000..7736019
--- /dev/null
@@ -0,0 +1,2 @@
+MAILTO=zerebubuth@gmail.com
+17 7 * * * /usr/local/bin/tilelog
diff --git a/cookbooks/tilelog/templates/default/tilelog.erb b/cookbooks/tilelog/templates/default/tilelog.erb
new file mode 100644 (file)
index 0000000..21ae4d5
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+ANALYZE=<%= @analyze_bin %>
+LOGDIR=<%= @input_dir %>
+OUTDIR=<%= @output_dir %>
+if [ -z "$DATE" ]; then
+               DATE=`date -d "2 days ago" "+%Y-%m-%d"`
+fi
+TMPDIR=`mktemp -d -t tmp.XXXXXXXXX`
+ORIGDIR=`pwd`
+
+clean_up() {
+               cd $ORIGDIR
+               rm -rf $TMPDIR
+}
+
+trap clean_up 0 HUP INT TERM
+cd $TMPDIR
+
+mkdir db
+nice -n 19 $ANALYZE $LOGDIR/*-${DATE}.xz > analyze.log
+if [ -f tiles.txt ]; then
+               nice -n 19 xz -z tiles.txt
+               mv tiles.txt.xz $OUTDIR/tiles-${DATE}.txt.xz
+
+else
+               cat analyze.log
+fi
index 34c03de71563680c5ddfe6fb23ce3a05e4d4b174..9a8188449b797a30fd9d403d44a145618606b07b 100644 (file)
@@ -99,5 +99,6 @@ run_list(
   "role[planetdump]",
   "recipe[rsyncd]",
   "recipe[openvpn]",
-  "recipe[git::server]"
+  "recipe[git::server]",
+  "recipe[tilelog]"
 )