open-falcon由浅入深

1.  准备工作

    1.  安装redis

        使用源码安装或者yum安装都可以

        安装完以后,修改redis.conf文件

        bind 0.0.0.0

        启动redis-server

    2.  安装mysql

        可以使用yum,二进制,编译安装

        安装完成后,启动mysql        

    3.  初始化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/

    4.  检查数据是否已经导入

mysql> show databases;
+------------------------------+
| Database                     |
+------------------------------+
| information_schema           |
| alarms                       |
| dashboard                    |
| falcon_portal                |
| graph                        |
| inception                    |
| mysql                        |
| performance_schema           |
| sys                          |
| uic                          |
+------------------------------+
14 rows in set (0.00 sec)

    5.  配置GO语言开发环境

        yum install golang -y       

#检查版本

[root@open-falcon-server ~]# go version
 go version go1.8.3 linux/amd64
#查看go的安装路径

[root@open-falcon-server ~]# find / -name go
/etc/alternatives/go
/var/lib/alternatives/go
/usr/bin/go
/usr/lib/golang/src/cmd/go  #需要的是这个路径
/usr/lib/golang/src/go
/usr/lib/golang/bin/go
/usr/lib/golang/pkg/linux_amd64/go
#设置环境变量GOROOT和GOPATH

export GOROOT=/usr/lib/golang
export GOPATH=/home  

2.  单机安装

    1.  下载编译好的二进制版本

        https://github.com/open-falcon/falcon-plus/releases/tag/v0.2.0            

    2.  解压下载的压缩包

        tar -zxvf  open-falcon-v0.2.0.tar.gz

    3.  修改open-falcon的所有组件的配置文件cfg.json

        改成对应的数据库连接账号和密码

    4.  启动open-falcon的所有组件

        /data/open-falcon/open-falcon start

    5.  检查open-falcon的所有组件是否正常

        /data/open-falcon/open-falcon check      

        falcon-graph         UP           39334 
          falcon-hbs         UP           39351 
        falcon-judge         UP           39364 
     falcon-transfer         UP           39374 
       falcon-nodata         UP           39384 
   falcon-aggregator         UP           39395 
        falcon-agent         UP           39411 
      falcon-gateway         UP           39429 
          falcon-api         UP           39439 
        falcon-alarm         UP           39454 

    6.  其它参数

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                           

    7.  前端部署

        1.  下载前端组件代码           

export HOME=/home/work/

mkdir -p $HOME/open-falcon/
cd $HOME/open-falcon && git clone https://github.com/open-falcon/dashboard.git
cd dashboard;

        2.  安装依赖包        

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 $HOME/open-falcon/dashboard/
virtualenv ./env

./env/bin/pip install -r pip_requirements.txt                        

        3.  修改dashboard的配置文件rrd/config.py

            数据库连接地址账号和密码

        4.  启动dashboard

            bash control start

        5.  其它参数

            bash control start|stop|restart|status|tail|kill9|version|pack

    8.  安装agent

        1.  将后端服务的目录agent和文件open-falcon拷贝到被监控的服务器上

        2.  修改agent的配置文件config/cfg.json文件         

    "heartbeat": {
        "enabled": true,
        "addr": "0.0.0.0:6030",  修改为监控服务器的IP
        "interval": 60,
        "timeout": 1000
    },
    "transfer": {
        "enabled": true,
        "addrs": [
            "0.0.0.0:8433"  修改为监控服务器的IP
        ],
        "interval": 60,
        "timeout": 1000
    },

        3.  启动agent

            agent/control start agent

            ./open-falcon start agent

            监听在1988端口

        4.  其它参数

            agent/control start agent              

            agent/control stop agent

            agent/control status agent

        5.  agent的配置文件分析           

{
    "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
    }
}    

    9.  transfer组件

        transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。

        1.  启动服务

            ./open-falcon start transfer 

            监听端口6060

        2.  停止服务

            ./open-falcon stop transfer

        3.  查看日志

            ./open-falcon monitor transfer

        4.  配置文件分析

            transfer/config/cfg.json           

debug: true/false, 如果为true,日志中会打印debug信息

    minStep: 30, 允许上报的数据最小间隔,默认为30秒

    http
        - enabled: true/false, 表示是否开启该http端口,该端口为控制端口,主要用来对transfer发送控制命令、统计命令、debug命令等
        - listen: 表示监听的http端口

    rpc
        - enabled: true/false, 表示是否开启该jsonrpc数据接收端口, Agent发送数据使用的就是该端口
        - listen: 表示监听的http端口

    socket #即将被废弃,请避免使用
        - enabled: true/false, 表示是否开启该telnet方式的数据接收端口,这是为了方便用户一行行的发送数据给transfer
        - listen: 表示监听的http端口

    judge
        - enabled: true/false, 表示是否开启向judge发送数据
        - batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值
        - connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
        - callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
        - pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
        - replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可
        - cluster: key-value形式的字典,表示后端的judge列表,其中key代表后端judge名字,value代表的是具体的ip:port

    graph
        - enabled: true/false, 表示是否开启向graph发送数据
        - batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值
        - connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
        - callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
        - pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
        - replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可
        - cluster: key-value形式的字典,表示后端的graph列表,其中key代表后端graph名字,value代表的是具体的ip:port(多个地址用逗号隔开, transfer会将同一份数据发送至各个地址,利用这个特性可以实现数据的多重备份)

    tsdb
        - enabled: true/false, 表示是否开启向open tsdb发送数据
        - batch: 数据转发的批量大小,可以加快发送速度
        - connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
        - callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
        - retry: 连接后端的重试次数和发送数据的重试次数
        - address: tsdb地址或者tsdb集群vip地址, 通过tcp连接tsdb.

    10.  graph组件

        graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。

        1.  启动服务

            ./open-falcon start graph

        2.  停止服务

            ./open-falcon stop graph

        3.  查看日志

            ./open-falcon monitor graph

        4.  配置文件分析

            graph/config/cfg.json            

{
    "debug": false, //true or false, 是否开启debug日志
    "http": {
        "enabled": true, //true or false, 表示是否开启该http端口,该端口为控制端口,主要用来对graph发送控制命令、统计命令、debug命令
        "listen": "0.0.0.0:6071" //表示监听的http端口
    },
    "rpc": {
        "enabled": true, //true or false, 表示是否开启该rpc端口,该端口为数据接收端口
        "listen": "0.0.0.0:6070" //表示监听的rpc端口
    },
    "rrd": {
        "storage": "./data/6070" // 历史数据的文件存储路径(如有必要,请修改为合适的路径)
    },
    "db": {
        "dsn": "root:@tcp(127.0.0.1:3306)/graph?loc=Local&parseTime=true", //MySQL的连接信息,默认用户名是root,密码为空,host为127.0.0.1,database为graph(如有必要,请修改)
        "maxIdle": 4  //MySQL连接池配置,连接池允许的最大连接数,保持默认即可
    },
    "callTimeout": 5000,  //RPC调用超时时间,单位ms
    "migrate": {  //扩容graph时历史数据自动迁移
        "enabled": false,  //true or false, 表示graph是否处于数据迁移状态
        "concurrency": 2, //数据迁移时的并发连接数,建议保持默认
        "replicas": 500, //这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可(必须和transfer的配置中保持一致)
        "cluster": { //未扩容前老的graph实例列表
            "graph-00" : "127.0.0.1:6070"
        }
    }
}

    11.  api组件

        api组件,提供统一的restAPI操作接口。比如:api组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。

        1.  启动服务

            ./open-falcon start api

        2.  停止服务

            ./open-falcon stop api

        3.  查看日志

            ./open-falcon monitor api          

        4.  配置文件分析 

            部署完成api组件后,请修改dashboard组件的配置、使其能够正确寻址到api组件。

            请确保api组件的graph列表 与 transfer的配置 一致。           

{
    "log_level": "debug",
    "db": {  //数据库相关的连接配置信息
        "faclon_portal": "root:@tcp(127.0.0.1:3306)/falcon_portal?charset=utf8&parseTime=True&loc=Local",
        "graph": "root:@tcp(127.0.0.1:3306)/graph?charset=utf8&parseTime=True&loc=Local",
        "uic": "root:@tcp(127.0.0.1:3306)/uic?charset=utf8&parseTime=True&loc=Local",
        "dashboard": "root:@tcp(127.0.0.1:3306)/dashboard?charset=utf8&parseTime=True&loc=Local",
        "alarms": "root:@tcp(127.0.0.1:3306)/alarms?charset=utf8&parseTime=True&loc=Local",
        "db_bug": true
    },
    "graphs": {  // graph模块的部署列表信息
        "cluster": {
            "graph-00": "127.0.0.1:6070"
        },
        "max_conns": 100,
        "max_idle": 100,
        "conn_timeout": 1000,
        "call_timeout": 5000,
        "numberOfReplicas": 500
    },
    "metric_list_file": "./api/data/metric",
    "web_port": ":8080",  // http监听端口
    "access_control": true, // 如果设置为false,那么任何用户都可以具备管理员权限
    "salt": "pleaseinputwhichyouareusingnow",  //数据库加密密码的时候的salt
    "skip_auth": false, //如果设置为true,那么访问api就不需要经过认证
    "default_token": "default-token-used-in-server-side",  //用于服务端各模块间的访问授权
    "gen_doc": false,
    "gen_doc_path": "doc/module.html"
}                                     

    12.  hbs组件

        1.  管理  

# 启动
./open-falcon start hbs

# 停止
./open-falcon stop hbs

# 查看日志
./open-falcon monitor hbs

        2.  配置文件分析         

{
    "debug": true,
    "database": "root:password@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true", # Portal的数据库地址
    "hosts": "", # portal数据库中有个host表,如果表中数据是从其他系统同步过来的,此处配置为sync,否则就维持默认,留空即可
    "maxIdle": 100,
    "listen": ":6030", # hbs监听的rpc地址
    "trustable": [""],
    "http": {
        "enabled": true,
        "listen": "0.0.0.0:6031" # hbs监听的http地址
    }
}                

    13.  Judge组件

        1.    

3.  分布式安装  

          

    

    

posted @ 2021-02-25 09:27  奋斗史  阅读(180)  评论(0)    收藏  举报