监控对运维来说是相当重要的,现在来说falcon确实相对zabbix有一定优势,不过也存在明显短板,优势是架构设计以及一些设计思路很好,就单说模板继承,这个相对zabbix就很有优势,毕竟是已经有了前人的经验,小米之前也是用的zabbix,所以大众常见的zabbix痛点在falcon上基本得到了改善,但falcon的UI真是很难受啊,不过毕竟火起来还不久,又是一个互联网领头企业开源的项目,还是很有前景的,不妨尝试一下,现在只是基本搭建完成,TAG系统和表达式这些还没开始尝试,最近应该还会了解这个,以下是安装配置及简单调试使用过程。
架构图(来自小米官方)及组件说明
**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
- 调试各个组件
主要就是要修改数据库等信息,如下
/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”,
|
|
- 下载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测试
这个没有默认的用户密码,自己注册后即可登录,且注册不会验证邮箱,登录后如下
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的配置地址端口等改为对应配置即可
- 可以通过浏览器查看上报的监控数据
报警邮件设置(小米规范使用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'"
报警配置
**简要说明:**大概说三种情况
- 正常:创建主机组–>根据主机组创建监控模板–>主机组关联模板
- 模板继承:在一种的情况下,很可能存在一个主机组里个别机器可能需要的阈值并不一样,这时可以继承这个主机组的通用模板,在此基础上做特别的设置,除此之外的监控项还按这个主机组的通用模板
- TAG模式:这种模式可独立于模板模式进行,比较适合监控同个项目或者个别重要业务的场景
设置Hostgroup(主机组)
- 创建主机组
- 为主机组添加主机(主机填写hostname主机名即可)
设置Templates(模板)
- 创建模板
- 设置报警策略
- 主机组关联模板
查看报警
- 报警