Zabbix 上Windows性能监控

背景信息

最近在重新看一些关于windows 性能的书籍,对于我这样一个原来使用SCOM监控的懒人来说,Zabbix 上自带的windows OS template 的模板实在是不够用,因为之前SCOM监控包(微软出的,把所有工作都做了,我只需要按需启用规则和告警即可)。

默认的Zabbix 性能数据只有Avg Latency,平均的数据也不准,想看下磁盘的Latency以及IOPS要自己动手,看了下zabbix 中windows performance Counter 的语法,我略有退缩了。全是用数字表示的性能计数器的CounterCategory 以及 CounterName。

自带磁盘相关的统计只有传输速度,以及平均延迟。

如果要监控其他的性能计数器,它们的名称是什么,作用是什么?能否有个清单可以快速搜索?

操刀解决

好在powershell 书写比较顺手,写了下面一个函数,整合了zabbix 的性能计数器的语法。

function Get-PerfCounterDesc{
    [cmdletbinding()]
    param(
        [switch]$show
    )

    $Categories = [System.Diagnostics.PerformanceCounterCategory]::GetCategories()
    $SingleInstanceCategories = $Categories | Where-Object {$_.CategoryType -eq "SingleInstance"}
    $MultiInstanceCategories =  $Categories| Where-Object {$_.CategoryType -eq "MultiInstance"} 

    $SingleInstanceCounters = $SingleInstanceCategories | ForEach-Object {
        (new-object System.Diagnostics.PerformanceCounterCategory($_.CategoryName)).GetCounters()
    }
    $MultiInstanceCounters = $MultiInstanceCategories | ForEach-Object {
        $category=new-object System.Diagnostics.PerformanceCounterCategory($_.CategoryName)
        if($category.InstanceExists(‘_Total‘)){
            $category.GetCounters(‘_Total‘)
        }elseif($category.InstanceExists(‘Total‘)){
            $category.GetCounters(‘Total‘)
        }else{
            $instanceNames=$category.GetInstanceNames()
            if($instanceNames.count -gt 0){
                $category.GetCounters($instanceNames[0])
            }
        }
    }

    $AllCounters = $MultiInstanceCounters + $SingleInstanceCounters
    $key="HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009"

    $counters=Get-ItemPropertyValue -Path $key -Name "counter"
    [email protected]{}

    for ($i=0;$i -lt $counters.count;$i=$i+2){
        if($counters[$i+1] -and -not $Dict.ContainsKey($counters[$i+1])){
            $Dict.add($counters[$i+1],$counters[$i])
        }
    }
    Write-Debug $dict.keys.count
    $result=$AllCounters | Sort-Object Categoryname,Countername|
            Select-Object CategoryName,
            Countername,
            @{n="zabbixPerfCounter";e={‘perf_counter["\{0}({{#ReplaceThis}})\{1}"]‘ -f $dict[$_.CategoryName],$dict[$_.Countername]}},
            @{n="categoryNum";e={$Dict[$_.CategoryName]}},
            @{n="CounterNum";e={$Dict[$_.Countername]}},
            CategoryHelp,
            CounterHelp

    if($show){
        $result|Out-GridView
    }else{
        $result
    }
}

怎么用呢?把上面函数直接加到个人的powershell 配置文件,也就是在powershell 控制台notepad $profile ,把内容粘贴进去,然后保存,然后设置set-executionpolicy remotesigned以让自定义非签名的脚本可以运行。

