urlooker
最近搞了一個url監控項目,分享一下,監控web服務可用性及訪問質量,三個組件都支持水平擴展,一臺普通機器可以監控 5000+個 url網址,下面是一些介紹。
urlooker
監控web服務可用性及訪問質量,採用go語言編寫,易於安裝和二次開發。它能提供返回狀態碼檢測,頁面訪問時間檢測,agent多機房部署(這個最爲安逸,其效果可以類似監控寶、D盾和360雲監控的多節點監控url),指定機房訪問,同時支持短信與郵件告警。
GIthub官方鏈接:https://github.com/URLooker
Feature
- 返回狀態碼檢測
- 頁面響應時間檢測
- 頁面關鍵詞匹配檢測
- 帶cookie訪問
- agent多機房部署,指定機房訪問
- 檢測結果支持向open-falcon推送
Architecture
ScreenShot
Install
源碼安裝
安裝依賴
yum install -y redis
yum install -y mysql-server
導入數據庫
wget https://raw.githubusercontent.com/URLooker/web/master/schema.sql
mysql -h 127.0.0.1 -u root -p < schema.sql
安裝組件
一.安裝環境依賴
(1)安裝mysql數據庫,並且導入sql文件
apt-get install mysql-server
設置用戶與密碼
wget http://x2know.qiniudn.com/schema.sql
進入數據庫,創建urlooker庫
set names utf8
source /root/schema.sql ##sql文件路徑
(2)安裝redis數據庫
apt-get install Redis-server
二. 安裝編譯環境go 1.6 或者更高版本
(1) 下載安裝包
sudo apt-get update
sudo apt-get -y upgrade
sudo curl -O https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
sudo tar -xvf go1.6.linux-amd64.tar.gz
sudo mv go /usr/local
(2)設置go路徑
sudo vim ~/.profile
export PATH=$PATH:/usr/local/go/bin
export GOROOT=usr/local/go
export PATH=$PATH:$GOROOT/bin
source ~/.profile ##刷新環境變量
運行 go version 能顯示go版本信息,代表安裝成功。
三. 二進制安裝urlooker
wget http://x2know.qiniudn.com/urlooker.tar.gz
tar xzvf urlooker.tar.gz
cd urlooker
(1)urlooker web 組件安裝
web組件主要是用來添加監控項,告警組人員管理,查看url訪問質量繪圖
export GOPATH=/url/local ##設置GOPATH環境變量
mkdir -p $GOPATH/src/github.com/urlooker
cd $GOPATH/src/github.com/urlooker
git clone https://github.com/URLooker/web.git
cd web
./control build ##如果build過程中出錯提示找不到go命令,可以修改control文件,將go命令添加爲絕對路徑
./control start
修改web/cfg.json文件
"debug": true,
"salt": "have fun!",
"past": 30, #查看最近幾分鐘內的報警歷史和繪圖,默認爲30分鐘
"http": {
"listen": "0.0.0.0:1984",
"secret": "secret"
},
"rpc": {
"listen": "0.0.0.0:1985"
},
"mysql": {
"addr": "root:123456@tcp(127.0.0.1:3306)/urlooker?charset=utf8&&loc=Asia%2FShanghai", #與數據庫交互的有關信息
"idle": 10,
"max": 20
},
"alarm":{
"enable": true,
"batch": 200,
"replicas": 500,
"connTimeout": 1000,
"callTimeout": 5000,
"maxConns": 32,
"maxIdle": 32,
"sleepTime":30,
"cluster":{
"node-1":"127.0.0.1:1986"
}
},
"monitorMap": { #配置哪些url由哪個機房的agent去監控,默認均由default列表中的agent去監控
"default":["hostname.1"], #監控指標多了之後agent地址可以填多個,可以通過多個agent去監控
"idc1":["hostname.2"]
},
"falcon":{
"enable": false, # 爲true表示向falcon推送數據
"addr":"http://falcon.transfer.addr/api/push",
"interval": 60
},
"internalDns":{ #通過公司內部接口獲取url對應ip所在機房
"enable": false,
"addr":""
}
(2)urlooker agent組件安裝
agent組件可以定時從web組件獲取帶監控url列表,發起模擬訪問,然後將訪問結果回報給web組件
1
設置GOPATH環境變量
mkdir -p $GOPATH/src/github.com/urlooker
cd $GOPATH/src/github.com/urlooker
git clone https://github.com/URLooker/agent.git
cd agent
go get ./... ##安裝該組件時,儘量使用root用戶,否則可能因爲權限問題而出錯
./control build
./control start
修改 agent/cfg.json 文件
{
"debug": false,
"hostname": "hostname.1", #hostname.1 和 web組件配置文件中monitorMap的值對應
"worker": 1000, # 同時訪問url的併發數
"web": {
"addrs": ["127.0.0.1:1985"], ##如果需要多機房訪問,可以將將此地址修改爲具體的ip地址
"interval": 60,
"timeout": 1000
}
}
(3)urlooker alarm組件
alarm 組件是用於判斷是否觸發報警條件的組件,alarm會定期從web端獲取策略列表,接收到web端發送的檢測數據後,對數據進行判斷,若觸發則產生event數據,將events數據存到redis中
# set $GOPATH and $GOROOT ##設置環境變量
mkdir -p $GOPATH/src/github.com/urlooker
cd $GOPATH/src/github.com/urlooker
git clone https://github.com/URLooker/alarm.git
cd alarm
./control build
./control start
修改alarm/cfg.json
{
"debug": false,
"remain":10, #配置策略中支持的最大連續次數
"rpc":{
"listen":"0.0.0.0:1986"
},
"web": {
"addrs": ["127.0.0.1:1985"], #可以填多個web地址
"timeout": 300,
"interval": 60
},
"alarm": {
"enabled": true,
"minInterval": 180,
"queuePattern": "event",
"redis": {
"dsn": "127.0.0.1:6379",
"maxIdle": 5,
"connTimeout": 20000,
"readTimeout": 20000,
"writeTimeout": 20000
}
},
"queue": {
"sms": "/sms",
"mail": "/mail"
},
"worker": {
"sms": 10,
"mail": 50
},
"sms": "",
"smtp": {
"addr": "mail.addr:25",
"username": "[email protected]",
"password": "",
"from": "[email protected]"
}
}
至此urlooker已經部署完成
web/control start
alarm/control start
agent/control start
初始賬號密碼:admin/Password 同時也可以註冊管理員賬號進行登陸管理操作。
打開瀏覽器訪問 http://127.0.0.1:1984 即可