March 2, 2021
By: dirk
Mulog整合
Mulog整合
大神之前已经对Log做过一次讲解了,可以先看下。传送门
Mulog 整合步骤
- 在 project.clj 文件中引入相应 jar 包
:dependencies [[com.brunobonacci/mulog "0.6.5"] [com.brunobonacci/mulog-prometheus "0.6.5"] [com.brunobonacci/mulog-zipkin "0.2.0"]] - 在 core.clj 文件中引入
(:require [com.brunobonacci.mulog :as u] [com.brunobonacci.mulog.publishers.prometheus :as prom]) - 在 config.edn 文件中配置环境变量
:env :dev - 定义 mulog
(defonce log-stopper (atom nil)) (mount/defstate mulog :start (do (init-events) (if (= :dev1 (:env env)) (reset! log-stopper (u/start-publisher! {:type :console})) (let [pub (prom/prometheus-publisher {:type :prometheus :push-gateway {:job "alk-mulog" :instance "alk-web" :endpoint "http://ip:9091"}})] (reset! log-stopper (u/start-publisher! {:type :inline :publisher pub}))))) :stop (@log-stopper)) - 在需要打 log 的地方引入
(u/log ::doctor-login :province (:province doctor) :city (:city doctor) :region (:region doctor) :hospital-id (:hospital-id doctor) :hospital-name (:hospital-name doctor) :office-id (:office-id doctor) :office-name (:office-name doctor) :doctor-id (:doctor-id doctor) :doctor-name (:name doctor) :instance "doctor_login"
Prometheus 查询数据
对于 mulog 采集上来的数据,可以使用 PromeQL 来进行查询汇总。 PromeQL是prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。 当prometheus采集到相对应的监控指标样本数据后,可以通过promQL对监控样本数据进行查询。参考地址
Prometheus 提供了 HTTP API 用来对数据进行查询。参考地址
核心 API 有两个:
GET /api/v1/query使用此接口可以查询 PromeQL 在特定时间点下的计算结果。 参数说明: `query=`: PromQL 表达式 `time=`: PromQL 时间戳。可选参数,默认情况下使用当前系统时间 `timeout=`: 超时设置。可选参数。GET /api/v1/query_range使用此接口可以查询 PromeQL 在一段时间内的计算结果。 参数说明: `query=`: PromQL 表达式 `start=`: 开始时间 `end=`: 结束时间 `step=`: 查询步长 `timeout=`: 超时设置。可选参数。
遗留问题
- PushGateWay 与 Prometheus 数据同步问题 pushgateway 每次只向 prometheus 返回最后一次推送的数据,并不是从上次抓取的地方重新抓取