• 欢迎访问笔记阁,实用快捷文章教程,推荐使用Chrome浏览器和360极速浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏笔记阁吧

open-falcon组件说明

Linux基础教程 feko 12个月前 (12-12) 274次浏览 已收录 0个评论 扫描二维码

Agent

作用:
    负责收集数据,默认每隔60秒push给Transfer;
    agent需要部署到所有要被监控的机器上,比如公司有1万台机器,那就要部署1万个agent。
特点:
    默认收集有200项数据,agent与Transfer建立了长连接,数据发送速度比较快;
    可以自定义收集数据,通过agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer;
    agent资源消耗很少。
配置文件:
    vim agent/config/cfg.json
        "hostname":"主机名"
        "heartbeat": {
            "addr": "127.0.0.1:6030", # 向hbs上报机器存活和agent基本信息和,hbs的地址,端口是hbs的rpc端口.
        },
        "transfer": {
            "addrs": [
                        "127.0.0.1:8433"   # 向transfer传输数据,transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA
                    ],  
        },

监听端口:
    1988:# 本地监听端口,用于/v1/push接口接收数据

数据流向组件:heartbeat、transfer

例子说明:
    利用/v1/push接口推送数据到transfer
        一个shell脚本编写的,自定义push数据到open-falcon的例子
        # 注意,http request body是个json,这个json是个列表

        ts=`date +%s`;
        curl -X POST -d "[{\"metric\": \"test-metric\", \"endpoint\": \"test-endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": 1,\"counterType\": \"GAUGE\",\"tags\": \"idc=lg,project=xx\"}]" http://127.0.0.1:1988/v1/push

        一个python的、自定义push数据到open-falcon的例子
        #!-*- coding:utf8 -*-

        import requests
        import time
        import json

        ts = int(time.time())
        payload = [
            {
                "endpoint": "test-endpoint",
                "metric": "test-metric",
                "timestamp": ts,
                "step": 60,
                "value": 1,
                "counterType": "GAUGE",
                "tags": "idc=lg,loc=beijing",
            },

            {
                "endpoint": "test-endpoint",
                "metric": "test-metric2",
                "timestamp": ts,
                "step": 60,
                "value": 2,
                "counterType": "GAUGE",
                "tags": "idc=lg,loc=beijing",
            },
        ]

        r = requests.post("http://127.0.0.1:1988/v1/push", data=json.dumps(payload))

        print r.text

Transfer

作用:
    transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph、judge等组件。
特点:
    转发效率高,没负载压力
配置文件:
    vim  transfer/config/cfg.json

         "cluster": {
        "judge-00" : "127.0.0.1:6080"   # 向judge传输数据,judge组件监听的ip
        }
        "cluster": {
        "graph-00" : "127.0.0.1:6070"   # 向graph传输数据,graph组件监听的ip
        }

监听端口:
    6060:控制端口,主要用来对transfer发送控制命令、统计命令、debug命令等
    8433:jsonrpc方式的数据接收端口,主要接收agent发来的数据(主要用这个)
    4444:telnet方式的数据接收端口
数据流向组件:judge、graph

Graph

作用:
    graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。
特点:
配置文件:
    vim graph/config/cfg.json 
            "db": {
            "dsn": "root:123456@tcp(127.0.0.1:3306)/graph?loc=Local&parseTime=true",    # 数据入库,数据库用户root,密码123456,主机端口127.0.0.1:3306,数据库名graph
            "maxIdle": 4             # 连接池允许的最大连接数,保持默认即可
            },

监听端口:
    6071:控制端口,主要用来对graph发送控制命令、统计命令、debug命令等
    6070:数据接收端口,主要接收transfer、api发来的数据   

API

作用:
    api组件,提供统一的restAPI操作接口。比如:api组件接收查询请求,
    根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。
特点:
配置文件:
    vim  api/config/cfg.json
    "db": {  //数据库相关的连接配置信息
        ......
        },
    "graph-00": "127.0.0.1:6070"   # 根据一致性哈希算法去相应的graph实例查询不同metric的数据,graph组件监听的ip
监听端口:
    8080:http监听端口,用于/v1/push接口接收数据

Dashboard

作用:
    -用户定义的仪表板和屏幕。
    -配置managent的报警,主机组,模板。
    -提醒历史管理和显示。
    —团队管理。
    -组合多种报警。
    -用户管理,例如登入、登出、登记、ldap_login等。
特点:
    dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号。
    想拥有管理全局的超级管理员账号,需要手动注册用户名为root的账号(第一个帐号名称为root的用户会被自动设置为超级管理员)。
