openfalcon架构及相关服务配置详解

 

一:openfalcon组件

                    

 

 

 

1.falcon-agent

       数据采集组件html

  agent内置了一个http接口,会自动采集预先定义的各类采集项,每隔60秒,push到transfer。node

2.transfer

       agent与transfer创建长链接,将数据汇报给tarnsferpython

       transfer默认监听在:8433端口上,agent会经过jsonrpc的方式来push数据上来git

       transfer将数据发送给judge和graphgithub

3.graph

     graph组件是存储绘图数据、历史数据的组件。transfer会把接收到的数据,转发给graph。web

  监听端口为6071,校验方法以下,返回ok表示服务正常。redis

    #url -s "http://127.0.0.1:6071/health"算法

4.query

    绘图数据的查询接口,由于graph是分片存储的,若是要传输给dashboard,就须要query组件收集用户的数据进行聚合再返回给用户。数据库

5.dashboard

 dashboard是面向用户的查询界面,在这里,用户能够看到push到graph中的全部数据,并查看其趋势图。json

6.judge

  告警判断

7.alarm

  alarm模块是处理报警事件的,judge产生的报警事件写入redis,alarm从redis读取数据。

8.sender

  调用各个公司提供的mail-privider和sms-privider,按照某个并发度,从redis读取邮件,短信并发送,

       alarm生成的报警短信和报警邮件是直接写入redis便可,由sender来发送。

9.mail-privider&&sms-provider

  发送邮件短信接口

10.protal

  配置报警策略的地方

11.HBS

  Heartbeat Server心跳服务,只依赖Protal的DB

 

二:相关服务配置详解

1.falcon-agent

1.进程管理

./open-falcon start agent  启动进程
./open-falcon stop agent  中止进程
./open-falcon monitor agent  查看日志

2.配置文件

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

   

2.Transfer

1.进程管理

# 校验服务,这里假定服务开启了6060的http监听端口。检验结果为ok代表服务正常启动。
curl -s "127.0.0.1:6060/health"
# 启动服务
./open-falcon start transfer
# 中止服务
./open-falcon stop transfer
# 查看日志
./open-falcon monitor transfer

  

2.配置文件

           部署完成transfer组件后,请修改agent的配置,使其指向正确的transfer地址。在安装完graph和judge后,请修改transfer的相应配置、使其可以正确寻址到这两个组件。

    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.

  

3.graph

1.进程管理

# 启动服务
./open-falcon start graph

# 中止服务
./open-falcon stop graph

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

2.配置文件

     部署完graph组件后,请修改transfer和api的配置,使这两个组件能够寻址到graph。

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

 

4.Api(query)

1.进程管理

# 启动服务
./open-falcon start api

# 中止服务
./open-falcon stop api

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

  

2.相关配置

  • 部署完成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"
}

  

5.Dashboard

1.进程管理

#以开发者模式启动
./env/bin/python wsgi.py

#以生产环境启动
bash control start

#中止dashboard运行

bash control stop

#查看日志
bash control tail

2,.相关配置文件

dashbord没有默认建立任何帐号包括管理帐号,须要你经过页面进行注册帐号。
想拥有管理全局的超级管理员帐号,须要手动注册用户名为root的帐号(第一个账号名称为root的用户会被自动设置为超级管理员)。
超级管理员能够给普通用户分配权限管理。
dashboard的配置文件为: 'rrd/config.py',请根据实际状况修改

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

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

  

6.HBS

1.进程管理

# 启动
./open-falcon start hbs

# 中止
./open-falcon stop hbs

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

  

2.相关配置

       若是你先部署了agent,后部署的hbs,那我们部署完hbs以后须要回去修改agent的配置,把agent配置中的heartbeat部分enabled设置为true,addr设置为hbs的rpc地址。

       若是hbs的配置文件维持默认,rpc端口就是6030,http端口是6031,agent中应该配置为hbs的rpc端口,当心别弄错了。

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

  

7.Judge

1.进程管理

# 启动
./open-falcon start judge

# 中止
./open-falcon stop judge

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

2.相关配置文件

{
    "debug": true,
    "debugHost": "nil",
    "remain": 11,
    "http": {
        "enabled": true,
        "listen": "0.0.0.0:6081"
    },
    "rpc": {
        "enabled": true,
        "listen": "0.0.0.0:6080"
    },
    "hbs": {
        "servers": ["127.0.0.1:6030"], # hbs最好放到lvs vip后面,因此此处最好配置为vip:port
        "timeout": 300,
        "interval": 60
    },
    "alarm": {
        "enabled": true,
        "minInterval": 300, # 连续两个报警之间至少相隔的秒数,维持默认便可
        "queuePattern": "event:p%v",
        "redis": {
            "dsn": "127.0.0.1:6379", # 与alarm、sender使用一个redis
            "maxIdle": 5,
            "connTimeout": 5000,
            "readTimeout": 5000,
            "writeTimeout": 5000
        }
    }
}

  

8.Alarm

1.进程管理

# 启动
./open-falcon start alarm

# 中止
./open-falcon stop alarm

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

2.相关配置文件

{
    "log_level": "debug",
    "http": {
        "enabled": true,
        "listen": "0.0.0.0:9912"
    },
    "redis": {
        "addr": "127.0.0.1:6379",
        "maxIdle": 5,
        "highQueues": [
            "event:p0",
            "event:p1",
            "event:p2"
        ],
        "lowQueues": [
            "event:p3",
            "event:p4",
            "event:p5",
            "event:p6"
        ],
        "userIMQueue": "/queue/user/im",
        "userSmsQueue": "/queue/user/sms",
        "userMailQueue": "/queue/user/mail"
    },
    "api": {
        "im": "http://127.0.0.1:10086/wechat",  //微信发送网关地址
        "sms": "http://127.0.0.1:10086/sms",  //短信发送网关地址
        "mail": "http://127.0.0.1:10086/mail", //邮件发送网关地址
        "dashboard": "http://127.0.0.1:8081",  //dashboard模块的运行地址
        "plus_api":"http://127.0.0.1:8080",   //falcon-plus api模块的运行地址
        "plus_api_token": "default-token-used-in-server-side" //用于和falcon-plus api模块服务端之间的通讯认证token
    },
    "falcon_portal": {
        "addr": "root:@tcp(127.0.0.1:3306)/alarms?charset=utf8&loc=Asia%2FChongqing",
        "idle": 10,
        "max": 100
    },
    "worker": {
        "im": 10,
        "sms": 10,
        "mail": 50
    },
    "housekeeper": {
        "event_retention_days": 7,  //报警历史信息的保留天数
        "event_delete_batch": 100
    }
}
相关文章
相关标签/搜索