如果对falcon不了解,建议先对下这篇文章《open-falcon介绍》(http://book.open-falcon.org/zh/intro/index.html)
为什么要选择open-falcon?
* 灵活的数据采集,支持自定义数据上报
* 支持策略模板、模板继承和覆盖
* 高效的告警判别,支持告警暂停、维护周期设置
* 组件支持水平拓展
* 大部分用golang编写,部署相对简单
open-falcon是采用了前后端分离的架构,这里演示前后端部署在同一主机上。整个部署划分为三大步骤:一、环境准备,二、后端部署,三、前端部署
一、环境准备:
需要注意一下三个版本的限制:
mysql 5.5及以下
go *>=1.6
git *>=1.7.5
1、安装git
[root@cml_ali_sz_120 etc]# yum install -y git
安装完成后查看版本信息是否符合以上要求:
[root@cml_ali_sz_120 etc]# git version git version 1.8.3.1
2、安装go语言环境(因为官方yum和阿里yum都没有go的安装包,故只能通过fedora的epel仓库来安装)
[root@cml_ali_sz_120 etc]# yum install -y epel-release [root@cml_ali_sz_120 etc]# yum install golang -y
同样的需要检查下go的版本是否符合上面要求:
[root@cml_ali_sz_120 etc]# go version go version go1.9.4 linux/amd64
3、安装redis:(这里我选择使用源码安装,而且为了方便使用的是shell脚本一键安装的,所以下面贴出安装redis的命令部分)
redis () { cd /root/src tar xzvf redis-4.0.8.tar.gz mv redis-4.0.8 /usr/local/redis cd /usr/local/redis make rm -f /usr/local/bin/redis-cli ln -s /usr/local/redis/src/redis-cli /usr/local/bin }
4、安装mysql(一样使用脚本安装)
# Mysql yum install -y cmake ncurses-devel gcc gcc-c++ libstdc++-devel libtool-ltdl libtool-ltdl-devel \ bison-devel libaio libaio-devel libtool mysql-devel gcc python-devel Mysql () { groupadd mysql useradd -r -s /bin/false -g mysql mysql cd /root/src rm -rf mysql-5.7.21 tar xzvf mysql-boost-5.7.21.tar.gz cd mysql-5.7.21 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DSYSCONFDIR=/etc/ \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=bundled \ -DWITH_EMBEDDED_SERVER=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_DEBUG=0 \ -DWITH_BOOST=boost if make;then make install else exit 1 fi /bin/cp support-files/mysql.server /etc/init.d/mysql chmod a+x /etc/init.d/mysql cd /usr/local/mysql rm -rf /etc/my.cnf cp -f support-files/my-default.cnf /etc/my.cnf chown -R mysql . chgrp -R mysql . bin/mysqld --initialize chown -R root . chown -R mysql data echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf ldconfig rm -f /usr/local/bin/mysql ln -s /usr/local/mysql/bin/mysql /usr/local/bin/ chkconfig --add mysql chkconfig mysql on }
当然为了方便也是可以使用yum安装redis于mysql服务的
yum安装redis:
yum install redis -y
启动redis
systemctl start redis
设置redis开机启动
systemctl enable redis
可以用下面的语句查看redis是否开启
systemctl status redis
yum安装mysql:
yum install mysql-server -y
启动mysql
systemctl start mysql
可以用下面的语句查看mysql是否开启
systemctl status mysql
5、设置环境变量GOROOT和GOPATH
[root@cml_ali_sz_120 etc]# export GOROOT=/usr/lib/golang [root@cml_ali_sz_120 etc]# export GOPATH=/home
6、从github上下载open-falcon源码:
创建本地路径
[root@cml_ali_sz_120 ~]# mkdir -p $GOPATH/src/github.com/open-falcon [root@cml_ali_sz_120 ~]# cd $GOPATH/src/github.com/open-falcon
git clone github上的源码
[root@cml_ali_sz_120 open-falcon]# git clone https://github.com/open-falcon/falcon-plus.git
7、初始化数据库
cd $GOPATH/src/github.com/open-falcon/falcon-plus/scripts/mysql/db_schema/ mysql -h 127.0.0.1 -u root -ppasswd < 1_uic-db-schema.sql mysql -h 127.0.0.1 -u root -ppasswd < 2_portal-db-schema.sql mysql -h 127.0.0.1 -u root -ppasswd < 3_dashboard-db-schema.sql mysql -h 127.0.0.1 -u root -ppasswd < 4_graph-db-schema.sql mysql -h 127.0.0.1 -u root -ppasswd < 5_alarms-db-schema.sql
将passwd修改成自己的密码
8、编译源码安装并打包
进入本地源码路径
[root@cml_ali_sz_120 open-falcon]# cd $GOPATH/src/github.com/open-falcon/falcon-plus/
使用go get获取rrdtool工具包(make过程卡壳的一个点,这一步是官方教程没有提到的内容,如果不获取该工具包make的时候会报错。)
[root@cml_ali_sz_120 falcon-plus]# go get github.com/open-falcon/rrdlite
编译所有模块
[root@cml_ali_sz_120 falcon-plus]# make all
然后打包
[root@cml_ali_sz_120 falcon-plus]# make pack
9、官方提供的安装包
https://book.open-falcon.org/zh_0_2/quick_install/prepare.html中官方有提供编译包,如果编译过程不顺利可以直接下载编译包。
二、部署后端
1、创建后端目录
[root@cml_ali_sz_120 ~]# export WORKSPACE=/home/work [root@cml_ali_sz_120 ~]# mkdir -p $WORKSPACE
2、解压二进制包:
[root@cml_ali_sz_120 falcon-plus]# cd $GOPATH/src/github.com/open-falcon/falcon-plus/ [root@cml_ali_sz_120 falcon-plus]# tar -zxvf open-falcon-v0.2.1.tar.gz -c $WORKSPACE
3、修改配置文件cfg.json
猜测部分模块依赖连接数据库,因为如果不修改配置文件,aggregator模块会出现无法启动,graph、hbs、nodata、api、alarm模块会出现开启不报错但是状态为开启失败的情况。(个人认为这块的设计值得作为open-falcon优化的一个点,连接本机mysql如果失败是可以收到错误提示的,第一时间有报错提示总比什么都不显示或显示开启但实际开启失败强,如果别人服务都不知道怎么开起来,系统功能再强大有多少人硬着头皮部署下去而不是选择换个系统试试呢)
如果需要每个模块都能正常启动,需要将上面模块的cfg.json的数据库信息进行修改。根据本教程的配置,需要修改配置文件所在的目录:
模块 配置文件所在路径
aggregator /home/work/aggregator/config/cfg.json
graph /home/work/graph/config/cfg.json
hbs /home/work/hbs/config/cfg.json
nodata /home/work/nodata/config/cfg.json
api /home/work/api/config/cfg.json
alarm /home/work/alarm/config/cfg.json
(mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”。)
1)修改aggregator的配置文件
vim /home/work/aggregator/config/cfg.json
2)修改graph的配置文件
vim /home/work/graph/config/cfg.json
3)修改hbs的配置文件
vim /home/work/hbs/config/cfg.json
4)修改nodata的配置文件
vim /home/work/nodata/config/cfg.json
5)修改api的配置文件
vim /home/work/api/config/cfg.json
6)修改alarm的配置文件
vim /home/work/alarm/config/cfg.json
4、启动后端模块:
[root@cml_ali_sz_120 work]# cd $WORKSPACE [root@cml_ali_sz_120 work]# ./open-falcon start
检查下各个模块的启动情况:
[root@cml_ali_sz_120 work]# ./open-falcon check falcon-graph UP 1722 falcon-hbs UP 1730 falcon-judge UP 1735 falcon-transfer UP 1743 falcon-nodata UP 1749 falcon-aggregator UP 1756 falcon-agent UP 1764 falcon-gateway UP 1771 falcon-api UP 1777 falcon-alarm UP 1789
不会使用命令可以-h查看:
[root@cml_ali_sz_120 work]# ./open-falcon -h
Usage:
open-falcon [flags]
open-falcon [command]
Available Commands:
check Check the status of Open-Falcon modules
help Help about any command
monitor Display an Open-Falcon module's log
reload Reload an Open-Falcon module's configuration file
restart Restart Open-Falcon modules
start Start Open-Falcon modules
stop Stop Open-Falcon modules
Flags:
-v, --version show version
Use "open-falcon [command] --help" for more information about a command.
三、部署前端:
1、创建前端目录:
[root@cml_ali_sz_120 ~]# export FRONTSPACE=/home/front/open-falcon [root@cml_ali_sz_120 ~]# mkdir -p $FRONTSPACE
2、在github上下载前端代码:
[root@cml_ali_sz_120 open-falcon]# cd $FRONTSPACE [root@cml_ali_sz_120 open-falcon]# git clone https://github.com/open-falcon/dashboard.git
3、安装需要的依赖包:
yum install -y python-virtualenv yum install -y python-devel yum install -y openldap-devel yum install -y mysql-devel yum groupinstall "Development tools" -y cd $FRONTSPACE/dashboard/ virtualenv ./env ./env/bin/pip install -r pip_requirements.txt
4、修改配置
根据本次记录的配置,dashboard的配置文件在/home/front/open-falcon/dashboard/rrd/config.py,需要根据实际情况对内部配置进行修改。
由于前端后台搭在一台虚拟机里,且暂时不接入LDAP,且数据库root的密码为空,故先不修改配置文件。
5、假如开启firewalld开放8081端口即可:
firewall-cmd --add-port=8081/tcp --permanent firewall-cmd --reload
6、启动control:
[root@cml_ali_sz_120 dashboard]# bash control start
7、以开发者模式启动:
[root@cml_ali_sz_120 dashboard]# ./env/bin/python wsgi.py
然后直接访问open-falcon:http://localhost:8081
然后进去后因为没有账号所以先要注册一个管理员账号:
点击右上角的sign up注册
然后就可以监控主机信息: