一: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.進程管理
./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 } }