forked from LittlePeng/redis-monitor
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
pengjilu
committed
May 11, 2013
1 parent
285fc4b
commit 33f9301
Showing
37 changed files
with
2,667 additions
and
496 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
from BaseController import BaseController | ||
from api.util import settings | ||
import redis | ||
|
||
class InfoListController(BaseController): | ||
|
||
def get(self): | ||
response = {} | ||
response['data']=[] | ||
for server in self.read_server_config(): | ||
info=self.getStatsPerServer(server) | ||
|
||
info.update({ | ||
"addr" : info.get("server_name")[0].replace(".", "_") + str(info.get("server_name")[1]), | ||
}) | ||
|
||
screen_strategy = 'normal' | ||
if info.get("status") == 'down': | ||
screen_strategy = 'hidden' | ||
|
||
info.update({ | ||
"screen_strategy": screen_strategy, | ||
}) | ||
|
||
#key = info.get("addr") | ||
response["data"].append(info) | ||
|
||
|
||
self.write(response) | ||
|
||
def read_server_config(self): | ||
server_list = [] | ||
redis_servers = settings.get_redis_servers() | ||
|
||
for server in redis_servers: | ||
server_list.append([server['server'],server['port']]) | ||
|
||
return server_list |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
from BaseController import BaseController | ||
from api.util import settings | ||
|
||
class SettingsController(BaseController): | ||
|
||
def get(self): | ||
server_list="" | ||
for server in settings.get_redis_servers(): | ||
server_list+= "%(server)s:%(port)s\r\n" % server | ||
|
||
sms_repl=0; | ||
sms_stats=0; | ||
try: | ||
sms=settings.get_master_slave_sms_type() | ||
sms=sms.split(',') | ||
sms_repl=(int)(sms[0]) | ||
sms_stats=(int)(sms[1]) | ||
except: | ||
pass | ||
|
||
servers = {"servers": server_list,"sms1":sms_repl,"sms2":sms_stats} | ||
self.write(servers) | ||
|
||
def post(self): | ||
try: | ||
server_list=self.get_argument("servers") | ||
sms1=(int)(self.get_argument("sms1")) | ||
sms2=(int)(self.get_argument("sms2")) | ||
sms= "%s,%s" %(sms1,sms2) | ||
|
||
servers=[] | ||
for server in server_list.split('\n'): | ||
eps=server.split(':') | ||
if(len(eps)!=2): | ||
raise Exception('server Ip format error.'); | ||
ip=eps[0] | ||
port=eps[1] | ||
|
||
servers.append({'server':ip,'port':(int)(port)}) | ||
settings.save_settings(servers, sms) | ||
self.write({"status":200}) | ||
except Exception,ex: | ||
self.write({"status":500,"error":ex.message}) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
from BaseController import BaseController | ||
import tornado.ioloop | ||
import tornado.web | ||
import dateutil.parser | ||
import datetime | ||
|
||
class StatusController(BaseController): | ||
|
||
def get(self): | ||
return_data = {} | ||
return_data['data']=[] | ||
|
||
server = self.get_argument("server") | ||
from_date = self.get_argument("from", None) | ||
to_date = self.get_argument("to", None) | ||
|
||
if from_date == None or to_date == None or len(from_date) == 0: | ||
end = datetime.datetime.now() | ||
delta = datetime.timedelta(seconds=300) | ||
start = end - delta | ||
else: | ||
start = dateutil.parser.parse(from_date) | ||
end = dateutil.parser.parse(to_date) | ||
|
||
data = self.stats_provider.get_status_info(server, start, end) | ||
|
||
for item in data: | ||
row=item[1] | ||
timestamp = datetime.datetime.fromtimestamp(int(row['timestamp'])) | ||
row['time']= timestamp.strftime('%Y-%m-%d %H:%M:%S') | ||
return_data['data'].append(row) | ||
|
||
self.write(return_data) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,46 @@ | ||
import json | ||
import os | ||
|
||
curpath='' | ||
|
||
def get_settings(): | ||
"""Parses the settings from redis-live.conf. | ||
""" | ||
# TODO: Consider YAML. Human writable, machine readable. | ||
return json.load(open("redis-live.conf")) | ||
global curpath | ||
if(curpath==''): | ||
curpath=os.path.abspath('.') | ||
|
||
return json.load(open(curpath+ "/redis_live.conf")) | ||
|
||
def get_redis_servers(): | ||
config = get_settings() | ||
return config["RedisServers"] | ||
|
||
def get_redis_alerturi(): | ||
config = get_settings() | ||
return config["sms_alert"] | ||
|
||
def get_redis_stats_server(): | ||
config = get_settings() | ||
return config["RedisStatsServer"] | ||
|
||
def get_data_store_type(): | ||
config = get_settings() | ||
return config["DataStoreType"] | ||
|
||
def get_master_slave_sms_type(): | ||
config = get_settings() | ||
return config['master_slave_sms'] | ||
|
||
def save_settings(redisServers,smsType): | ||
config = get_settings() | ||
config["RedisServers"]= redisServers; | ||
config['master_slave_sms']=smsType; | ||
|
||
data = json.dumps(config) | ||
data = data.replace('}', '}\r\n') | ||
output = open(os.path.abspath('.') + "/redis_live.conf", "w") | ||
output.truncate() | ||
output.write(data) | ||
output.close() |
Oops, something went wrong.