博客

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

everpcpcMar 3, 2023

本篇文章以 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。

分享本篇文章

订阅我们的新闻简报

及时了解功能发布、产品规划、支持服务和云服务的最新信息!