热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

利用windows性能计数器进行服务器性能监控示例分享

这篇文章主要介绍了利用windows性能计数器进行服务器性能监控的方法,大家可以参考扩展其它功能

代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Management;
using System.Runtime.InteropServices;
using System.Data;
using System.Data.SqlClient;
using System.DirectoryServices;
using System.Collections;
using System.Configuration;
using System.Collections.Specialized;
using System.IO;

namespace MON.Client
{
    public static class SysInfo
    {
        static Dictionary dic;
        static double DiskUsePercent;
        static double SysDiskUsePercent;
        static SysInfo()
        {
            try
            {
                dic = new Dictionary();
                foreach (string setting in ConfigurationManager.AppSettings)
                {
                    var arr = ConfigurationManager.AppSettings[setting].Split('#');
                    if (arr[arr.Length - 1] == "IsCounter")
                    {
                        try
                        {
                            var pc = new PerformanceCounter(arr[0], arr[1], arr[2]);
                            dic.Add(setting, pc);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(arr[0] + "找不到");
                            Log.WriteLog(ex.Message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.WriteLog(ex.Message);
            }
        }
        static void initDiskInfo()
        {
            #region 备忘
            //只获取系统盘代码如下
            //ManagementObject CPANInfo = new ManagementObject(string.Format("win32_logicaldisk.deviceid=\"{0}\"", System.Environment.SystemDirectory.Substring(0, 2)));
            //CPANInfo.Get();
            //var s = Convert.ToDouble(CPANInfo["Size"]);
            //var l = Convert.ToDouble(CPANInfo["FreeSpace"]);
            //var d = (s - l) / s * 100;
            //return d;
            #endregion
            try
            {
                DriveInfo[] drives = DriveInfo.GetDrives();
                long totalSize = 0;
                long freeSize = 0;
                long CTotalSize = 0;
                long CFreeSize = 0;
                foreach (DriveInfo drive in drives)
                {
                    if (drive.DriveType == DriveType.CDRom)
                    {
                        continue;
                    }
                    totalSize += drive.TotalSize;
                    freeSize += drive.TotalFreeSpace;
                    if (drive.Name.StartsWith(System.Environment.SystemDirectory.Substring(0, 2)))
                    {
                        CTotalSize += drive.TotalSize;
                        CFreeSize += drive.TotalFreeSpace;
                    }
                }
                SysDiskUsePercent = (CTotalSize - CFreeSize) / (double)CTotalSize * 100;
                DiskUsePercent = (totalSize - freeSize) / (double)totalSize * 100;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.WriteLog(ex.Message);
            }
        }
        public static void Init()
        {
            //如有取数之前进行的业务可放在这里,提高性能
            initDiskInfo();
        }
        public static double GetSysInfo(string InfoKey)
        {
            try
            {
                if (dic.ContainsKey(InfoKey))
                {
                    return dic[InfoKey].NextValue();
                }
                else
                {
                    if (InfoKey == "SysDiskUsePercent")
                    {
                        return SysDiskUsePercent;
                    }
                    else if (InfoKey == "DiskUsePercent")
                    {
                        return DiskUsePercent;
                    }
                    else
                    {
                        return -1;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Log.WriteLog(ex.Message);
                return -1;
            }
        }
    }
}


推荐阅读
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文介绍如何在 FireDAC 环境下实现 FDMEMTable 字段的自动获取,为开发人员提供便捷的数据处理方式。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • openGauss每日一练:第6天 - 模式的创建、修改与删除
    本篇笔记记录了openGauss数据库中关于模式(Schema)的创建、修改和删除操作。通过这些操作,用户可以更好地管理和控制数据库对象。实验环境为openGauss 2.0.0,并使用由墨天轮提供的线上环境。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 深入解析三大范式与JDBC集成
    本文详细探讨了数据库设计中的三大范式,并结合Java数据库连接(JDBC)技术,讲解如何在实际开发中应用这些概念。通过实例和图表,帮助读者更好地理解范式理论及其在数据操作中的重要性。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
author-avatar
孤鹜1101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有