open-falcon安装部署记录

监控对运维来说是相当重要的,现在来说falcon确实相对zabbix有一定优势,不过也存在明显短板,优势是架构设计以及一些设计思路很好,就单说模板继承,这个相对zabbix就很有优势,毕竟是已经有了前人的经验,小米之前也是用的zabbix,所以大众常见的zabbix痛点在falcon上基本得到了改善,但falcon的UI真是很难受啊,不过毕竟火起来还不久,又是一个互联网领头企业开源的项目,还是很有前景的,不妨尝试一下,现在只是基本搭建完成,TAG系统和表达式这些还没开始尝试,最近应该还会了解这个,以下是安装配置及简单调试使用过程。

架构图(来自小米官方)及组件说明

jiagou-4

Agent: 部署在目标机器采集机器监控项
Transfer: 数据接收端,转发数据到后端Graph和Judge
Graph: 操作rrd文件,存储监控数据
Query:查询各个Graph数据,提供统一http查询接口
Dashboard: 查询监控历史趋势图的web端
Alarm:主要负责告警
Task: 负责一些定时任务,索引全量更新,垃圾索引清理,自身组件监控

安装搭建

环境准备

我的版本环境:

version: Amazon 2015.03
Type: t2.large
Git version: 2.7.5 (need >= 1.7.5)
GO version: 1.8.3 (need >= 1.6)

  • 安装环境

    1
    2
    3
    yum install -y redis
    yum install -y mysql-server
    yum install -y git
  • 安装go环境

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    export HOME=/home/tai_ops
    export WORKSPACE=$HOME/open-falcon
    go_pkg='go1.8.3.linux-amd64.tar.gz'
    cd $HOME
    echo $HOME
    #wget http://dinp.qiniudn.com/go1.4.1.linux-amd64.tar.gz
    #wget https://storage.googleapis.com/golang/${go_pkg}
    tar zxf ${go_pkg}
    mkdir -p ${WORKSPACE}/src
    echo "" >> .bashrc
    echo 'export GOROOT=$HOME/go' >> .bashrc
    echo 'export GOPATH=$HOME/${WORKSPACE}' >> .bashrc
    echo 'export PATH=$GOROOT/bin:$GOPATH/bin:$PATH' >> .bashrc
    echo "" >> .bashrc
    source .bashrc
  • 下载源码

    1
    2
    3
    mkdir -p $GOPATH/src/github.com/open-falcon
    cd $GOPATH/src/github.com/open-falcon
    git clone --recursive https://github.com/open-falcon/falcon-plus.git
  • 初始化数据库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    mysql_host='localhost'
    mysql_user='root'
    mysql_pass='arvon2014'
    cd $GOPATH/src/github.com/open-falcon/falcon-plus/scripts/mysql/db_schema/
    for i in `ls`;do
    mysql -h ${mysql_host} -u${mysql_user} -p${mysql_pass} < $i
    done
    #mysql -h ${mysql_host} -u${mysql_user} -p${mysql_pass} < db_schema/graph-db-schema.sql
    #mysql -h ${mysql_host} -u${mysql_user} -p${mysql_pass} < db_schema/dashboard-db-schema.sql
    #mysql -h ${mysql_host} -u${mysql_user} -p${mysql_pass} < db_schema/portal-db-schema.sql
    #mysql -h ${mysql_host} -u${mysql_user} -p${mysql_pass} < db_schema/links-db-schema.sql
    #mysql -h ${mysql_host} -u${mysql_user} -p${mysql_pass} < db_schema/uic-db-schema.sql
  • Build安装包
    可选是build全部组件还是个别组件,我这里选择了全部build

    1
    2
    3
    4
    5
    6
    7
    8
    cd $GOPATH/src/github.com/open-falcon/falcon-plus/
    # make all modules
    make all
    ## make specified module
    #make agent
    #
    ## pack all modules
    make pack

