在 CentOS 7 上部署 Open-Falcon v0.2.0 完整指南
在当今复杂的分布式系统架构中,监控是确保系统高可用性和可维护性的基石。Open-Falcon 是小米公司开源的一款企业级、高可用、可扩展的分布式监控系统,它在国内互联网公司中被广泛使用。其核心特点包括强大的数据采集、灵活的告警策略、高效的数据存储和良好的水平扩展能力。
虽然 Open-Falcon 已经有了更新的版本,但 v0.2.0 是一个经典且非常稳定的版本,许多公司仍然在生产环境中使用它。本指南将详细介绍如何在 CentOS 7 操作系统上,从零开始部署一个全功能的 Open-Falcon v0.2.0 监控系统。
读者对象#
本教程适用于:
- 运维工程师
- 开发工程师
- 对系统监控感兴趣的技术爱好者
假设读者具备基本的 Linux 操作和 MySQL 数据库知识。
目录#
环境准备#
在开始之前,请确保你拥有一台纯净的 CentOS 7.x 服务器,并已完成以下准备工作。
系统要求:
- 操作系统: CentOS 7.x (Minimal 安装即可)
- 内存: 建议至少 4GB
- 硬盘: 建议至少 50GB 可用空间(主要用于时间序列数据存储)
- 网络: 所有组件需要能相互通信
软件依赖:
- MySQL 5.6 或 5.7
- Redis(可选,但强烈推荐用于缓存和队列)
- Go 语言环境(用于编译前端)
首先,更新系统并安装一些基础工具:
yum update -y
yum install -y wget vim git关闭并禁用防火墙(生产环境请谨慎操作,应配置具体规则而非直接关闭):
systemctl stop firewalld
systemctl disable firewalld关闭 SELinux:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config数据库初始化#
Open-Falcon 的后端组件需要 MySQL 来存储元数据、告警策略、用户信息等。
-
安装 MySQL
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-community-server systemctl start mysqld systemctl enable mysqld -
获取初始密码并修改
grep 'temporary password' /var/log/mysqld.log mysql_secure_installation # 按照提示修改 root 密码,并完成安全设置。 -
创建数据库和用户 登录 MySQL,并执行以下 SQL 语句创建
falcon数据库和相应用户。mysql -u root -p-- 创建数据库 CREATE DATABASE IF NOT EXISTS `falcon` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -- 创建用户并授权(请将 'your_password' 替换为强密码) CREATE USER 'falcon'@'127.0.0.1' IDENTIFIED BY 'your_password'; CREATE USER 'falcon'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON `falcon`.* TO 'falcon'@'127.0.0.1'; GRANT ALL PRIVILEGES ON `falcon`.* TO 'falcon'@'localhost'; FLUSH PRIVILEGES; -
(可选)安装 Redis
yum install -y epel-release yum install -y redis systemctl start redis systemctl enable redis
安装与配置后端组件#
安装基础依赖#
Open-Falcon 组件由 Go 语言编写,是静态编译的二进制文件,无需安装 Go 环境即可运行。但我们需要一些基础库。
yum install -y mysql-devel下载并解压 Open-Falcon#
从 GitHub 发布页面下载 v0.2.0 的预编译二进制包。
cd /tmp
wget https://github.com/open-falcon/of-release/releases/download/v0.2.0/open-falcon-v0.2.0.tar.gz
# 创建安装目录
mkdir -p /opt/open-falcon
tar -zxvf open-falcon-v0.2.0.tar.gz -C /opt/open-falcon解压后,/opt/open-falcon 目录下会包含所有后端组件的二进制文件和默认配置文件。
配置与启动后端组件#
我们需要按顺序配置和启动核心组件。每个组件的配置都在其对应的 config 目录下的 cfg.json 文件中。
1. 初始化数据库表结构
cd /opt/open-falcon
mysql -h 127.0.0.1 -u falcon -p falcon < ./scripts/mysql/db_schema/graph-db-schema.sql
mysql -h 127.0.0.1 -u falcon -p falcon < ./scripts/mysql/db_schema/dashboard-db-schema.sql
mysql -h 127.0.0.1 -u falcon -p falcon < ./scripts/mysql/db_schema/portal-db-schema.sql
mysql -h 127.0.0.1 -u falcon -p falcon < ./scripts/mysql/db_schema/links-db-schema.sql
mysql -h 127.0.0.1 -u falcon -p falcon < ./scripts/mysql/db_schema/uic-db-schema.sql
mysql -h 127.0.0.1 -u falcon -p falcon < ./scripts/mysql/db_schema/shorturl-db-schema.sql
mysql -h 127.0.0.1 -u falcon -p falcon < ./scripts/mysql/db_schema/alarms-db-schema.sql2. 修改公共配置
主要需要修改各个组件的 cfg.json 中关于 MySQL 的连接信息。以 graph 组件为例:
vim ./graph/config/cfg.json找到 数据库连接配置 部分,修改为你在前面创建的数据库信息:
"graph": {
"enabled": true,
"database": "falcon:your_password@tcp(127.0.0.1:3306)/falcon?loc=Local&parseTime=true",
"maxIdle": 4
},请务必逐一检查并修改以下组件的数据库配置:
graph/config/cfg.jsonapi/config/cfg.jsonalarm/config/cfg.jsonhbs/config/cfg.jsonjudge/config/cfg.json(如果使用)nodata/config/cfg.json(如果使用)portal/config/cfg.jsonsender/config/cfg.jsontask/config/cfg.jsonuic/config/cfg.json
3. 启动组件
Open-Falcon 提供了 open-falcon 脚本来管理所有组件。
# 检查所有组件的配置是否正确
./open-falcon check
# 启动所有组件
./open-falcon start
# 查看所有组件的运行状态
./open-falcon status如果一切正常,你应该看到类似下面的输出,所有组件都处于 UP 状态。
...
graph UP 5303
hbs UP 5323
judge UP 5340
...
4. 验证后端接口
使用 curl 命令测试核心组件的 HTTP 接口是否正常工作。
# 测试 graph 组件
curl -s "http://127.0.0.1:6071/health"
# 测试 API 组件
curl -s "http://127.0.0.1:8080/health"
# 测试 HBS (Heartbeat Server) 组件
curl -s "http://127.0.0.1:6031/health"如果返回 ok 或 "success": true 之类的信息,说明后端服务启动成功。
安装与配置前端 Dashboard#
前端用于可视化监控数据、配置告警策略和管理主机组。
-
安装 Go 环境(用于编译前端)
wget https://golang.org/dl/go1.15.linux-amd64.tar.gz tar -C /usr/local -xzf go1.15.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile echo 'export GOPATH=/root/go' >> /etc/profile source /etc/profile -
下载并编译 Dashboard
cd /tmp git clone https://github.com/open-falcon/dashboard.git cd dashboard # 修改数据库配置 vim rrd/config.py在
config.py中,修改DB配置项,指向你的 MySQL 数据库:# database DB = "falcon" PORT = 3306 PASS = "your_password" HOST = "127.0.0.1" USER = "falcon"安装依赖并编译:
yum install -y python-virtualenv virtualenv ./env ./env/bin/pip install -r pip_requirements.txt -
启动 Dashboard
./control start前端服务默认会在
0.0.0.0:8081端口启动。
安装并配置 Agent#
Agent 是部署在被监控机器上的数据采集器。现在,我们需要在 Open-Falcon 服务器本身上安装 Agent。
-
下载 Agent
cd /opt wget https://github.com/open-falcon/agent/releases/download/v0.0.14/agent-0.0.14-linux-amd64.tar.gz tar -zxvf agent-0.0.14-linux-amd64.tar.gz mv agent-0.0.14-linux-amd64 agent cd agent -
配置 Agent 修改
cfg.json文件,将心跳(HBS)和数据传输的地址指向本机。vim cfg.json{ "debug": true, "hostname": "", // 可以为空,agent会自动获取。建议生产环境显式设置。 "ip": "", // 同上 "heartbeat": { "enabled": true, "addr": "127.0.0.1:6030", // HBS 组件的地址 "interval": 60, "timeout": 1000 }, "transfer": { "enabled": true, "addrs": ["127.0.0.1:8433"], // Transfer 组件的地址 "interval": 60, "timeout": 1000 }, ... // 其他配置可保持默认 } -
启动 Agent
./control start ./control status
基本使用与验证#
现在,整个 Open-Falcon 监控系统已经部署完成。
-
访问 Dashboard 打开浏览器,访问
http://<你的服务器IP>:8081。- 首次登录: 使用默认账号
root,密码root。
- 首次登录: 使用默认账号
-
查看主机 登录后,点击顶部导航栏的
主机,你应该能看到刚刚部署了 Agent 的服务器(即本机)已经出现在列表中。这证明 Agent 的数据采集、传输和存储链路是通的。 -
查看监控图表 点击主机名,进入主机详情页,你可以看到该主机上各种指标的监控图表,例如
cpu.idle,disk.io,mem.memfree等。 -
配置告警策略
- 点击
告警策略->模板。Open-Falcon 已经内置了一些常用模板(如falcon)。 - 点击
告警策略->策略,你可以为特定的主机组创建或绑定告警策略。例如,可以为cpu.idle设置一个规则:all(#3) < 5,表示连续 3 个点都小于 5% 则触发告警。 - 在
告警策略->链接中配置告警接收方式(如邮件、短信、微信等)。
- 点击
常见问题与排查#
-
问题:
./open-falcon status显示某个组件为DOWN。- 排查:查看该组件的日志文件,通常位于
/opt/open-falcon/<component>/logs目录下。最常见的原因是数据库连接字符串配置错误。
- 排查:查看该组件的日志文件,通常位于
-
问题:Dashboard 无法打开。
- 排查:
- 检查
./control status确保 dashboard 进程在运行。 - 检查防火墙或安全组是否放行了
8081端口。 - 查看 dashboard 的日志
/tmp/dashboard.log。
- 检查
- 排查:
-
问题:主机列表中看不到被监控机器。
- 排查:
- 检查该机器上的 Agent 是否正常运行。
- 检查 Agent 配置中的
heartbeat.addr和transfer.addrs是否正确指向了后端服务器。 - 在后端服务器上,检查
hbs和transfer组件的日志。
- 排查:
-
问题:监控图表没有数据。
- 排查:确保
graph,transfer,agent组件都正常工作。链路是:Agent -> Transfer -> Graph。
- 排查:确保
最佳实践#
-
生产环境部署
- 组件分离:将压力较大的组件(如
graph,judge)单独部署在多台机器上,实现水平扩展。 - 高可用:对
transfer,hbs,api等无状态组件做负载均衡。 - 监控 Open-Falcon 自身:部署另一套独立的监控系统来监控 Open-Falcon 各组件的健康状况。
- 配置文件管理:使用 Ansible, SaltStack 等配置管理工具来批量管理和部署 Agent 及后端组件。
- 组件分离:将压力较大的组件(如
-
配置管理
- 主机名:在 Agent 配置中显式设置
hostname,避免因自动获取的主机名不理想导致管理混乱。 - 报警收敛:合理使用
nodata组件处理监控数据中断的情况,避免产生大量无意义报警。 - 模板化策略:尽量使用模板来管理告警策略,而不是为每个主机单独设置。
- 主机名:在 Agent 配置中显式设置
-
维护
- 数据清理:
graph组件存储的监控数据会占用大量磁盘空间。需要定期清理过期数据,或使用历史数据归档方案。 - 版本升级:在升级前,务必在测试环境充分验证,并备份数据库和配置文件。
- 数据清理:
总结#
通过本指南,我们成功地在 CentOS 7 服务器上部署了一个完整的 Open-Falcon v0.2.0 监控系统。这套系统已经具备了监控基础指标、可视化数据和配置告警的能力。Open-Falcon 的强大之处在于其插件机制,你还可以通过安装各种插件(如 mysql-monitor, nginx-monitor)来扩展其监控能力。
部署只是第一步,接下来需要你将 Agent 推广到所有的业务服务器上,并根据业务需求精心设计和配置告警策略,才能真正发挥其价值,为你的系统稳定性保驾护航。
参考引用#
- Open-Falcon 官方文档 (v0.2): https://book.open-falcon.org/
- Open-Falcon GitHub 主页: https://github.com/open-falcon
- Open-Falcon 插件收集: https://github.com/open-falcon/plugins
- MySQL 官方文档: https://dev.mysql.com/doc/