如果对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

image.png

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

单机部署open-falcon 0.2_第1张图片

2)修改graph的配置文件


vim /home/work/graph/config/cfg.json

单机部署open-falcon 0.2_第2张图片

3)修改hbs的配置文件


vim /home/work/hbs/config/cfg.json

单机部署open-falcon 0.2_第3张图片

4)修改nodata的配置文件


vim /home/work/nodata/config/cfg.json

单机部署open-falcon 0.2_第4张图片

5)修改api的配置文件


vim /home/work/api/config/cfg.json

单机部署open-falcon 0.2_第5张图片

6)修改alarm的配置文件


vim /home/work/alarm/config/cfg.json

单机部署open-falcon 0.2_第6张图片

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

单机部署open-falcon 0.2_第7张图片

然后进去后因为没有账号所以先要注册一个管理员账号:

点击右上角的sign up注册

单机部署open-falcon 0.2_第8张图片

然后就可以监控主机信息:

单机部署open-falcon 0.2_第9张图片

单机部署open-falcon 0.2_第10张图片单机部署open-falcon 0.2_第11张图片