Open-Falcon V0.2.1(or&grafana)+OneAlert
安裝redis&mysql
redis:4.0.
mysql:5.6.
wget http://mirrors.linuxeye.com/oneinstack.tar.gz
tar zxf oneinstack.tar.gz
初始化mysql表結構
cd /tmp/ && git clone https://github.com/open-falcon/falcon-plus.git
cd /tmp/falcon-plus/scripts/mysql/db_schema/
mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql
下載編譯好的https://github.com/open-falcon/falcon-plus/releases
open-falcon-v0.2.0.tar.gz二進制版本
創建工作目錄
export FALCON_HOME=/home/work
export WORKSPACE=$FALCON_HOME/open-falcon
解壓二進制包
tar -xzvf open-falcon-v0.2.0.tar.gz -C $WORKSPACE
二、後端安裝啟動
註意:以下是配置文件講解,需要改動的地方很少,直接在原來配置文件改即可,以下是常用的工具配置,並不是所有工具都需要,按需搭建即可
修改配置文件
Agent
vim agent/config/cfg.json
{
"debug": true, # 控制一些debug信息的輸出,生產環境通常設置為false
"hostname": "", # agent采集了數據發給transfer,endpoint就設置為了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
}
}
Transfer
vim transfer/config/cfg.json
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
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"
}
}
}
API
{
"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"
}
HBS(Heartbeat Server)
{
"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地址
}
}
Judge
{
"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
}
}
}
Alarm
{
"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
}
}
Task
debug: true/false, 如果為true,日誌中會打印debug信息
http
- enable: true/false, 表示是否開啟該http端口,該端口為控制端口,主要用來對task發送控制命令、統計命令、debug命令等
- listen: 表示http-server監聽的端口
index
- enable: true/false, 表示是否開啟索引更新任務
- dsn: 索引服務的MySQL的連接信息,默認用戶名是root,密碼為空,host為127.0.0.1,database為graph(如有必要,請修改)
- maxIdle: MySQL連接池配置,連接池允許的最大空閑連接數,保持默認即可
- cluster: 後端graph索引更新的定時任務描述。一條記錄的形如: "graph地址:執行周期描述",通過設置不同的執行周期,來實現負載在時間上的均衡。
eg. 後端部署了兩個graph實例,cluster可以配置為
"cluster":{
"test.hostname01:6071" : "0 0 0 ? 0-5", //周0-5,每天的00:00:00,開始執行索引全量更新;"0 0 0 ? 0-5"為quartz表達式
"test.hostname02:6071" : "0 30 0 ? * 0-5", //周0-5,每天的00:30:00,開始執行索引全量更新
} - autoDelete: true|false, 是否自動刪除垃圾索引。默認為false
collector
- enable: true/false, 表示是否開啟falcon的自身狀態采集任務
- destUrl: 監控數據的push地址,默認為本機的1988接口
- srcUrlFmt: 監控數據采集的url格式, %s將由機器名或域名替換
- cluster: falcon後端服務列表,用具體的"module,hostname:port"表示,module取值可以為graph、transfer、task等
Nodata
{
"debug": true,
"http": {
"enabled": true,
"listen": "0.0.0.0:6090"
},
"plus_api":{
"connectTimeout": 500,
"requestTimeout": 2000,
"addr": "http://127.0.0.1:8080", #falcon-plus api模塊的運行地址
"token": "default-token-used-in-server-side" #用於和falcon-plus api模塊的交互認證token
},
"config": {
"enabled": true,
"dsn": "root:@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true&wait_timeout=604800",
"maxIdle": 4
},
"collector":{
"enabled": true,
"batch": 200,
"concurrent": 10
},
"sender":{
"enabled": true,
"connectTimeout": 500,
"requestTimeout": 2000,
"transferAddr": "127.0.0.1:6060", #transfer的http監聽地址,一般形如"domain.transfer.service:6060"
"batch": 500
}
}
Aggregator
{
"debug": true,
"http": {
"enabled": true,
"listen": "0.0.0.0:6055"
},
"database": {
"addr": "root:@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true",
"idle": 10,
"ids": [1, -1],
"interval": 55
},
"api": {
"connect_timeout": 500,
"request_timeout": 2000,
"plus_api": "http://127.0.0.1:8080", #falcon-plus api模塊的運行地址
"plus_api_token": "default-token-used-in-server-side", #和falcon-plus api 模塊交互的認證token
"push_api": "http://127.0.0.1:1988/v1/push" #push數據的http接口,這是agent提供的接口
}
}
Agent-updater
每臺機器都要部署falcon-agent,如果公司機器量比較少,用pssh、ansible、fabric之類的工具手工安裝問題也不大。但是公司機器量多了之後,手工安裝、升級、回滾falcon-agent將成為噩夢。
個人開發了agent-updater這個工具,用於管理falcon-agent,agent-updater也有一個agent:ops-updater,可以看做是一個超級agent,用於管理其他agent的agent,呵呵,ops-updater推薦在裝機的時候一起安裝上。ops-updater通常是不會升級的。
具體參看:https://github.com/open-falcon/ops-updater
三、前端安裝啟動
克隆前端組件代碼
cd $WORKSPACE
git clone https://github.com/open-falcon/dashboard.git
安裝依賴包
yum install -y python-virtualenv
yum install -y python-devel
yum install -y openldap-devel
yum install -y mysql-devel
yum groupinstall "Development tools"
cd $WORKSPACE/dashboard/
virtualenv ./env
./env/bin/pip install -r pip_requirements.txt
修改配置文件
vim dashboard/rrd/config.py
啟動
./control start
四、驗證
瀏覽器輸入192.168.100.227:8081(ip+端口)
點擊sign up註冊,第一個帳號名稱為root的用戶會被自動設置為超級管理員
五、grafana配置
註:這個只是好玩,安裝不安裝都行
下載安裝包
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm
rpm -ivh grafana-4.2.0-1.x86_64.rpm
安裝插件
grafana-cli plugins install fastweb-openfalcon-datasource
編輯grafana.ini配置文件
vim /etc/grafana.ini
添加
[plugin.openfalcon]
;path = /var/lib/grafana/plugins/fastweb-openfalcon-datasource
啟動grafana
service grafana-server restart
驗證
瀏覽器訪問192.168.100.227:3000(ip+3000端口)
默認登錄名admin 密碼admin
這個只是隨便玩,想玩高大上多搞
六、OneAlert
註:這個就比較實用了,主要是郵件+短信+電話報警,而且是免費的,可以集成zabbix,nagios,falcon等等等等主流監控,可以在手機端app及PC端處理報警,配置及管理一切,灰常實用。
打開onealert
1.添加應用
創建falcon應用,並獲取appkey
2.添加falcon回調地址
登錄open-falcon,選擇template模塊,點擊你想要綁定OneAlert告警平臺的template name.
註意:你可以一個template綁定一個appkey,也可以多個.這取決於你們的管理方式.
在回調地址中填寫類似如下URL:
http://api.110monitor.com/alert/api/event/falcon/your_appkey
3.查看告警
4.,在「配置」->「應用」
模塊添加新應用.選擇「添加應用」後,您可以選擇匹配的監控平臺,系統會以向導的方式指引你完成配置
5選擇「配置」->「分派策略」
您可以將不同的應用、不同級別、不同內容的告警分派給不同的人員。你也可以將團隊成員根據角色劃分不同級別,比如一線運維人員實時接收告警,二線測試開發人員接收升級(長時間未處理解決)後的告警。
6.選擇「配置」->「通知策略」
您可以設置自己或團隊成員用何種渠道接收告警,在何種時間、接收什麽級別的告警。詳細了解通知策略
7.您可以在點擊右上角「用戶名」->「邀請成員」
選擇添加團隊成員
8.可以用微信與app管理,並且可以排班,分組。
Open-Falcon V0.2.1(or&grafana)+OneAlert