Skip to main content

使用 Grafana + Databend 实现日志可视化

grafana-display-log-on-databend

本篇文章以 Grafana 展示 Databend 中 Nginx Log。

在 databend 新建 grafana 用户

  1. 先连接到 databend

    ❯ bendsql connect
    Connected to Databend on Host: localhost
    Version: DatabendQuery v0.9.46-nightly-67b0fe6(rust-1.68.0-nightly-2023-02-22T03:47:09.491571Z)
    ❯ bendsql query
    Connected with driver databend (DatabendQuery v0.9.46-nightly-67b0fe6(rust-1.68.0-nightly-2023-02-22T03:47:09.491571Z))Type "help" for help.
    dd:root@localhost/default=>
  2. 创建用户并赋予权限

    CREATE USER grafana IDENTIFIED BY 'grafana_password';
    GRANT SELECT ON *.* TO grafana;

安装 grafana 并配置数据源

  1. 打开 grafana 插件页面,并搜索Altinity plugin for ClickHouse 安装

  1. 用刚刚安装的插件新建数据源,并配置接口和用户名密码

  1. 保存并测试数据源

使用数据源

我们使用一个已经有的 nginx log 表来进行可视化

CREATE TABLE `access_logs` (  
`timestamp` TIMESTAMP,
`client` VARCHAR,
`method` VARCHAR,
`path` VARCHAR,
`protocol` VARCHAR,
`status` INT,
`size` INT,
`referer` VARCHAR,
`agent` VARCHAR,
`request` VARCHAR
);
  1. 新建 dashboard 和 panel,选择刚刚创建的数据源,选择 database 和 table,点击 Go to Query

  1. 输入可视化查询
SELECT 
(to_int64(timestamp) div 1000000 div $interval * $interval) * 1000 as t,
status,
count() as qps
FROM $table
WHERE timestamp >= to_datetime($from)
AND timestamp <= to_datetime($to)GROUP BY t, statusORDER BY t

常用宏参考:

  • $interval 在 panel 配置 Query Options 里选择的 interval

  • $table 新建 panel 时选择的 database 和 table

  • $from 在 grafana UI 上选择的时间范围 (单位为 ms)

  • $to 在 grafana UI 上选择的时间范围 (单位为 ms)

  1. 查看效果

按上述步骤多添加几个 panel 之后查看整体效果:

Connect With Us

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。