openfalcon架构及相关服务配置详解(转)
一:openfalcon组件
1.falcon-agent
数据采集组件
agent内置了一个http接口,会自动采集预先定义的各种采集项,每隔60秒,push到transfer。
2.transfer
agent与transfer建立长连接,将数据汇报给tarnsfer
transfer默认监听在:8433端口上,agent会通过jsonrpc的方式来push数据上来
transfer将数据发送给judge和graph
3.graph
graph组件是存储绘图数据、历史数据的组件。transfer会把接收到的数据,转发给graph。
监听端口为6071,校验方法如下,返回ok表示服务正常。
#url -s "http://127.0.0.1:6071/health"
4.query
绘图数据的查询接口,因为graph是分片存储的,如果要传输给dashboard,就需要query组件收集用户的数据进行聚合再返回给用户。
5.dashboard
dashboard是面向用户的查询界面,在这里,用户可以看到push到graph中的所有数据,并查看其趋势图。
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.进程管理
1
2
3
|
./open-falcon start agent 启动进程 ./open-falcon stop agent 停止进程 ./open-falcon monitor agent 查看日志 |
2.配置文件
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 } } |
2.Transfer
1.进程管理
1
2
3
4
5
6
7
8
|
# 校验服务,这里假定服务开启了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的相应配置、使其能够正确寻址到这两个组件。
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
|
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.进程管理
1
2
3
4
5
6
7
8
|
# 启动服务 ./open-falcon start graph # 停止服务 ./open-falcon stop graph # 查看日志 ./open-falcon monitor graph |
2.配置文件
部署完graph组件后,请修改transfer和api的配置,使这两个组件可以寻址到graph。
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
|
{ "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.进程管理
1
2
3
4
5
6
7
8
|
# 启动服务 ./open-falcon start api # 停止服务 ./open-falcon stop api # 查看日志 ./open-falcon monitor api |
2.相关配置
- 部署完成api组件后,请修改dashboard组件的配置、使其能够正确寻址到api组件。
- 请确保api组件的graph列表 与 transfer的配置 一致。
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
|
{ "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.进程管理
1
2
3
4
5
6
7
8
9
10
11
12
|
#以开发者模式启动 ./env/bin/python wsgi.py #以生产环境启动 bash control start #停止dashboard运行 bash control stop #查看日志 bash control tail |
2,.相关配置文件
dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号。
想拥有管理全局的超级管理员账号,需要手动注册用户名为root的账号(第一个帐号名称为root的用户会被自动设置为超级管理员)。
超级管理员可以给普通用户分配权限管理。
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,默认密码为"" |
6.HBS
1.进程管理
1
2
3
4
5
6
7
8
|
# 启动 ./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端口,小心别弄错了。
1
2
3
4
5
6
7
8
9
10
11
12
|
{ "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.进程管理
1
2
3
4
5
6
7
8
|
# 启动 ./open-falcon start judge # 停止 ./open-falcon stop judge # 查看日志 ./open-falcon monitor judge |
2.相关配置文件
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
|
{ "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.进程管理
1
2
3
4
5
6
7
8
|
# 启动 ./open-falcon start alarm # 停止 ./open-falcon stop alarm # 查看日志 ./open-falcon monitor alarm |
2.相关配置文件
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
|
{ "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 } } |
转自: https://www.cnblogs.com/yaohong/p/9218400.html#_label1_0