the latest version in docker hub is v0.2.1
1.在第一次运行之前启动mysql并初始化mysql表
## start mysql in container
docker run -itd \
--name falcon-mysql \
-v /home/work/mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=test123456 \
-p 3306:3306 \
mysql:5.7
## init mysql table before the first running
cd /tmp && \
git clone --depth=1 https://github.com/open-falcon/falcon-plus && \
cd /tmp/falcon-plus/ && \
for x in `ls ./scripts/mysql/db_schema/*.sql`; do
echo init mysql table $x ...;
docker exec -i falcon-mysql mysql -uroot -ptest123456 < $x;
done
rm -rf /tmp/falcon-plus/
2.在容器中启动redis
docker run --name falcon-redis -p6379:6379 -d redis:4-alpine3.8
3.在一个容器中启动falcon-plus模块(后端服务)
## pull images from hub.docker.com/openfalcon
docker pull openfalcon/falcon-plus:v0.2.1
## 启动容器
docker run -itd --name falcon-plus \
--link=falcon-mysql:db.falcon \
--link=falcon-redis:redis.falcon \
-p 8433:8433 \
-p 8080:8080 \
-e MYSQL_PORT=root:test123456@tcp\(db.falcon:3306\) \
-e REDIS_PORT=redis.falcon:6379 \
-v /home/work/open-falcon/data:/open-falcon/data \
-v /home/work/open-falcon/logs:/open-falcon/logs \
openfalcon/falcon-plus:v0.2.1
## 执行容器命令,启动相应组件服务模块
## grah 绘图
## hbs 数据存储
## judge 告警判断
## transfer 数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、
并将分片后的数据分别push给graph&judge等组件
## nodata 用于检测监控数据的上报异常。nodata和实时报警judge模块协同工
## aggregator 集群聚合模块。聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验
## agent 用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,
每隔60秒push给Transfer。agent与Transfer建立了长连接
## gateway 如果您没有遇到机房分区问题,请直接忽略此组件
## api 提供统一的restAPI操作接口。比如:api组件接收查询请求,
根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。
## alarm 处理报警event的,judge产生的报警event写入redis,
alarm从redis读取处理,并进行不同渠道的发送。
docker exec falcon-plus sh ctrl.sh start \
graph hbs judge transfer nodata aggregator agent gateway api alarm
## 你可以启动/停止/重新启动特异性模块
docker exec falcon-plus sh ctrl.sh start/stop/restart xxx(组件模块名)
## 后端模块状态检查
docker exec falcon-plus ./open-falcon check
## 你可以检查在/家庭/工作/日志/日志/目录下查看日志信息
ls -l /home/work/open-falcon/logs/
4.在容器中启动falcon-dashboard(前端服务)
docker run -itd --name falcon-dashboard \
-p 8081:8081 \
--link=falcon-mysql:db.falcon \
--link=falcon-plus:api.falcon \
-e API_ADDR=http://api.falcon:8080/api/v1 \
-e PORTAL_DB_HOST=db.falcon \
-e PORTAL_DB_PORT=3306 \
-e PORTAL_DB_USER=root \
-e PORTAL_DB_PASS=test123456 \
-e PORTAL_DB_NAME=falcon_portal \
-e ALARM_DB_HOST=db.falcon \
-e ALARM_DB_PORT=3306 \
-e ALARM_DB_USER=root \
-e ALARM_DB_PASS=test123456 \
-e ALARM_DB_NAME=alarms \
-w /open-falcon/dashboard openfalcon/falcon-dashboard:v0.2.1 \
'./control startfg'
建立猎鹰加
cd /tmp && \
git clone https://github.com/open-falcon/falcon-plus && \
cd /tmp/falcon-plus/ && \
docker build -t falcon-plus:v0.2.1 .
建立猎鹰仪表板
cd /tmp && \
git clone https://github.com/open-falcon/dashboard && \
cd /tmp/dashboard/ && \
docker build -t falcon-dashboard:v0.2.1 .
1.安装gcc编译器
apt-get update
apt-get install gcc
2.搭建go编译环境
下载go-linux环境包 https://studygolang.com/dl
推荐 go1.10.4.linux-amd64.tar.gz
配置go环境变量,GO-ROOT,GO-PATH
$ vim /etc/profile
export PATH=$PATH:/opt/go/bin
export GOPATH=/root/go-project
$ source /etc/profile
查看go版本
$ go version
3.安装goland(强大的go项目编译器)
JetBrains GoLand v2018.1.3 (2018.v1版本即可,可以破解,其他的破解不了)
配置goland的SDK,Go-Path等
4.从github上下载项目源码
open-falcon/falcon-plus后端服务:https://github.com/open-falcon/falcon-plus.git(go语言编写)
open-falcon/dashhboard前端服务:https://github.com/open-falcon/dashboard.git(python语言编写)
5..对open-falcon/falcon-plus/modules/下各个组件服务进行二次开发如(api,agent,alarm,judge,graph等)
6.配置各个组件服务中的config文件,不赘述
7.go项目依赖打包工具(makefile)
make build: 编译
make vendor: 下载依赖
make api: 生成协议代码
make json: easyjson 代码生成
make test: 运行单元测试
make benchmark: 运行性能测试
make stat: 代码复杂度统计,代码行数统计
make clean: 清理 build 目录
make deep_clean: 清理所有代码以外的其他文件
make third: 下载所有依赖的第三方工具
make protoc: 下载 protobuf 工具
make glide: 下载 glide 依赖管理工具
make golang: 下载 golang 环境
make cloc: 下载 cloc 统计工具
make gocyclo: 下载 gocyclo 圈复杂度计算工具
make easyjson: 下载 easyjson 工具
8.二次开发的open-falcon镜像构建
cd到open-falcon项目源码项目的falcon-plus目录下
使用docker build命令构建镜像 例: docker build -t "open-falcon-test:0.10" .
3.启动二次开发的open-falcon容器等组件服务
同官方docker部署启动基本一致,修改容器名,映射端口号,数据挂载目录,日志挂载目录等
4.启动二次开发的open-falcon容器并在Goland中对某个组件服务进行代码调试
同上操作,注意:启动falcon-plus容器后,只开启指定几个组件服务,然后在Goland中开启自己想要调试的组件服务进行操作
例:(我们对api组件模块进行二次开发与调试)
falcon-plus容器开启graph hbs judge transfer nodata aggregator gateway alarm这些组件服务并映射出graph 服务的端口号6070,
并删除原先api服务映射的端口号8080,再在Goland中开启falcon-plus/modules中api组件服务(配置cfg.json中api服务占用端口号8080,数据库连接地址3306,graph组件连接端口号6070)