/// <summary> /// Fill Server Status to treeview /// </summary> /// <param name="trvSvrStatus"></param> public static void FillSrvStatusToList(TreeViewColumns trvSvrStatus) { List <BsonDocument> SrvDocList = new List <BsonDocument>(); foreach (String mongoSvrKey in _mongoConnSvrLst.Keys) { try { MongoServer mongoSvr = _mongoConnSvrLst[mongoSvrKey]; if (!SystemManager.GetCurrentServerConfig(mongoSvrKey).Health) { continue; } //flydreamer提供的代码 //感谢 魏琼东 的Bug信息,一些命令必须以Admin执行 if (SystemManager.GetCurrentServerConfig(mongoSvrKey).LoginAsAdmin) { BsonDocument ServerStatusDoc = ExecuteMongoSvrCommand(serverStatus_Command, mongoSvr).Response; SrvDocList.Add(ServerStatusDoc); } } catch (Exception ex) { throw ex; } } FillDataToTreeView("Server Status", trvSvrStatus, SrvDocList, 0); //打开第一层 foreach (TreeNode item in trvSvrStatus.DatatreeView.Nodes) { item.Expand(); } }
/// <summary> /// 将数据Opr放入ListView /// </summary> /// <param name="lstSrvOpr"></param> public static void FillCurrentOprToList(ListView lstSrvOpr) { lstSrvOpr.Clear(); lstSrvOpr.Columns.Add("Name"); lstSrvOpr.Columns.Add("opid"); lstSrvOpr.Columns.Add("active"); lstSrvOpr.Columns.Add("lockType"); lstSrvOpr.Columns.Add("waitingForLock"); lstSrvOpr.Columns.Add("secs_running"); lstSrvOpr.Columns.Add("op"); lstSrvOpr.Columns.Add("ns"); lstSrvOpr.Columns.Add("query"); lstSrvOpr.Columns.Add("client"); lstSrvOpr.Columns.Add("desc"); lstSrvOpr.Columns.Add("connectionId"); lstSrvOpr.Columns.Add("numYields"); foreach (String mongoSvrKey in _mongoConnSvrLst.Keys) { try { MongoServer mongoSvr = _mongoConnSvrLst[mongoSvrKey]; //感谢 魏琼东 的Bug信息,一些命令必须以Admin执行 if (!SystemManager.GetCurrentServerConfig(mongoSvrKey).Health || !SystemManager.GetCurrentServerConfig(mongoSvrKey).LoginAsAdmin) { continue; } List <String> databaseNameList = mongoSvr.GetDatabaseNames().ToList(); foreach (String strDBName in databaseNameList) { try { MongoDatabase mongoDB = mongoSvr.GetDatabase(strDBName); BsonDocument dbStatus = mongoDB.GetCurrentOp(); BsonArray doc = dbStatus.GetValue("inprog").AsBsonArray; foreach (BsonDocument item in doc) { var lst = new ListViewItem(mongoSvrKey + "." + strDBName); foreach (String itemName in item.Names) { lst.SubItems.Add(item.GetValue(itemName).ToString()); } lstSrvOpr.Items.Add(lst); } } catch (Exception ex) { SystemManager.ExceptionDeal(ex); } } } catch (Exception ex) { SystemManager.ExceptionDeal(ex); } } lstSrvOpr.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }
/// <summary> /// 获得用户当前角色 /// </summary> /// <returns></returns> public static BsonArray GetCurrentDBRoles() { BsonArray Roles = new BsonArray(); String ConnectionName = SystemManager.GetCurrentServerConfig().ConnectionName; String DBName = SystemManager.GetCurrentDataBase().Name; Roles = _mongoUserLst[ConnectionName].GetRolesByDBName(DBName); return(Roles); }
/// <summary> /// Fill Database status to ListView /// </summary> /// <param name="lstSvr"></param> public static void FillDataBaseStatusToList(ListView lstSvr) { lstSvr.Clear(); if (SystemManager.IsUseDefaultLanguage) { lstSvr.Columns.Add("DataBaseName"); lstSvr.Columns.Add("CollectionCount"); lstSvr.Columns.Add("DataSize"); lstSvr.Columns.Add("FileSize"); lstSvr.Columns.Add("IndexCount"); lstSvr.Columns.Add("IndexSize"); lstSvr.Columns.Add("ObjectCount"); lstSvr.Columns.Add("StorageSize"); } else { lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_DataBaseName)); lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_CollectionCount)); lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_DataSize)); lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_FileSize)); lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_IndexCount)); lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_IndexSize)); lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_ObjectCount)); lstSvr.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.DataBase_Status_StorageSize)); } foreach (String mongoSvrKey in _mongoConnSvrLst.Keys) { try { MongoServer mongoSvr = _mongoConnSvrLst[mongoSvrKey]; //感谢 魏琼东 的Bug信息,一些命令必须以Admin执行 if (!SystemManager.GetCurrentServerConfig(mongoSvrKey).Health || !SystemManager.GetCurrentServerConfig(mongoSvrKey).LoginAsAdmin) { continue; } List <String> databaseNameList = mongoSvr.GetDatabaseNames().ToList <String>(); foreach (String strDBName in databaseNameList) { MongoDatabase mongoDB = mongoSvr.GetDatabase(strDBName); DatabaseStatsResult dbStatus = mongoDB.GetStats(); ListViewItem lst = new ListViewItem(mongoSvrKey + "." + strDBName); try { lst.SubItems.Add(dbStatus.CollectionCount.ToString()); } catch (Exception) { lst.SubItems.Add("0"); } lst.SubItems.Add(GetSize(dbStatus.DataSize)); lst.SubItems.Add(GetSize(dbStatus.FileSize)); lst.SubItems.Add(dbStatus.IndexCount.ToString()); lst.SubItems.Add(GetSize(dbStatus.IndexSize)); lst.SubItems.Add(dbStatus.ObjectCount.ToString()); lst.SubItems.Add(GetSize(dbStatus.StorageSize)); lstSvr.Items.Add(lst); } } catch (Exception ex) { throw ex; } } }
/// <summary> /// fill Collection status to ListView /// </summary> /// <param name="lstData"></param> public static void FillCollectionStatusToList(ListView lstData) { lstData.Clear(); if (SystemManager.IsUseDefaultLanguage) { lstData.Columns.Add("CollectionName"); lstData.Columns.Add("ObjectCount"); lstData.Columns.Add("DataSize"); lstData.Columns.Add("LastExtentSize"); lstData.Columns.Add("StorageSize"); lstData.Columns.Add("TotalIndexSize"); //2012-3-6 lstData.Columns.Add("IsCapped"); lstData.Columns.Add("MaxDocuments"); lstData.Columns.Add("AverageObjectSize"); lstData.Columns.Add("PaddingFactor"); } else { lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_CollectionName)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_ObjectCount)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_DataSize)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_LastExtentSize)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_StorageSize)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_TotalIndexSize)); //2012-3-6 lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_IsCapped)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_MaxDocuments)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_AverageObjectSize)); lstData.Columns.Add(SystemManager.mStringResource.GetText(StringResource.TextType.Collection_Status_PaddingFactor)); } foreach (String mongoSvrKey in _mongoConnSvrLst.Keys) { try { MongoServer mongoSvr = _mongoConnSvrLst[mongoSvrKey]; //感谢 魏琼东 的Bug信息,一些命令必须以Admin执行 if (!SystemManager.GetCurrentServerConfig(mongoSvrKey).Health || !SystemManager.GetCurrentServerConfig(mongoSvrKey).LoginAsAdmin) { continue; } List <String> databaseNameList = mongoSvr.GetDatabaseNames().ToList <String>(); foreach (String strDBName in databaseNameList) { MongoDatabase mongoDB = mongoSvr.GetDatabase(strDBName); List <String> colNameList = mongoDB.GetCollectionNames().ToList <String>(); foreach (String strColName in colNameList) { try { CollectionStatsResult CollectionStatus = mongoDB.GetCollection(strColName).GetStats(); ListViewItem lst = new ListViewItem(mongoSvrKey + "." + strDBName + "." + strColName); lst.SubItems.Add(CollectionStatus.ObjectCount.ToString()); lst.SubItems.Add(GetSize(CollectionStatus.DataSize)); lst.SubItems.Add(GetSize(CollectionStatus.LastExtentSize)); lst.SubItems.Add(GetSize(CollectionStatus.StorageSize)); lst.SubItems.Add(GetSize(CollectionStatus.TotalIndexSize)); //2012-3-6 lst.SubItems.Add(CollectionStatus.IsCapped.ToString()); lst.SubItems.Add(CollectionStatus.MaxDocuments.ToString()); if (CollectionStatus.ObjectCount != 0) { //在某些条件下,这个值会抛出异常,IndexKeyNotFound //同时发现,这个时候Count = 0,TryCatch可能会消耗时间,所以改为条件判断 lst.SubItems.Add(GetSize((long)CollectionStatus.AverageObjectSize)); } else { lst.SubItems.Add("0"); } try { //在某些条件下,这个值会抛出异常,IndexKeyNotFound lst.SubItems.Add(CollectionStatus.PaddingFactor.ToString()); } catch (Exception) { lst.SubItems.Add("0"); } lstData.Items.Add(lst); } catch (Exception) { //throw; //TODO:排序时候会发生错误,所以暂时不对应 //lstData.Items.Add(new ListViewItem(strColName + "[Exception]")); } } } } catch (Exception ex) { throw ex; } } }
/// <summary> /// fill Collection status to ListView /// </summary> /// <param name="lstData"></param> public static void FillCollectionStatusToList(ListView lstData) { lstData.Clear(); if (SystemManager.IsUseDefaultLanguage) { lstData.Columns.Add("CollectionName"); lstData.Columns.Add("ObjectCount"); lstData.Columns.Add("DataSize"); lstData.Columns.Add("LastExtentSize"); lstData.Columns.Add("StorageSize"); lstData.Columns.Add("TotalIndexSize"); //2012-3-6 lstData.Columns.Add("IsCapped"); lstData.Columns.Add("MaxDocuments"); lstData.Columns.Add("AverageObjectSize"); lstData.Columns.Add("PaddingFactor"); } else { lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_CollectionName)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_ObjectCount)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_DataSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_LastExtentSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_StorageSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_TotalIndexSize)); //2012-3-6 lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_IsCapped)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_MaxDocuments)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_AverageObjectSize)); lstData.Columns.Add( SystemManager.MStringResource.GetText(StringResource.TextType.Collection_Status_PaddingFactor)); } foreach (String mongoSvrKey in _mongoConnSvrLst.Keys) { try { MongoServer mongoSvr = _mongoConnSvrLst[mongoSvrKey]; //感谢 魏琼东 的Bug信息,一些命令必须以Admin执行 if (!SystemManager.GetCurrentServerConfig(mongoSvrKey).Health || !SystemManager.GetCurrentServerConfig(mongoSvrKey).LoginAsAdmin) { continue; } List <String> databaseNameList = mongoSvr.GetDatabaseNames().ToList(); foreach (String strDBName in databaseNameList) { MongoDatabase mongoDB = mongoSvr.GetDatabase(strDBName); List <String> colNameList = mongoDB.GetCollectionNames().ToList(); foreach (String strColName in colNameList) { try { CollectionStatsResult CollectionStatus = mongoDB.GetCollection(strColName).GetStats(); var lst = new ListViewItem(mongoSvrKey + "." + strDBName + "." + strColName); lst.SubItems.Add(CollectionStatus.ObjectCount.ToString()); lst.SubItems.Add(GetSize(CollectionStatus.DataSize)); lst.SubItems.Add(GetSize(CollectionStatus.LastExtentSize)); lst.SubItems.Add(GetSize(CollectionStatus.StorageSize)); lst.SubItems.Add(GetSize(CollectionStatus.TotalIndexSize)); //2012-3-6 lst.SubItems.Add(CollectionStatus.IsCapped.ToString()); //https://jira.mongodb.org/browse/CSHARP-665 try { //注意:这个MaxDocuments只是在CappedCollection时候有效 lst.SubItems.Add(CollectionStatus.MaxDocuments.ToString()); } catch (Exception ex) { //溢出 lst.SubItems.Add(Int32.MaxValue.ToString()); SystemManager.ExceptionLog(ex); } lst.SubItems.Add(CollectionStatus.ObjectCount != 0 ? GetSize((long)CollectionStatus.AverageObjectSize) : "0"); try { //在某些条件下,这个值会抛出异常,IndexKeyNotFound lst.SubItems.Add(CollectionStatus.PaddingFactor.ToString()); } catch (Exception) { lst.SubItems.Add("0"); } lstData.Items.Add(lst); } catch (Exception ex) { //throw; //TODO:排序时候会发生错误,所以暂时不对应 //lstData.Items.Add(new ListViewItem(strColName + "[Exception]")); SystemManager.ExceptionDeal(ex); } } } } catch (Exception ex) { SystemManager.ExceptionDeal(ex); } } lstData.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }