zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Algorithms
    Algorithms
    再探循环神经网络
    循环神经网络(RNN)
    AI:深度学习用于文本处理
    人们怎么使用 AI 抵抗冠状病毒
    AI:拿来主义——预训练网络(二)
    AI:拿来主义——预训练网络(一)
    AI:是猫还是狗,这是个问题
    Android Studio 3.6 正式版终于发布了
  • 原文地址:https://www.cnblogs.com/unqiang/p/12074118.html
Copyright © 2011-2022 走看看