docker快速部署open-falcon

环境

系统:Ubuntu 14.04 + docker
open-falcon版本:v0.2.1

在docker中运行open-falcon及相关组件
参考:https://github.com/open-falcon/falcon-plus/tree/master/docker

简介

Open-Falcon是一个比较大的分布式系统,有十几个组件。其安装部署的架构如下图所示:

docker快速部署open-falcon_第1张图片
Open-Falcon架构图
  1. agent:需要部署到所有要被监控的机器上,用于采集机器负载监控指标,每隔60秒push给Transfer。
  2. transfer:数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。
  3. graph:存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。
  4. api:提供统一的restAPI操作接口。比如:api组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。
  5. dashboard:监控相关界面。
  6. HBS(Heartbeat Server):心跳服务器,公司所有agent都会连到HBS,每分钟发一次心跳请求。
  7. Judge:用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。
  8. alarm:是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理,并进行不同渠道的发送。
  9. task:是监控系统一个必要的辅助模块。定时任务,实现了如下几个功能:(1).index更新;(2).falcon服务组件的自身状态数据采集;(3).falcon自检控任务。
  10. Gateway:如果您没有遇到机房分区问题,请直接忽略此组件。
  11. nodata:用于检测监控数据的上报异常。
  12. Aggregator:集群聚合模块。聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验。
  13. Agent-updater:用于管理falcon-agent,agent-updater也有一个agent:ops-updater,可以看做是一个超级agent,用于管理其他agent的agent。

在docker中部署详细过程

1. 初始化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
    
## run falcon-plus container
docker run -itd --name falcon-plus \
     --link=falcon-mysql:db.falcon \
     --link=falcon-redis:redis.falcon \
     -p 8433:8433 \
     -p 8080:8080 \
     -p 6030:6030
     -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
    
## start falcon backend modules, such as graph,api,etc.
docker exec falcon-plus sh ctrl.sh start \
        graph hbs judge transfer nodata aggregator agent gateway api alarm
    
## or you can just start/stop/restart specific module as: 
docker exec falcon-plus sh ctrl.sh start/stop/restart xxx

## check status of backend modules
docker exec falcon-plus ./open-falcon check
    
## or you can check logs at /home/work/open-falcon/logs/ in your host
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'

dashboard用户管理

dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号。
想拥有管理全局的超级管理员账号,需要手动注册用户名为root的账号(第一个帐号名称为root的用户会被自动设置为超级管理员)。
超级管理员可以给普通用户分配权限管理。

小提示:注册账号能够被任何打开dashboard页面的人注册,所以当给相关的人注册完账号后,需要去关闭注册账号功能。只需要去修改api组件的配置文件cfg.json,将signup_disable配置项修改为true,重启api即可。当需要给人开账号的时候,再将配置选项改回去,用完再关掉即可。

你可能感兴趣的:(docker快速部署open-falcon)