新起一个powershell ,直接敲Get-PerfCounterDesc -show, 可以对结果进行各种过滤。其中zabbixPerfCounter 列,就是生成的zabbix 上使用的key,其中的{#replaceThis} 请替换成计数器的实例名称。比如_total.

然后我在zabbix 模板中加入了下面的计数器来显示磁盘IOPS 以及Latency

item prototype

items

还需要对应更改Grafana

## 附带资源及参考

原文地址:https://blog.51cto.com/yoke88/2440451

时间: 2024-08-23 21:52:32

Zabbix 上Windows性能监控的相关文章

windows 性能监控

标 题: windows 性能监控之VC编译snmp作 者: itdef链 接: http://www.cnblogs.com/itdef/p/4003599.html 欢迎转帖 请保持文本完整并注明出处 windows性能监控可以使用如下几种方法: 一.自己C++调用APi .获取诸如 1.进程的空闲及计算时间对比计算CPU占用率 2.磁盘空闲率 3.遍历进程各种信息 4注册表查询安装软件等.这个之前在 <ProcessHacker学习笔记> http://www.cnblogs.com/i

zabbix之web性能监控

zabbix之web性能监控 设置: 原文地址:http://blog.51cto.com/wsw26/2069216

zabbix上添加交换机监控记事

? zabbix上添加交换机监控记事 ? 第一次使用zabbix来添加监控华为s5720交换机,根本找不到头绪,像个无头的苍蝇一样的百度来处理,结果都没有任何效果,给自己增加了很多痛苦和心烦,增加不少的白发. 经过询问前任,才发现添加交换机监控的门道,为此我这边记录一下: 第一:先打开zabbix监控画面,选择菜单:configuration--templates,点击create template,并输入名字及属于的groups组,说明,点击update,如下: 第二:添加applicatio

性能测试工具LoadRunner32-LR之windows性能监控Perfmon

Perfmon是啥? Perfmon提供了图表化的系统性能实时监视器.性能日志和警报管理,可以用于监视CPU使用率.内存使用率.硬盘读写速度.网络速度等 性能分析方法 内存分析方法 内存分析用于判断系统有无内存瓶颈,是否需要通过增加内存等手段提高系统性能表现. 主要方法和步骤: 1.首先查看Memory:%Committed Bytes in Use指标 如果该指标比例比较大,系统可能出现了内存方面的问题,需要继续下面步骤进一步分析.另外也可以查看Available Bytes,如果该值小说明可

如何在Zabbix上安装MySQL监控插件PMP

PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件.支持Nagios,Cacti.从PMP 1.1开始,支持Zabbix. 下面,看看如何在Zabbix上安装PMP. 配置Zabbix Agent 下载PMP 下载地址:https://www.percona.com/downloads/percona-monitoring-plugins/ 因为我的Linux版本是RHEL 6.7,故选择RPM包 # wget https://www

Zabbix 利用Windows性能监视器添加对系统各项资源监控

笔者今天受一个帖子的启发,发现可以使用Windows的性能监视器监控基本上所有的系统资源情况,下面是教程: 性能监视器位置在 控制面板-管理工具中 打开后默认就一项CPU占用的监控,下面以添加硬盘空闲时间做示例 1:监控图形上面右键 添加计数器 2:然后找到PhysicalDisk项 选择%Idle Time,点击添加,不知道项目的含义可以点击左下角的 显示描述 3:接着就能在监控图形上面看到空闲率的图形了,可以看到和任务管理器显示的一致 4:确认一致后,在图形上面 右键-属性,可以看到有几个添

zabbix上的Web监控

Zabbix还可以进行web站点的可用性检测,创建web监控需要先定义一个web方案(scenarios) web方案包括一个或多个HTTP请求或"步骤(step)" 步骤(step)的执行过程按照预先定义的顺序进行执行 通过web监控可实现获取如下信息: 整个web方案中所有的步骤的平均下载速度 失败的步骤号 失败的报错信息 在web方案的具体步骤中,可以按需使用如下信息 该步骤的下载速度 回应时间 回应状态码 Zabbix可以检测获取到的HTML页面中是否包含预设的字符串,也可以实

zabbix对windows的监控

1.首先需要下载zabbix_agents.rar文件 2.将zabbix_agents.rar解压到C:\下 3.根据你当前windows的版本选择64位还是32位的进行安装 4.更改配置文件\conf\zabbix_agentd.win.conf Server=192.168.244.155 ListenPort=10050 Hostname=BSXTGBF7WX1FODH   --主机名 5.安装客户端 cmd 进入命令行模式(注意用管理员运行cmd),我电脑是64位的,所以我选择的是64

windows性能监控

see also:http://www.cnblogs.com/upDOoGIS/archive/2010/11/19/1881970.html CPU Processor : % Processor Time 当前所有进程的处理器时间[即CPU使用率],如果该值持续超过95%,CPU是瓶颈.% Processor Time值=100% - Idle process时间比例 [即:空闲线程(Idle Thread)],CPU没事的时候就执行空闲线程. System Processor Queue