特性:
- 强大灵活的数据采集:自动发现,支持falcon-agent、snmp、支持用户主动push、用户自定义插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value tags)
- 水平扩展能力:支持每个周期上亿次的数据采集、告警判定、历史数据存储和查询
- 高效率的告警策略管理:高效的portal、支持策略模板、模板继承和覆盖、多种告警方式、支持callback调用
- 人性化的告警设置:最大告警次数、告警级别、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期
- 高效率的graph组件:单机支撑200万metric的上报、归档、存储(周期为1分钟)
- 高效的历史数据query组件:采用rrdtool的数据归档策略,秒级返回上百个metric一年的历史数据
- dashboard:多维度的数据展示,用户自定义Screen
- 高可用:整个系统无核心单点,易运维,易部署,可水平扩展
- 开发语言: 整个系统的后端,全部golang编写,portal和dashboard使用python编写。
官网架构图 :
安装:
1. 环境准备
安装redis
yum install -y redis
安装mysql
yum install -y mysql-server
注意,请确保redis和MySQL已启动。
初始化MySQL表结构
cd /tmp/ && git clone https://github.com/open-falcon/falcon-plus.git
cd /tmp/falcon-plus/scripts/mysql/db_schema/
mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 3_dashboard-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql
rm -rf /tmp/falcon-plus/
如果你是从v0.1.0升级到当前版本v0.2.0,那么只需要执行如下命令:
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql
2. 从源码编译
首先,请确保你已经安装好了golang环境,如果没有安装,请参考 https://golang.org/doc/install
cd $GOPATH/src/github.com/open-falcon/falcon-plus/
# make all modules
make all
# pack all modules
make pack
这时候,你会在当前目录下面,得到open-falcon-v0.2.0.tar.gz的压缩包,就表示已经编译和打包成功了。
3. 下载编译好的二进制版本
如果你不想自己编译的话,那么可以下载官方编译好的二进制版本(x86 64位平台)。
到这一步,准备工作就完成了。 open-falcon-v0.2.0.tar.gz 这个二进制包,请大家解压到合适的位置,暂时保存,后续步骤需要使用。
启动后端:
创建工作目录
export FALCON_HOME=/home/work
export WORKSPACE=$FALCON_HOME/open-falcon
mkdir -p $WORKSPACE
解压二进制包
tar -xzvf open-falcon-v0.2.1.tar.gz -C $WORKSPACE
在一台机器上启动所有的后端组件
1. 首先确认配置文件中数据库账号密码与实际相同,否则需要修改配置文件。
cd $WORKSPACE
grep -Ilr 3306 ./ | xargs -n1 -- sed -i 's/root:/real_user:real_password/g'
2. 启动
cd $WORKSPACE
./open-falcon start
# 检查所有模块的启动状况
./open-falcon check
更多的命令行工具用法
# ./open-falcon [start|stop|restart|check|monitor|reload] module
./open-falcon start agent
./open-falcon check
falcon-graph UP 53007
falcon-hbs UP 53014
falcon-judge UP 53020
falcon-transfer UP 53026
falcon-nodata UP 53032
falcon-aggregator UP 53038
falcon-agent UP 53044
falcon-gateway UP 53050
falcon-api UP 53056
falcon-alarm UP 53063
For debugging , You can check $WorkDir/$moduleName/log/logs/xxx.log
启动前端 :
创建工作目录
export HOME=/home/work
export WORKSPACE=$HOME/open-falcon
mkdir -p $WORKSPACE
cd $WORKSPACE
克隆前端组件代码
cd $WORKSPACE
git clone https://github.com/open-falcon/dashboard.git
安装依赖包
yum install -y python-virtualenv
yum install -y python-devel
yum install -y openldap-devel
yum install -y mysql-devel
yum groupinstall "Development tools"
cd $WORKSPACE/dashboard/
virtualenv ./env
./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
初始化数据库
请参考环境准备
修改配置
dashboard的配置文件为: 'rrd/config.py',请根据实际情况修改
## API_ADDR 表示后端api组件的地址
API_ADDR = "http://127.0.0.1:8080/api/v1"
## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为""
以开发者模式启动
./env/bin/python wsgi.py
open http://127.0.0.1:8081 in your browser.
在生产环境启动
bash control start
open http://127.0.0.1:8081 in your browser.
停止dashboard运行
bash control stop
查看日志
bash control tail
前端页面:
用户主动push数据到open-falcon:
{
"endpoint": "test-endpoint",
"metric": "test-metric2",
"timestamp": ts,
"step": 60,
"value": 2,
"counterType": "GAUGE",
"tags": "idc=lg,loc=beijing",
},
• metric: 最核心的字段,代表这个采集项具体度量的是什么, 比如是cpu_idle呢,还是memory_free, 还是qps
• endpoint: 标明Metric的主体(属主),比如metric是cpu_idle,那么Endpoint就表示这是哪台机器的cpu_idle
• timestamp: 表示汇报该数据时的unix时间戳,注意是整数,代表的是秒
• value: 代表该metric在当前时间点的值,float64
• step: 表示该数据采集项的汇报周期,这对于后续的配置监控策略很重要,必须明确指定。
• counterType: 只能是COUNTER或者GAUGE二选一,前者表示该数据采集项为计时器类型,后者表示其为原值 (注意大小写)
◦ GAUGE:即用户上传什么样的值,就原封不动的存储
◦ COUNTER:指标在存储和展现的时候,会被计算为speed,即(当前值 - 上次值)/ 时间间隔
• tags: 一组逗号分割的键值对, 对metric进一步描述和细化, 可以是空字符串. 比如idc=lg,比如service=xbox等,多个tag之间用逗号分割
参考: