目录

Ubuntu 16.04 部署 open-falcon

环境准备

架构图

https://blog-image.nos-eastchina1.126.net/arch.jpgfunc_intro_1.png

安装redis

1
apt install  -y redis-server

安装mysql

1
apt install -y mysql-server

注意,请确保redis和MySQL已启动。

1
systemctl status mysql redis

初始化MySQL表结构

1
2
3
4
5
6
7
8
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,那么只需要执行如下命令:

1
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql

从源码编译

首先,安装golang环境;并设置环境变量

1
2
3
4
5
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz ## download
tar -zxvf go1.9.linux-amd64.tar.gz -C /usr/local/                   ## 解压缩
echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile          ## 添加环境变量
source /etc/profile
go  version                                                         ## 检查是否可用
1
2
3
4
5

cd /usr/local/go/src/github.com/open-falcon/falcon-plus/
apt install make gcc pack							 ## 必要依赖
make all											## make all modules
make pack											## pack all modules

这时候,你会在当前目录下面,得到open-falcon-v0.2.0.tar.gz的压缩包,就表示已经编译和打包成功了。

下载编译好的二进制版本

如果你不想自己编译的话,那么可以下载官方编译好的二进制版本(x86 64位平台)

到这一步,准备工作就完成了。 open-falcon-v0.2.0.tar.gz 这个二进制包,请大家解压到合适的位置,暂时保存,后续步骤需要使用。

后端

创建工作目录

1
2
3
export FALCON_HOME=/home/work
export WORKSPACE=$FALCON_HOME/open-falcon
mkdir -p $WORKSPACE

解压二进制包

1
tar -zxcf open-falcon-v0.2.0.tar.gz -C $WORKSPACE

在一台机器上启动所有的后端组件

首先确认配置文件中数据库账号密码与实际相同,否则需要修改配置文件。

1
2
cd $WORKSPACE
grep -Ilr 3306  ./ | xargs -n1 -- sed -i 's/root:password/real_user:real_password/g')

启动

这里可能会报错,一般都是缺少依赖包,根据提示安装就ok了,

1
2
3
cd $WORKSPACE
./open-falcon start										## 启动open-falcon
./open-falcon check								    	## 检查所有模块的启动状况

更多的命令行工具用法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
## ./open-falcon [start|stop|restart|check|monitor|reload] module
./open-falcon start agent

./open-falcon check
        falcon-graph         UP           25371
          falcon-hbs         UP           25384
        falcon-judge         UP           25395
     falcon-transfer         UP           25403
       falcon-nodata         UP           25411
   falcon-aggregator         UP           25420
        falcon-agent         UP           47073
      falcon-gateway         UP           25440
          falcon-api         UP           25448
        falcon-alarm         UP           25462

For debugging , You can check $WorkDir/$moduleName/log/logs/xxx.log

前端

创建工作目录

1
2
3
4
export HOME=/home/work
export WORKSPACE=$HOME/open-falcon
mkdir -p $WORKSPACE
cd $WORKSPACE

克隆前端组件代码

1
2
cd $WORKSPACE
git clone https://github.com/open-falcon/dashboard.git

安装依赖包

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
apt  install -y python-pip python-virtualenv
apt  install -y python-devel
apt  install -y ldap-utils
apt  install -y libmysqld-dev

apt  install -y linux-headers-4.4.0-83-generic build-essential   ## 这个要看下uname -r的输出来确定 ,根据uname -r 输出的数字 安装时使用tab 补全
cd $WORKSPACE/dashboard/
virtualenv ./env

./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple

修改配置

1
2
3
4
5
6
7
dashboard的配置文件为: 'rrd/config.py',请根据实际情况修改

### API_ADDR 表示后端api组件的地址
API_ADDR = "http://127.0.0.1:8080/api/v1"

### 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
### 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为""

以开发者模式启动

1
2
3
./env/bin/python wsgi.py

open http://127.0.0.1:8081 in your browser.

在生产环境启动

1
2
3
bash control start

open http://127.0.0.1:8081 in your browser.

停止dashboard运行

1
bash control stop

查看日志

1
bash control tail

Agent修改配置

agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。

部署说明

agent需要部署到所有要被监控的机器上,比如公司有10万台机器,那就要部署10万个agent。agent本身资源消耗很少,不用担心。

配置说明

配置文件必须叫cfg.json,可以基于cfg.example.json修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
    "debug": true,  ## 控制一些debug信息的输出,生产环境通常设置为false
    "hostname": "", ## agent采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的
    "ip": "", ## agent与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置
    "plugin": {
        "enabled": false, ## 默认不开启插件机制
        "dir": "./plugin",  ## 把放置插件脚本的git repo clone到这个目录
        "git": "https://github.com/open-falcon/plugin.git", ## 放置插件脚本的git repo地址
        "logs": "./logs" ## 插件执行的log,如果插件执行有问题,可以去这个目录看log
    },
    "heartbeat": {
        "enabled": true,  ## 此处enabled要设置为true
        "addr": "127.0.0.1:6030", ## hbs的地址,端口是hbs的rpc端口
        "interval": 60, ## 心跳周期,单位是秒
        "timeout": 1000 ## 连接hbs的超时时间,单位是毫秒
    },
    "transfer": {
        "enabled": true, 
        "addrs": [
            "127.0.0.1:18433"
        ],  ## transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA
        "interval": 60, ## 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer
        "timeout": 1000 ## 连接transfer的超时时间,单位是毫秒
    },
    "http": {
        "enabled": true,  ## 是否要监听http端口
        "listen": ":1988",
        "backdoor": false
    },
    "collector": {
        "ifacePrefix": ["eth", "em"], ## 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息
        "mountPoint": []
    },
    "default_tags": {
    },
    "ignore": {  ## 默认采集了200多个metric,可以通过ignore设置为不采集
        "cpu.busy": true,
        "df.bytes.free": true,
        "df.bytes.total": true,
        "df.bytes.used": true,
        "df.bytes.used.percent": true,
        "df.inodes.total": true,
        "df.inodes.free": true,
        "df.inodes.used": true,
        "df.inodes.used.percent": true,
        "mem.memtotal": true,
        "mem.memused": true,
        "mem.memused.percent": true,
        "mem.memfree": true,
        "mem.swaptotal": true,
        "mem.swapused": true,
        "mem.swapfree": true
    }
}

进程管理

1
2
3
./open-falcon start agent  启动进程
./open-falcon stop agent  停止进程
./open-falcon monitor agent  查看日志

验证

看var目录下的log是否正常,或者浏览器访问其1988端口。另外agent提供了一个--check参数,可以检查agent是否可以正常跑在当前机器上

1
./falcon-agent --check

/v1/push接口

我们设计初衷是不希望用户直接连到Transfer发送数据,而是通过agent的/v1/push接口转发,接口使用范例:

1
ts=`date +%s`; curl -X POST -d "[{\"metric\": \"metric.demo\", \"endpoint\": \"qd-open-falcon-judge01.hd\", \"timestamp\": $ts,\"step\": 60,\"value\": 9,\"counterType\": \"GAUGE\",\"tags\": \"project=falcon,module=judge\"}]" http://127.0.0.1:1988/v1/push

现在在浏览器打开IP:8081端口

agent配置文件 修改plugin : true

https://blog-image.nos-eastchina1.126.net/1.jpg

打开agent IP:1988

https://blog-image.nos-eastchina1.126.net/2.jpg

:happy: