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

description: 本篇文章展示利用 Grafana 连接 Databend 进行日志可视化展示

slug: category-engineering/grafana-display-log-on-databend

date: 2023-03-03

tags: [engineering]

category: Engineering

cover_url: grafana_databend_nginx.png

image: grafana_databend_nginx.png

authors:
  - everpcpc
---

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

{/* truncate */}

## 在 databend 新建 grafana 用户

1. 先连接到 databend

   ```SQL
   ❯ 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. 创建用户并赋予权限

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

## 安装 Databend Data Source Plugin

参考[教程：与 Grafana 集成](https://docs.databend.cn/guides/visualize/grafana/#%E6%95%99%E7%A8%8B%E4%B8%8E-grafana-%E9%9B%86%E6%88%90)安装 Databend Data Source Plugin 插件并创建数据源。

## 使用数据源

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

```SQL
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`

![](../static/img/blog/grafana_use_databend.png)

2. 输入可视化查询

```SQL
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)

3. 查看效果

![](../static/img/blog/grafana_use_databend_02.png)

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

![](../static/img/blog/grafana_use_databend_all.png)

## Connect With Us

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

- [Databend Cloud](https://databend.cn)

- [Databend Website](https://docs.databend.cn)

- [GitHub Discussions](https://github.com/databendlabs/databend/discussions)

- [Twitter](https://twitter.com/Datafuse_Labs)

- [Slack Channel](https://link.databend.com/join-slack)