基础组件安装配置

  • 解压build安装包到需要的安装路径

    1
    2
    3
    4
    mkdir -pv /data/tai-falcon
    cp $GOPATH/src/github.com/open-falcon/falcon-plus/open-falcon-v0.2.0.tar.gz /data
    cd /data/
    tar -xvf open-falcon-v0.2.0.tar.gz -C /data/tai-falcon
  • 调试各个组件
    主要就是要修改数据库等信息,如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # /data/tai-falcon/hbs/config/cfg.json: "database": "root:arvon2014@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true",
    # /data/tai-falcon/aggregator/config/cfg.json: "addr": "root:arvon2014@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true",
    # /data/tai-falcon/nodata/config/cfg.json: "dsn": "root:arvon2014@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true&wait_timeout=604800",
    # /data/tai-falcon/alarm/config/cfg.json: "addr": "root:arvon2014@tcp(127.0.0.1:3306)/alarms?charset=utf8&loc=Asia%2FChongqing",
    # /data/tai-falcon/api/config/cfg.json: "faclon_portal": "root:arvon2014@tcp(127.0.0.1:3306)/falcon_portal?charset=utf8&parseTime=True&loc=Local",
    # /data/tai-falcon/api/config/cfg.json: "graph": "root:arvon2014@tcp(127.0.0.1:3306)/graph?charset=utf8&parseTime=True&loc=Local",
    # /data/tai-falcon/api/config/cfg.json: "uic": "root:arvon2014@tcp(127.0.0.1:3306)/uic?charset=utf8&parseTime=True&loc=Local",
    # /data/tai-falcon/api/config/cfg.json: "dashboard": "root:arvon2014@tcp(127.0.0.1:3306)/dashboard?charset=utf8&parseTime=True&loc=Local",
    # /data/tai-falcon/api/config/cfg.json: "alarms": "root:arvon2014@tcp(127.0.0.1:3306)/alarms?charset=utf8&parseTime=True&loc=Local",
    # /data/tai-falcon/graph/config/cfg.json: "dsn": "root:arvon2014@tcp(127.0.0.1:3306)/graph?loc=Local&parseTime=true",

    推荐启动顺序:judge > graph > transfer > agent > alarm > api > aggregator > nodata > gateway
    提示:主要调试直接看对应模块下的log即可

dashboard安装配置

  • 安装开发包

    1
    2
    3
    4
    5
    pip install virtualenv
    yum install -y python-devel
    yum install -y openldap-devel
    yum install -y mysql-devel
    yum groupinstall "Development tools"
  • 下载dashboard的源码

    1
    2
    cd $HOME/open-falcon
    git clone https://github.com/open-falcon/dashboard
  • 安装环境依赖

    1
    2
    3
    cd $HOME/open-falcon/dashboard/
    virtualenv ./env
    ./env/bin/pip install -r pip_requirements.txt
  • 配置修改

    1
    2
    3
    4
    vim ./gunicorn.conf
    vim ./rrd/config.py
    #主要也是修改数据库,也可以修改服务端口
    ./control start
  • 访问dashboard测试
    dashboard-1
    这个没有默认的用户密码,自己注册后即可登录,且注册不会验证邮箱,登录后如下
    dashboard-2

Agent端配置

  • 生成agent部署包

    1
    2
    3
    cd $GOPATH/src/github.com/open-falcon/falcon-plus/modules/agent
    ./control pack
    #pack 即可打出agent包,我这里是falcon-agent-5.1.2.tar.gz,然后把这个包部署到需要监控的机器上
  • 配置启动agent

    1
    2
    3
    4
    5
    6
    7
    mkdir ~/falcon_aget;cd ~/falcon_agent
    cp falcon-agent-5.1.2.tar.gz ./
    tar xvf falcon-agent-5.1.2.tar.gz
    ##然后修改配置
    cp cfg.example.json cfg.json
    #vim cfg.jsoon
    #修改heartbeat、transfer的配置地址端口等改为对应配置即可
  • 可以通过浏览器查看上报的监控数据
    agent-3

报警邮件设置(小米规范使用http接口,不过小米也有相应的封装工具,如果二次开发可以自己定制实现方法)

  • 下载邮件封装程序源码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd $GOPATH/github.com/open-falcon/
    git clone https://github.com/open-falcon/mail-provider.git
    cd $GOPATH/github.com/open-falcon/mail-provider/
    # 开始build出包
    go get ./...
    ./control build
    ./control pack
    #测试邮件
    curl http://127.0.0.1:4000/sender/mail -d "tos=youremail@126.com&subject='hello'&content='world'"

报警配置

简要说明:大概说三种情况

  1. 正常:创建主机组–>根据主机组创建监控模板–>主机组关联模板
  2. 模板继承:在一种的情况下,很可能存在一个主机组里个别机器可能需要的阈值并不一样,这时可以继承这个主机组的通用模板,在此基础上做特别的设置,除此之外的监控项还按这个主机组的通用模板
  3. TAG模式:这种模式可独立于模板模式进行,比较适合监控同个项目或者个别重要业务的场景

设置Hostgroup(主机组)

  • 创建主机组
    5
  • 为主机组添加主机(主机填写hostname主机名即可)
    6

设置Templates(模板)

  • 创建模板
    7
  • 设置报警策略
    8
  • 主机组关联模板
    9

查看报警

  • 报警
    10

参考文献

小米官方手册0.2.0