From 8415e45c55742f3c0ee7f83d5b61b3ac988c2d2c Mon Sep 17 00:00:00 2001 From: Hassan Shahid Date: Sat, 16 Mar 2024 20:52:52 -0400 Subject: [PATCH 1/2] Add Matomo as an option for analytics_tool. Matomo is a Google Analytics alternative for use-cases that require all tracking data be kept interally. --- airflow/config_templates/config.yml | 9 ++++- airflow/configuration.py | 2 +- airflow/www/extensions/init_jinja_globals.py | 1 + airflow/www/templates/analytics/matomo.html | 34 +++++++++++++++++++ .../tracking-user-activity.rst | 5 +-- 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 airflow/www/templates/analytics/matomo.html diff --git a/airflow/config_templates/config.yml b/airflow/config_templates/config.yml index 545977bd53422..2fc72cbb2d9f1 100644 --- a/airflow/config_templates/config.yml +++ b/airflow/config_templates/config.yml @@ -1775,7 +1775,7 @@ webserver: analytics_tool: description: | Send anonymous user activity to your analytics tool - choose from google_analytics, segment, or metarouter + choose from google_analytics, segment, metarouter, or matomo version_added: ~ type: string example: ~ @@ -1787,6 +1787,13 @@ webserver: type: string example: ~ default: ~ + analytics_url: + description: | + Your instances url, only applicable to Matomo. + version_added: 2.9.0 + type: string + example: https://your.matomo.instance.com/ + default: ~ show_recent_stats_for_completed_runs: description: | 'Recent Tasks' stats will show for old DagRuns if set diff --git a/airflow/configuration.py b/airflow/configuration.py index 9d4bca54feb67..a47b35f0505c5 100644 --- a/airflow/configuration.py +++ b/airflow/configuration.py @@ -471,7 +471,7 @@ def inversed_deprecated_sections(self): ("logging", "fab_logging_level"): _available_logging_levels, # celery_logging_level can be empty, which uses logging_level as fallback ("logging", "celery_logging_level"): [*_available_logging_levels, ""], - ("webserver", "analytical_tool"): ["google_analytics", "metarouter", "segment", ""], + ("webserver", "analytical_tool"): ["google_analytics", "metarouter", "segment", "matomo", ""], } upgraded_values: dict[tuple[str, str], str] diff --git a/airflow/www/extensions/init_jinja_globals.py b/airflow/www/extensions/init_jinja_globals.py index 8e431af2efc4d..e13a46be7ba68 100644 --- a/airflow/www/extensions/init_jinja_globals.py +++ b/airflow/www/extensions/init_jinja_globals.py @@ -90,6 +90,7 @@ def prepare_jinja_globals(): { "analytics_tool": conf.get("webserver", "ANALYTICS_TOOL"), "analytics_id": conf.get("webserver", "ANALYTICS_ID"), + "analytics_url": conf.get("webserver", "ANALYTICS_URL"), } ) diff --git a/airflow/www/templates/analytics/matomo.html b/airflow/www/templates/analytics/matomo.html new file mode 100644 index 0000000000000..d45154e2162f7 --- /dev/null +++ b/airflow/www/templates/analytics/matomo.html @@ -0,0 +1,34 @@ +{# + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you 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. +#} + + + + diff --git a/docs/apache-airflow/administration-and-deployment/logging-monitoring/tracking-user-activity.rst b/docs/apache-airflow/administration-and-deployment/logging-monitoring/tracking-user-activity.rst index 6401ea72195e0..5437440cf5d5d 100644 --- a/docs/apache-airflow/administration-and-deployment/logging-monitoring/tracking-user-activity.rst +++ b/docs/apache-airflow/administration-and-deployment/logging-monitoring/tracking-user-activity.rst @@ -22,14 +22,15 @@ You can configure Airflow to route anonymous data to `Google Analytics `_, `Segment `_, or `Metarouter `_. -Edit ``airflow.cfg`` and set the ``webserver`` block to have an ``analytics_tool`` and ``analytics_id``: +Edit ``airflow.cfg`` and set the ``webserver`` block to have an ``analytics_tool`` and ``analytics_id`` and ``analytics_url`` if you're using ``matomo``: .. code-block:: ini [webserver] # Send anonymous user activity to Google Analytics, Segment, or Metarouter - analytics_tool = google_analytics # valid options: google_analytics, segment, metarouter + analytics_tool = google_analytics # valid options: google_analytics, segment, metarouter, matomo analytics_id = XXXXXXXXXXX + analytics_url = https://your-matomo-instance.example.com # only required for Matomo .. note:: You can see view injected tracker html within Airflow's source code at ``airflow/www/templates/airflow/main.html``. The related global From e7e649429a06add1601701e2640558d67256cc21 Mon Sep 17 00:00:00 2001 From: Hassan Shahid Date: Tue, 19 Mar 2024 10:16:07 -0400 Subject: [PATCH 2/2] add matomo to spelling_wordlist.txt --- docs/spelling_wordlist.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt index e1f605d9f2c76..8a20bfc9608a0 100644 --- a/docs/spelling_wordlist.txt +++ b/docs/spelling_wordlist.txt @@ -982,6 +982,8 @@ MarketingTeam MarkupSafe Masternode masterType +Matomo +matomo Maxime mb md