配置文件:
    # Falcon+ API
    API_ADDR = os.environ.get("API_ADDR","http://127.0.0.1:8080/api/v1")    # 向api接口传输数据,api组件监听的ip

    # portal database
    # TODO: read from api instead of db
    PORTAL_DB_HOST = os.environ.get("PORTAL_DB_HOST","127.0.0.1")
    PORTAL_DB_PORT = int(os.environ.get("PORTAL_DB_PORT",3306))
    PORTAL_DB_USER = os.environ.get("PORTAL_DB_USER","root")
    PORTAL_DB_PASS = os.environ.get("PORTAL_DB_PASS","123456")
    PORTAL_DB_NAME = os.environ.get("PORTAL_DB_NAME","falcon_portal")  # falcon_portal用户登录等数据库 策略入库,查看agent主机信息

    # alarm database
    # TODO: read from api instead of db
    ALARM_DB_HOST = os.environ.get("ALARM_DB_HOST","127.0.0.1")
    ALARM_DB_PORT = int(os.environ.get("ALARM_DB_PORT",3306))
    ALARM_DB_USER = os.environ.get("ALARM_DB_USER","root")
    ALARM_DB_PASS = os.environ.get("ALARM_DB_PASS","123456")
    ALARM_DB_NAME = os.environ.get("ALARM_DB_NAME","alarms")      # alarms告警数据库

监听端口:
    8081:登录web管理页面端口

HBS

作用:
    HBS(Heartbeat Server)心跳服务器,公司所有agent都会连到HBS,每分钟发一次心跳请求。
    向agent下发插件、特殊采集项,ip白名单,jude下发策略,
特点:
    hbs是可以水平扩展的,至少部署两个实例以保证可用性。
    一般一个实例可以搞定5000台机器,所以说,如果公司有10万台机器,可以部署20个hbs实例,前面架设lvs,agent中就配置上lvs vip即可。
配置文件:
    cat hbs/config/cfg.json 
        "database": "root:123456@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true",  # 读取数据库,数据库用户root,密码123456,主机端口127.0.0.1:3306,数据库名falcon_portal
监听端口:
    6030 数据接收端口,主要接收agent发来的信息数据    
    6031 dashboard策略加载,主要提供admin管理功能,查看内存中缓存的数据

Judge

作用:
    Judge用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。
    Judge判断告警的功能不能放在直接的数据接收端:Transfer,而应该放到Transfer后面的组件里。

特点:
    一个Judge实例处理50万~100万数据,用个5G~10G内存,一个物理机上部署多个Judge实例,通过http接口可以查看当前处理的数据量
配置文件:
    cat hbs/config/cfg.json 
        "remain": 11,   # 告警次数最大10次,all(#3),这个#后面的数字不能超过remain-1
        "servers": ["127.0.0.1:6030"], # hbs最好放到lvs vip后面,所以此处最好配置为vip:port
        "minInterval": 300, # 连续两个报警之间至少相隔的秒数,维持默认即可
        "dsn": "127.0.0.1:6379", # 与alarm、sender使用一个redis
监听端口:
    6080  数据接收端口,主要接收transfer发来的信息数据
    6081  监听了http端口,提供了一个http接口:/count,访问之,可以得悉当前Judge实例处理了多少数据量

Alarm

作用:
    alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理,并进行不同渠道的发送。
特点:
    在配置报警策略的时候配置了报警级别,比如P0/P1/P2等等,每个及别的报警都会对应不同的redis队列,
    alarm去读取这个数据的时候我们希望先读取P0的数据,再读取P1的数据,已经发送的告警信息,alarm会写入MySQL中保存,
    在dashboard中查阅历史报警,历史报警保存的周期,是可配置的,默认为7天。
    报警合并功能,多条告警同一时刻产生,dashboard模块将告警信息合并且生成url链接,alarm将url链接发给用户。

配置文件:
    vim  alarm/config/cfg.json 
        "addr": "127.0.0.1:6379",           # judge 存储告警信息在redis的机器ip
        "addr": "root:@tcp(127.0.0.1:3306)/alarms?charset=utf8&loc=Asia%2FChongqing",  # 告警历史入库
         "event_retention_days": 7,         # 报警历史信息的保留天数

监听端口:
9912: 查看未恢复的告警通过alarm的http 9912端口页面

Nodata

作用: 
    nodata用于产生的模拟数据,防止agent宕机无数上报出现无告警。
    用户配置相应的报警策略,收到模拟返回值就产生报警。
特点:
配置文件:
    "addr": "http://127.0.0.1:8080",  # 查看数据 api模块的运行地址
    "dsn": "root:@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true&wait_timeout=604800",   # 同步策略
    "transferAddr": "127.0.0.1:6060",  #transfer的http监听地址,push数据回给transfer,产生的模拟数据相当从agent上传过来的
监听端口:
    6090 dashboard策略加载,主要提供admin管理功能

组件的所有http端口都可以通过curl -s "ip:端口/health"查看该服务是否正常


笔记阁 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:open-falcon组件说明
喜欢 (0)
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址