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
    }
}
相關文章
相關標籤/搜索