# Copyright (c) 2010 Flowerfire, Inc. All Rights Reserved. apache_custom = { plugin_version = "2.0" info.1.manufacturer = "Apache" info.1.device = "Custom (Use with your format string)" info.1.version.1 = "" # unknowndate - 1.0 - ??? - original implementation # 21/May/2006 - 1.1 - GMF - added support for content_length, uri, and source_ip fields # 2006-11-10 - 1.2 - GMF - Added "visitors per download" calculation (commented out by default) # 2007-10-09 - 1.3 - KBB - Added new derived fields to groups # 2008-06-09 - 1.4 - KBB - Added support for the case where the page value is in the uri_stem field. # 2008-09-03 - 1.5 - GMF - Added support for numerical reporting of the time_taken (%D) field. # 2010-10-11 - 1.5.1 - MSG - Edited info lines. # 2012-02-07 - 1.5.2 - GMF - Added support for numerical reporting of the content_bytes (%B) field # 2013-02-22 - 2.0 - GMF - Switched to Web Server Package # The name of the log format log.format.format_label = "Apache Custom Log Format" log.miscellaneous.log_data_type = "apache_custom" log.miscellaneous.log_format_type = "web_server" # The log is in this format if any of the first ten lines match this regular expression log.format.autodetect_regular_expression = "this format cannot be autodetected" # Treat fields surrounded by square brackets (e.g. the date/time field) as a single quoted field. log.format.treat_brackets_as_quotes = "true" log.format.common_log_format = "true" # The format of dates and times in this log log.format.date_format = "dd/mmm/yyyy:hh:mm:ss" log.format.time_format = "dd/mmm/yyyy:hh:mm:ss" # Log fields log.fields = { # date = { # label = "$lang_stats.field_labels.date" # type = "date" # index = 0 # subindex = 0 # hierarchy_dividers = "" # left_to_right = false # leading_divider = "false" # } # date # # time = { # label = "$lang_stats.field_labels.time" # type = "time" # index = 0 # subindex = 0 # hierarchy_dividers = "" # left_to_right = false # leading_divider = "false" # } # time duration = "" } # log.fields # # Database fields # database.fields = { # # date_time = { # label = "$lang_stats.field_labels.date_time" # log_field = "date_time" # type = "string" # suppress_top = 0 # suppress_bottom = 3 # display_format_type = "date_time" # } # date_time # # day_of_week = { # label = "$lang_stats.field_labels.day_of_week" # log_field = "day_of_week" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # display_format_type = "day_of_week" # } # day_of_week # # hour_of_day = { # label = "$lang_stats.field_labels.hour_of_day" # log_field = "hour_of_day" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # display_format_type = "hour_of_day" # } # hour_of_day # # page = { # label = "$lang_stats.field_labels.page" # log_field = "page" # type = "string" # suppress_top = 0 # suppress_bottom = 9 # display_format_type = "page" # } # page # # file_type = { # label = "$lang_stats.field_labels.file_type" # log_field = "file_type" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # file_type # # worm = { # label = "$lang_stats.field_labels.worm" # log_field = "worm" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # worm # # screen_dimensions = { # label = "$lang_stats.field_labels.screen_dimensions" # log_field = "screen_dimensions" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # screen_dimensions # # screen_depth = { # label = "$lang_stats.field_labels.screen_depth" # log_field = "screen_depth" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # screen_depth # # hostname = { # label = "$lang_stats.field_labels.hostname" # log_field = "hostname" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # display_format_type = "hostname" # } # hostname # # domain_description = { # label = "$lang_stats.field_labels.domain_description" # log_field = "domain_description" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # domain_description # # location = { # label = "$lang_stats.field_labels.location" # log_field = "location" # type = "string" # suppress_top = 0 # suppress_bottom = 3 # } # location # # referrer = { # label = "$lang_stats.field_labels.referrer" # log_field = "referrer" # type = "string" # suppress_top = 1 # suppress_bottom = 3 # } # referrer # # referrer_description = { # label = "$lang_stats.field_labels.referrer_description" # log_field = "referrer_description" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # referrer_description # # search_engine = { # label = "$lang_stats.field_labels.search_engine" # log_field = "search_engine" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # search_engine # # search_phrase = { # label = "$lang_stats.field_labels.search_phrase" # log_field = "search_phrase" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # search_phrase # # web_browser = { # label = "$lang_stats.field_labels.web_browser" # log_field = "web_browser" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # web_browser # # operating_system = { # label = "$lang_stats.field_labels.operating_system" # log_field = "operating_system" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # operating_system # # spider = { # label = "$lang_stats.field_labels.spider" # log_field = "spider" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # spider # # cookie = { # label = "$lang_stats.field_labels.cookie" # log_field = "cookie" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # cookie # # server_domain = { # label = "$lang_stats.field_labels.server_domain" # log_field = "server_domain" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # server_domain # # authenticated_user = { # label = "$lang_stats.field_labels.authenticated_user" # log_field = "authenticated_user" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # authenticated_user # # server_response = { # label = "$lang_stats.field_labels.server_response" # log_field = "server_response" # type = "string" # suppress_top = 0 # suppress_bottom = 2 # } # server_response # # } # database.fields # 2013-01-22 - GMF - Removed because this is done by web_server_package now # Get search engine and search phrase information from the referrer field (before it gets simplified). # log.parsing_filters.compute_se_sp = { # value = `if (get_search_engine_info(referrer)) then ( # search_engine = volatile.search_engine; # search_phrase = volatile.search_phrase; #); #` # requires_fields = { # referrer = true # } # } # 2013-01-22 - GMF - Removed because this is done by web_server_package now # Get web browser, operating system, web browser, and spider information from the user-agent field. # log.parsing_filters.derive_from_user_agent = { # value = `get_user_agent_info(replace_all(agent, '+', ' ')); #web_browser = volatile.web_browser; #operating_system = volatile.operating_system; #spider = volatile.spider; #` # requires_fields = { # agent = true # } # } # Log Filters log.filters = { # This can be uncommented, along with the "downloads" and "visitors_per_download" numerical fields, to add a "visitors per download" column to every table. # count_downloads = `if (contains(page, 'base.php')) then downloads = 1;` # 2013-01-22 - GMF - Removed because this is done by web_server_package now # simplify_referrer = { # label = "$lang_admin.log_filters.simplify_referrer_label" # comment = "$lang_admin.log_filters.simplify_referrer_comment" # value = "if (referrer eq '-') then referrer = '(no referrer)' else if (matches_regular_expression(referrer, '^([^:]+://[^/]+/)')) then referrer = $1 . '(omitted)'" # requires_fields = { # referrer = true # } # } # simplify_referrer # # internal_referrer = { # label = "$lang_admin.log_filters.internal_referrer_label" # comment = "$lang_admin.log_filters.internal_referrer_comment" # value = "if (contains(referrer, 'mydomain.com/')) then referrer = '(internal referrer)';" # disabled = true # requires_fields = { # referrer = true # } # } # internal_referrer # # not_authenticated = { # label = "$lang_admin.log_filters.not_authenticated_label" # comment = "$lang_admin.log_filters.not_authenticated_comment" # value = "if (authenticated_user eq '-') then authenticated_user = '(not authenticated)';" # requires_fields = { # authenticated_user = true # } # } # not_authenticated # # set_page_for_worm = { # label = "$lang_admin.log_filters.set_page_for_worm_label" # comment = "$lang_admin.log_filters.set_page_for_worm_comment" # value = "if (starts_with(worm, '(')) then '' else page = '(worm)';" # requires_fields = { # page = true # worm = true # } # } # set_page_for_worm # # remove_query = { # label = "$lang_admin.log_filters.remove_query_label" # comment = "$lang_admin.log_filters.remove_query_comment" # value = "if (contains(page, '?')) then page = substr(page, 0, index(page, '?') + 1) . '(parameters)';" # requires_fields = { # page = true # } # } # remove_query # # remove_query_from_uri_stem = { # label = "$lang_admin.log_filters.remove_query_label" # comment = "$lang_admin.log_filters.remove_query_comment" # value = "if (contains(uri_stem, '?')) then uri_stem = substr(uri_stem, 0, index(uri_stem, '?') + 1) . '(parameters)';" # requires_fields = { # uri_stem = true # } # } # remove_query_from_uri_stem # # detect_page_views = { # label = '$lang_admin.log_filters.detect_page_views_label' # comment = '$lang_admin.log_filters.detect_page_views_comment' # value = "if ((file_type eq 'JPEG') or (file_type eq 'JPG') or (file_type eq 'GIF') or (file_type eq 'ICO') or (file_type eq 'PNG') or (file_type eq 'CSS') or (file_type eq 'SWF') or (file_type eq 'JS')) then page_views = 0; else page_views = 1;" # requires_fields = { # file_type = true # } # } # detect_page_views # # strip_non_page_views = { # label = '$lang_admin.log_filters.strip_non_page_views_label' # comment = '$lang_admin.log_filters.strip_non_page_views_comment' ## value = "if (page_views == 0) then page = substr(page, 0, last_index(page, '/') + 1) . '(nonpage)';" # requires_fields = { # page = true # } # } # strip_non_page_views # # mark_entry = { # label = '$lang_admin.log_filters.mark_entry_label' # comment = '$lang_admin.log_filters.mark_entry_comment' # value = 'hits = 1;' # } # mark_entry } # log.filters # log.fields = { # hostname = { # label = "$lang_stats.field_labels.hostname" # type = "host" # index = "0" # subindex = "0" # hierarchy_dividers = "." # left_to_right = "false" # leading_divider = "false" # } # hostname # server_domain = { # label = "$lang_stats.field_labels.server_domain" # type = "flat" # index = "0" # subindex = "0" # } # server_domain # authenticated_user = { # label = "$lang_stats.field_labels.authenticated_user" # type = "flat" # index = "0" # subindex = "0" # } # authenticated_user # date_time = { # label = "$lang_stats.field_labels.date_time" # type = "date_time" # index = "0" # subindex = "1" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # date_time # operation = { # label = "$lang_stats.field_labels.operation" # type = "flat" # index = "0" # subindex = "1" # } # operation # page = { # label = "$lang_stats.field_labels.page" # type = "page" # index = "0" # subindex = "2" # hierarchy_dividers = "/?" # left_to_right = "true" # leading_divider = "true" # } # page # protocol = { # label = "$lang_stats.field_labels.protocol" # type = "flat" # index = "0" # subindex = "3" # } # protocol # server_response = { # label = "$lang_stats.field_labels.server_response" # type = "response" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # server_response # size = { # label = "$lang_stats.field_labels.size" # type = "size" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # size # referrer = { # label = "$lang_stats.field_labels.referrer" # type = "URL" # index = "0" # subindex = "0" # hierarchy_dividers = "/?" # left_to_right = "true" # leading_divider = "false" # } # referrer # agent = { # label = "$lang_stats.field_labels.agent" # type = "agent" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # agent # cookie = { # label = "$lang_stats.field_labels.cookie" # type = "flat" # index = "0" # subindex = "0" # hierarchy_dividers = "" # left_to_right = "false" # leading_divider = "false" # } # agent # } # log.fields # 2013-01-22 - GMF - Removed because this is done by web_server_package now # log.field_options = { # # sessions_page_field = "page" # sessions_visitor_id_field = "hostname" # sessions_event_field = "page_views" # # } # log.field_options database.numerical_fields = { # 2013-01-22 - GMF - Removed because this is done by web_server_package now # hits = { # label = "$lang_stats.field_labels.hits" # default = false # requires_log_field = false # type = "int" # display_format_type = "integer" # entries_field = true # } # hits # 2013-01-22 - GMF - Removed because this is done by web_server_package now # page_views = { # label = "$lang_stats.field_labels.page_views" # default = true # requires_log_field = false # type = "int" # display_format_type = "integer" # } # page_views # 2013-01-22 - GMF - Removed because this is done by web_server_package now # visitors = { # label = "$lang_stats.field_labels.visitors" # default = false # requires_log_field = true # log_field = "hostname" # type = "unique" # display_format_type = "integer" # } # visitors bytes = { type = "int" integer_bits = 64 display_format_type = "bandwidth" } # bytes bytes_sent = { type = "int" integer_bits = 64 display_format_type = "bandwidth" } # bytes_sent bytes_received = { type = "int" integer_bits = 64 display_format_type = "bandwidth" } # bytes_received content_bytes = { type = "int" integer_bits = 64 display_format_type = "bandwidth" } # content_bytes duration = { type = "int" integer_bits = 64 display_format_type = "duration_compact" } # duration time_taken = { type = "int" integer_bits = 64 display_format_type = "duration_microseconds" } # time_taken average_duration = { requires_log_field = false type = "int" integer_bits = 64 aggregation_method = "average" average_denominator_field = "hits" display_format_type = "duration_compact" } # average_duration content_length = { type = "int" integer_bits = 64 display_format_type = "bandwidth" } # content_length # These fields can be uncommented, along with the log filter that sets downloads, to add a "visitors per download" column to every table. # downloads = { # requires_log_field = false # } # visitors_per_download = { # requires_log_field = false # type = "float" # display_format_type = "float" # expression = `if (cell_by_name(row_number, 'downloads') == 0) then 'n/a' else ((1.0 * cell_by_name(row_number, 'visitors')) / (1.0 * cell_by_name(row_number, 'downloads')))` # } } # database.numerical_fields create_profile_wizard_options = { # date_time_tracking = true # 2013-01-22 - GMF - This could be uncommented if visitors_per_download is uncommented above, but now-a-days, that could just be snapped on. ######### START OF FINAL_STEP CODE # final_step = ` #include "templates.admin.profiles.setup_reports_util"; # #string profile = "profiles." . volatile.new_profile_name; # ## Start with the standard reports based on remaining DB fields #add_standard_reports(profile); # ## Delete the visitors_per_download column from log_detail; there's no visitors column there, so there can't be visitors_per_download #if (node_exists(profile . ".statistics.reports.log_detail.report_elements.log_detail.columns.visitors_per_download")) then # delete_node(profile . ".statistics.reports.log_detail.report_elements.log_detail.columns.visitors_per_download"); # #` ######## END OF FINAL_STEP CODE # How the reports should be grouped in the report menu report_groups = { date_time_group = "" content_group = { page = true file_type = true uri = true uri_stem = true } visitor_demographics_group = { hostname = true source_ip = true domain_description = true location = true authenticated_user = true organization = true domain = true isp = true } visitor_systems_group = { screen_dimensions = true screen_depth = true web_browser = true operating_system = true } referrer_group = { referrer = true referrer_description = true search_engine = true search_phrase = true search_phrase_by_search_engine = true } other_group = { worm = true spider = true server_domain = true server_hostname = true server_response = true cookie = true client_id = true operation = true protocol = true process_id = true } } # report_groups snapons = { # Attach a web_server_package snapon web_server_package = { snapon = "web_server_package" name = "web_server_package" label = "$lang_admin.snapons.web_server_package.label" parameters = { user_agent_field.parameter_value = "agent" page_field.parameter_value = "page" client_ip_field.parameter_value = "hostname" server_response_field.parameter_value = "server_response" referrer_field.parameter_value = "referrer" authenticated_user.parameter_value = "authenticated_user" hits_field = { parameter_value = "$lang_stats.field_labels.hits" final_node_name = "hits" } # hits visitors_field = { parameter_value = "$lang_stats.field_labels.visitors" final_node_name = "visitors" } # visitors_field sc_bytes_field = { parameter_value = "$lang_stats.field_labels.size" final_node_name = "size" } # sc_bytes_field cs_bytes_field = { parameter_value = "none" final_node_name = "none" } # cs_bytes_field } # parameters } # web_server_package } # snapons } # create_profile_wizard_options } # apache_custom