alarm
功能
-
處理judge 產生的告警event
-
區分告警優先級,優先處理級別比較高的告警
-
為用戶提供回調接口
-
生成告警msg
-
展示未恢復的告警
配置文件
{
"debug": true,
"uicToken": "",
"http": {
"enabled": true,
"listen": "0.0.0.0:9912" # 未恢復的告警就是通過alarm的http頁面來看的
},
"queue": {
"sms": "/sms", # 需要與sender配置成相同的,維持默認即可
"mail": "/mail"
},
"redis": {
"addr": "127.0.0.1:6379", # 與judge、sender相同的redis地址
"maxIdle": 5,
"highQueues": [
"event:p0",
"event:p1"
],
"lowQueues": [
"event:p2",
"event:p3",
"event:p4",
"event:p5",
"event:p6"
],
"userSmsQueue": "/queue/user/sms", # 這兩個queue維持默認即可
"userMailQueue": "/queue/user/mail"
},
"api": {
"portal": "http://falcon.example.com", # 內網可訪問的portal的地址
"uic": "http://uic.example.com", # 內網可訪問的uic(或fe)的地址
"links": "http://link.example.com" # 外網可訪問的links的地址
}
}
Alarm模塊收到告警事件的處理流程
-
高優先級
-
從redis list中獲取事件
-
將事件記錄在map(g.Events, event id -> event)中
-
處理callback
-
根據UIC獲取這個team的手機和郵箱列表
-
生成短信和郵件內容
-
如果優先級 < 3,則發送短信 (設置的比較死板)
-
將內容寫入『發送list』(alarm模塊只負責將需要發送的短信/郵件push至redis中,使用方自行決定如何發送)
-
-
低優先級(基本同上,只是會對短信/郵件進行合並)
-
前面相同步驟,略
-
通過UIC獲得這個team的成員
-
對於每一個用戶,將內容push至一個『中間list』
-
每一分鍾將『中間list』中的短信和郵件進行合並,然后再寫入『發送list』
-
sender
功能
調用指定的http接口發送告警信息
配置文件
{
"debug": true,
"http": {
"enabled": true,
"listen": "0.0.0.0:6066"
},
"redis": {
"addr": "127.0.0.1:6379", # 此處配置的redis地址要和后面的judge、alarm配置成相同的
"maxIdle": 5
},
"queue": {
"sms": "/sms", # 短信隊列名稱,維持默認即可,alarm中也會有一個相同的配置
"mail": "/mail" # 郵件隊列名稱,維持默認即可,alarm中也會有一個相同的配置
},
"worker": {
"sms": 10, # 調用短信接口的最大並發量
"mail": 50 # 調用郵件接口的最大並發量
},
"api": {
"sms": "http://11.11.11.11:8000/sms", # 各公司自行提供的短信發送接口,11.11.11.11這個ip只是個例子嘍
"mail": "http://11.11.11.11:9000/mail" # 各公司自行提供的郵件發送接口
}
}
links
功能
展示聚合后的告警, 當同類報警信息比較多時,alarm會把聚合后的信息發送到link,link負責展示
配置文件
# 修改一下數據庫配置,數據庫schema文件在scripts目錄
DB_HOST = "127.0.0.1"
DB_PORT = 3306
DB_USER = "root"
DB_PASS = ""
DB_NAME = "falcon_links"
# SECRET_KEY盡量搞一個復雜點的隨機字符串
SECRET_KEY = "4e.5tyg8-u9ioj"
SESSION_COOKIE_NAME = "falcon-links"
PERMANENT_SESSION_LIFETIME = 3600 * 24 * 30
# 我們可以cp config.py local_config.py用local_config.py中的配置覆蓋config.py中的配置
# 嫌麻煩的話維持默認即可,也不用制作local_config.py
try:
from frame.local_config import *
except Exception, e:
print "[warning] %s" % e