From b23d3fc6e325c6eed18b5084416588955ec81fc6 Mon Sep 17 00:00:00 2001 From: Matt Amos Date: Mon, 15 Dec 2014 18:26:09 +0000 Subject: [PATCH 1/1] Added tile log script to planet cookbook. --- cookbooks/planet/attributes/default.rb | 5 ++ cookbooks/planet/recipes/tilelog.rb | 86 +++++++++++++++++++ .../planet/templates/default/tilelog.cron.erb | 2 + .../planet/templates/default/tilelog.erb | 28 ++++++ 4 files changed, 121 insertions(+) create mode 100644 cookbooks/planet/recipes/tilelog.rb create mode 100644 cookbooks/planet/templates/default/tilelog.cron.erb create mode 100644 cookbooks/planet/templates/default/tilelog.erb diff --git a/cookbooks/planet/attributes/default.rb b/cookbooks/planet/attributes/default.rb index 649d9b399..b6630d3b2 100644 --- a/cookbooks/planet/attributes/default.rb +++ b/cookbooks/planet/attributes/default.rb @@ -2,3 +2,8 @@ default[:planet][:dump][:xml_directory] = "/store/planet/planet" default[:planet][:dump][:xml_history_directory] = "/store/planet/planet/full-history" default[:planet][:dump][:pbf_directory] = "/store/planet/pbf" default[:planet][:dump][:pbf_history_directory] = "/store/planet/pbf/full-history" + +default[:planet][:tilelog_source_directory] = "/home/www-data/tilelog" +default[:planet][:tilelog_input_directory] = "/store/logs/tile.openstreetmap.org" +default[:planet][:tilelog_output_directory] = "/store/planet/tile_logs" + diff --git a/cookbooks/planet/recipes/tilelog.rb b/cookbooks/planet/recipes/tilelog.rb new file mode 100644 index 000000000..f5480f547 --- /dev/null +++ b/cookbooks/planet/recipes/tilelog.rb @@ -0,0 +1,86 @@ +# +# Cookbook Name:: planet +# Recipe:: tilelog +# +# 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[:planet][:tilelog_source_directory] +tilelog_input_directory = node[:planet][:tilelog_input_directory] +tilelog_output_directory = node[:planet][:tilelog_output_directory] + +execute "tilelog-build" do + action :nothing + command "make" + cwd tilelog_source_directory + user "www-data" + group "www-data" +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-autogen" do + action :nothing + command "./autogen.sh" + cwd tilelog_source_directory + user "www-data" + group "www-data" + notifies :run, "execute[tilelog-configure]", :immediate +end + +git tilelog_source_directory do + action :sync + repository "https://github.com/zerebubuth/openstreetmap-tile-analyze.git" + revision "HEAD" + user "www-data" + group "www-data" + notifies :run, "execute[tilelog-autogen]", :immediate +end + +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 diff --git a/cookbooks/planet/templates/default/tilelog.cron.erb b/cookbooks/planet/templates/default/tilelog.cron.erb new file mode 100644 index 000000000..773601911 --- /dev/null +++ b/cookbooks/planet/templates/default/tilelog.cron.erb @@ -0,0 +1,2 @@ +MAILTO=zerebubuth@gmail.com +17 7 * * * /usr/local/bin/tilelog diff --git a/cookbooks/planet/templates/default/tilelog.erb b/cookbooks/planet/templates/default/tilelog.erb new file mode 100644 index 000000000..21ae4d5e7 --- /dev/null +++ b/cookbooks/planet/templates/default/tilelog.erb @@ -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 -- 2.43.2