Advertisement

es统计mysql 报表_Elasticsearch通过binlog同步数据索引在Grafana报表展示

阅读量:

一般而言,在服务系统中将数据持久化至MySQL数据库。因此,在进行业务数据报表的实时监控时,需求较强。整体解决方案如下:

1505544338047.jpg

该解决方案对业务系统无侵入性,只需订阅mysql的binlog就可以实现.

数据索引使用开源的go-mysql-elasticsearch组件.

Mysql部分

数据库为demo, 表结构如下:

CREATE TABLE active_info (

id bigint(20) NOT NULL AUTO_INCREMENT,

code varchar(64) COLLATE utf8mb4_bin NOT NULL,

size int(11) NOT NULL,

score double(20,2) NOT NULL,

type int(11) NOT NULL,

status int(11) NOT NULL,

create_time datetime NOT NULL,

update_time datetime NOT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

mysql相关配置:

[mysqld]

log-bin=mysql-bin

binlog_format=row # 需要设置为row模式

server_id=1001 #需要设置server_id

binlog-row-image=full

elasticsearch

启动即可 索引类型由于无法识别日期类型,因此需显示指定索引.

PUT /demo

{

"mappings": {

"active_info": {

"properties": {

"code": {

"type": "text",

"fields": {

"keyword": {

"type": "keyword",

"ignore_above": 256

}

}

},

"createTime": {

"type": "date",

"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"

},

"id": {

"type": "long"

},

"score": {

"type": "float"

},

"size": {

"type": "long"

},

"type": {

"type": "long"

},

"status": {

"type": "long"

},

"updateTime": {

"type": "date",

"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"

}

}

}

}

}

go-mysql-elasticsearch部分

配置文件 ./etc/river.toml 需要修改的配置

#mysql配置

my_addr = "127.0.0.1:3306"

my_user = "root"

my_pass = "***"

my_charset = "utf8mb4"

Elasticsearch 配置

es_addr = "127.0.0.1:9200"

Elasticsearch user and password, maybe set by shield, nginx, or x-pack

es_user = ""

es_pass = ""

要与mysql配置的server_id相同

server_id = 1001

mysql or mariadb

flavor = "mysql"

MySQL data source 指定mysql数据库

[[source]]

schema = "demo"

#指定需索引的表

tables = ["active_info"]

#索引规则

[[rule]]

schema = "demo" #数据库名

table = "active_info" # 表名

index = "demo" #ES索引名

type = "active_info" #ES索引类型

索引属性映射

[rule.field]

id="id"

code="code"

size="size"

score="score"

status="status"

create_time="createTime"

update_time="updateTime"

启动

./bin/go-mysql-elasticsearch -config=./etc/river.toml

Grafana

启动后配置数据源

1505545600349.jpg

报表配置

1505545848073.jpg

最终报表

1505545948458.jpg

注意事项: 1.其中,在同步历史数据时可采用go-mysql进行处理;2.但同步过程中可能出现部分数据丢失的情况;原因尚不明确,可能是配置设置存在问题;3.grafana显示时间轴可能会出现时区相关的问题;建议在设置中将Timezone字段更改为UTC。

全部评论 (0)

还没有任何评论哟~