0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-13 02:28:18 -05:00

Minor improvements on telemetry task

This commit is contained in:
Andrey Antukh 2022-02-15 11:06:13 +01:00 committed by Andrés Moya
parent 9b78b2a432
commit ce61b783fb
3 changed files with 39 additions and 6 deletions

View file

@ -176,7 +176,7 @@
:task :file-offload}) :task :file-offload})
(when (contains? cf/flags :audit-log-archive) (when (contains? cf/flags :audit-log-archive)
{:cron #app/cron "0 */3 * * * ?" ;; every 3m {:cron #app/cron "0 */5 * * * ?" ;; every 5m
:task :audit-log-archive}) :task :audit-log-archive})
(when (contains? cf/flags :audit-log-gc) (when (contains? cf/flags :audit-log-gc)
@ -185,7 +185,7 @@
(when (or (contains? cf/flags :telemetry) (when (or (contains? cf/flags :telemetry)
(cf/get :telemetry-enabled)) (cf/get :telemetry-enabled))
{:cron #app/cron "0 0 */6 * * ?" ;; every 6h {:cron #app/cron "0 30 */3,23 * * ?"
:task :telemetry})]} :task :telemetry})]}
:app.worker/registry :app.worker/registry

View file

@ -14,12 +14,17 @@
[app.common.spec :as us] [app.common.spec :as us]
[app.config :as cfg] [app.config :as cfg]
[app.db :as db] [app.db :as db]
[app.util.async :refer [thread-sleep]]
[app.util.http :as http] [app.util.http :as http]
[app.util.json :as json] [app.util.json :as json]
[clojure.spec.alpha :as s] [clojure.spec.alpha :as s]
[integrant.core :as ig])) [integrant.core :as ig]))
(declare retrieve-stats) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; TASK ENTRY POINT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare get-stats)
(declare send!) (declare send!)
(s/def ::version ::us/string) (s/def ::version ::us/string)
@ -34,11 +39,18 @@
(defmethod ig/init-key ::handler (defmethod ig/init-key ::handler
[_ {:keys [pool sprops version] :as cfg}] [_ {:keys [pool sprops version] :as cfg}]
(fn [_] (fn [_]
;; Sleep randomly between 0 to 10s
(thread-sleep (rand-int 10000))
(let [instance-id (:instance-id sprops)] (let [instance-id (:instance-id sprops)]
(-> (retrieve-stats pool version) (-> (get-stats pool version)
(assoc :instance-id instance-id) (assoc :instance-id instance-id)
(send! cfg))))) (send! cfg)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; IMPL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- send! (defn- send!
[data cfg] [data cfg]
(let [response (http/send! {:method :post (let [response (http/send! {:method :post
@ -63,6 +75,20 @@
[conn] [conn]
(-> (db/exec-one! conn ["select count(*) as count from file;"]) :count)) (-> (db/exec-one! conn ["select count(*) as count from file;"]) :count))
(defn- retrieve-num-file-changes
[conn]
(let [sql (str "select count(*) as count "
" from file_change "
" where date_trunc('day', created_at) = date_trunc('day', now())")]
(-> (db/exec-one! conn [sql]) :count)))
(defn- retrieve-num-touched-files
[conn]
(let [sql (str "select count(distinct file_id) as count "
" from file_change "
" where date_trunc('day', created_at) = date_trunc('day', now())")]
(-> (db/exec-one! conn [sql]) :count)))
(defn- retrieve-num-users (defn- retrieve-num-users
[conn] [conn]
(-> (db/exec-one! conn ["select count(*) as count from profile;"]) :count)) (-> (db/exec-one! conn ["select count(*) as count from profile;"]) :count))
@ -118,7 +144,7 @@
:jvm-heap-max (.maxMemory runtime) :jvm-heap-max (.maxMemory runtime)
:jvm-cpus (.availableProcessors runtime)})) :jvm-cpus (.availableProcessors runtime)}))
(defn retrieve-stats (defn get-stats
[conn version] [conn version]
(let [referer (if (cfg/get :telemetry-with-taiga) (let [referer (if (cfg/get :telemetry-with-taiga)
"taiga" "taiga"
@ -130,7 +156,9 @@
:total-files (retrieve-num-files conn) :total-files (retrieve-num-files conn)
:total-users (retrieve-num-users conn) :total-users (retrieve-num-users conn)
:total-fonts (retrieve-num-fonts conn) :total-fonts (retrieve-num-fonts conn)
:total-comments (retrieve-num-comments conn)} :total-comments (retrieve-num-comments conn)
:total-file-changes (retrieve-num-file-changes conn)
:total-touched-files (retrieve-num-touched-files conn)}
(d/merge (d/merge
(retrieve-team-averages conn) (retrieve-team-averages conn)
(retrieve-jvm-stats)) (retrieve-jvm-stats))

View file

@ -295,6 +295,11 @@
(s/assert cron? cron) (s/assert cron? cron)
(.toInstant (.getNextValidTimeAfter cron (Date/from now)))) (.toInstant (.getNextValidTimeAfter cron (Date/from now))))
(defn get-next
[cron tnow]
(let [nt (next-valid-instant-from cron tnow)]
(cons nt (lazy-seq (get-next cron nt)))))
(defmethod print-method CronExpression (defmethod print-method CronExpression
[mv ^java.io.Writer writer] [mv ^java.io.Writer writer]
(.write writer (str "#app/cron \"" (.toString ^CronExpression mv) "\""))) (.write writer (str "#app/cron \"" (.toString ^CronExpression mv) "\"")))