name
描述
实现
其他
grafana
grafana的druid插件,比较简陋,github一年不更新了
js
Metabase
支持数据库种类多,启动方便,支持json查询。图形化查询,只能有一个聚合字段,两个维度
Clojure
imply-pivot
基于Plywood,部署方便,能构造复杂的查询。目前已经闭源了,没法二次开发
js
airbnb/superset
权限管理完善,图形可定制性也比较高,github持续更新,集合了metabase的Dashboard和pivot的查询可定制性优点,部署相对麻烦
python+js
需要jdk1.6以上的环境,使用的jdk1.81
2
wget http://downloads.metabase.com/v0.19.3/metabase.jar
java -jar metabase.jar
然后就可以访问:http://localhost:3000/
初始化步骤:
填写个人基本信息和用户名密码
连接数据库基本信息,数据库类型选druid,取数据库名字,填host和broker port。
关闭收集数据选项(Allow Metabase to anonymously collect usage events)使用
新建dashboards,可以把每个表新建一个dashboard
新建question,每个question相当于一个查询语句,但是每个question只能选一个聚合字段,可以显示不同类型的图形
|
imply-pivot使用 环境 node+npm环境1
2
npm i -g imply-pivot
pivot --druid druid-broker:8080
然后就可以访问了:http://localhost:9090/
使用
左上角选择表名,右上角选择展示方式
左上的Dimensions包括时间和维度,可以拖到filter为where条件,拖到split为group by
查询之后的表结果,可以选择之后点右键,select可以添加查询条件;view raw data,相当于drill down
图中split条件为xxx_id,xxx_id,xxx_id,xx_id。 filter中条件为时间为1天内,网络类型为4G,xxx-id为2。 点击某xxx=221660,xxx_id=1340之后可以添加这些条件,点select为查询添加了这些条件之后的结果,点view raw data为查询添加了这些条件中所有的结果。
superset部署 部署 在公司集群上部署,系统依赖可能需要root权限,需要运维帮忙
安装Python 1
2
3
4
5
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz --no-check-certificate
tar -zxvf Python-3.5.2.tgz
cd Python-3.5.2/
./configure --prefix=/global/exec/fangyeqing/python-3.5.2/
make&&make install
环境变量 环境变量添加,将刚才configure设置的地址添加到环境变量中:
内容:1
2
#python
export PATH=/global/exec/fangyeqing/python-3.5.2/bin:$PATH
source之后测试是否安装成功:1
2
source ~/.bash_profile
python3
部署SuperSet python,安装pip等一堆东西,需要运维帮忙,rpm安装的可以用rpm -qa openssl-devel查询1
2
sudo yum upgrade python-setuptools
sudo yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel
虚拟环境1
2
3
4
5
6
7
8
pip3 install virtualenv
mkdir superset
cd superset
virtualenv venv
source ./venv/bin/activate #进入虚拟环境,后续命令之前都会有(venv)
deactivate # 退出虚拟环境
安装superset1
2
pip install --upgrade setuptools pip # 更新pip和setuptools
pip install superset # Install
建立软连接,防止在安装过程中卡死1
2
ln -s /disk2/fangyq/install/.superset/ ~/.superset #superset/db,初始化卡死
ln -s /disk2/fangyq/install/.cache/ ~/.cache #pip安装路径,容易出现配额不足
安装ldap、mysql需要的包1
2
pip install python-ldap==2.3.13 # ldap登录
pip install mysql-python # 将db由默认的sqlite改为mysql
修改配置文件config.py,初始化(可以跳过这步,直接拷贝已有的.superset/db)1
2
3
4
5
fabmanager create-admin --app superset # 管理员用户名、密码:eadata-service,Eadata201611
superset db upgrade # Initialize the database
superset load_examples # Load some data to play with
superset init # Create default roles and permissions
启动1
superset runserver -p 8088 # 启动,-p端口,-d打开调试模式
更新版本,最好先备份一个config.py文件1
2
3
pip install superset --upgrade
superset db upgrade
superset init
数据库 对比着刚才的安装操作,可以看下数据库怎么存的1
2
3
4
5
6
7
8
sqlite3 ~/.superset/superset.db
.help
.datatbase
.tables
.schema ab_user_role
select * from ab_user_role;
#修改为管理员用户
update ab_user_role set role_id=1 where user_id=8;
执行完fabmanager
1
2
3
4
5
6
7
8
9
10
11
12
+-------------------------+
| Tables_in_superset |
+-------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
+-------------------------+
ab_user为用户表 ab_user_role为用户权限表
执行完superset db upgrade1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
+-------------------------+
| Tables_in_superset |
+-------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
| access_request |
| alembic_version |
| clusters |
| columns |
| css_templates |
| dashboard_slices |
| dashboard_user |
| dashboards |
| datasources |
| dbs |
| favstar |
| logs |
| metrics |
| query |
| slice_user |
| slices |
| sql_metrics |
| table_columns |
| tables |
| url |
+-------------------------+
这些信息也可以直接从SQL Lab–SQL Editor中直接看到。
superset配置 如果之前配置过,直接拷贝配置.superset/db也可
顶部选项卡 Dashboard:展示板,可以每张表建一个,展示这张表需要展示的 Slices:Dashboard中的分片,相当于一个查询语句 Source:数据源
Cluster配置 顶部选项卡Source-Druid Cluster-“+”新建
选项
填入内容
Cluster
druid集群名,随意
Coordinator Host
coordinator地址
Coordinator Port
coordinator端口
Coordinator Endpoint
默认值:druid/coordinator/v1/metadata
Broker Host
broker地址
Broker Port
broker端口
Broker Endpoint
默认值:druid/v2
Cache Timeout
缓存时间:s
DataSource配置 读取元数据,第一次可能会等待几分钟,开调试模式可以看到debug日志里自动同步了druid里的所有表。
日志输出内容:1
2
3
4
2016-10-28 11:42:58,117:INFO:root:Syncing Druid datasource [x1_stat]
2016-10-28 11:43:00,313:INFO:root:Syncing Druid datasource [x2_stat]
2016-10-28 11:43:01,323:INFO:root:Syncing Druid datasource [x3_stat]
2016-10-28 11:43:02,065:INFO:root:Syncing Druid datasource [x4_stat]
Source-DataSource 在对应的dataSource处edit record
List Druid Column选项卡中,可以看到自动导入了column,但是metrix聚合字段并没有选择聚合方法,编辑选择SUM或者MIN,MAX之类的聚合方法。druid lookup也可以在本选项卡中配置。
Detail选项卡中,Time offset填入时区偏移,配置已配成本地时区。点save保存 。
List Druid Metrix选项卡中,List Druid Column中刚才添加的聚合字段会看到。同时也可以通过“Metric”字段编辑自定义图中显示的中文或者post-agg。
post-agg示例:展示率=展示/竞价1
2
3
4
5
6
7
8
9
10
11
12
{
"type": "arithmetic",
"name": "bid_rates",
"fn": "/",
"fields": [{
"type": "fieldAccess",
"fieldName": "展示"
}, {
"type": "fieldAccess",
"fieldName": "竞价"
}]
}
lookup示例:把sponsor_id对应到广告商名字1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"type":"extraction",
"dimension":"sponsor_id",
"outputName":"sponsor广告商",
"extractionFn" : {
"type" : "lookup",
"lookup" : {
"type" : "namespace",
"namespace" : "sponsorId_name"
},
"retainMissingValue" : true,
"injective" : true
}
}
DashBoard添加
步骤 以Source-Druid DataSource做入口,选某个表进行编辑,然后保存成Slices,添加到DashBoard
界面 左边栏为查询条件,右边为查询结果。
Query为查询,Save为保存到Slices Table View为结果显示样式(图,表类型), 查询出结果之后,左边栏可以对图形属性进行编辑1
2
3
Legend:为显示或隐藏group by
Y Log:Y轴取对数,如果值相差特别大,可以勾上
X axis format:选Time Series时可以调整日期格式
角色权限配置 Admin新建用户时,有几种权限可以选择Admin、Alpha、Gamma、Public。
Admin:有所有权限,创建用户、权限管理、访问所有数据源、
Alpha:可以访问、添加、修改所有数据源。添加和修改面板和切面。
Gamma:访问dashboard需要添加访问datasource的权限。搜索:“datasource access on”。另外,配置时,可以搜索druid有关的权限,全部删掉。