Zabbix5系列-监控Windows主机 (三)-CPU温度自动发现

一、参考

参考另一篇博文配置Windows代理程序
Zabbix5系列-监控Windows主机 (三)

二、CPU温度监控(自动发现版)

2.1 由于Windows无法直接读取温度信息,所以用C#写了个脚本调用OpenHardwareMonitor库来进行温度读取,并匹配自动发现
编译好的程序:CPU温度zabbix自动发现脚本
源代码:

using Newtonsoft.Json.Linq;
using OpenHardwareMonitor.Hardware;
using System;
using System.IO;

namespace cpu_temp
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length >= 1)
            {
                if (args[0] == "discovery")
                {
                    Computer computer = new Computer();
                    computer.CPUEnabled = true;
                    computer.Open();
                    JObject r = new JObject();
                    JArray data = new JArray();
                    // 遍历所有硬件
                    for (int i = 0; i < computer.Hardware.Length; i++)
                    {
                        // 如果发现CPU
                        if (computer.Hardware[i].HardwareType == HardwareType.CPU)
                        {
                            // 遍历传感器
                            for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)
                            {
                                // 如果发现温度
                                if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature)
                                {
                                    JObject cpu = new JObject();
                                    cpu.Add("{#INDEX}", data.Count + 1);
                                    cpu.Add("{#CPUID}", i.ToString());
                                    cpu.Add("{#CPUNAME}", computer.Hardware[i].Sensors[j].Name);
                                    cpu.Add("{#CPUTEMP}", computer.Hardware[i].Sensors[j].Value.ToString());
                                    data.Add(cpu);
                                }
                            }
                        }
                    }
                    computer.Close();
                    r.Add("data", data);
                    Console.Write(r.ToString());
                    File.WriteAllText("cpu.temp", r.ToString());
                }else{
                    if (File.Exists("cpu.temp"))
                    {
                        JObject json = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(File.ReadAllText("cpu.temp"));
                        foreach (var item in json.Value<JArray>("data"))
                        {
                            if (args[0] == item.Value<string>("{#INDEX}"))
                            {
                                Console.Write(item.Value<string>("{#CPUTEMP}"));
                            }
                        }
                    }
                }
            }
        }
    }
}

2.2 复制程序至agent2安装目录
在这里插入图片描述

2.3 打开命令提示符测试读取

cd /d "C:\Program Files\Zabbix Agent 2"
cpu_temp_discovery.exe discovery
cpu_temp_discovery.exe 1

在这里插入图片描述

2.4 打开zabbix_agent2.conf配置文件增加用户自定义参数
参考:用户自定义参数
自定义参数:

UserParameter=cpu.temp.discovery[*],"C:\Program Files\Zabbix Agent 2\cpu_temp_discovery.exe" $1

在这里插入图片描述

2.5 打开命令提示符重启服务

sc stop "Zabbix Agent 2"
sc start "Zabbix Agent 2"

在这里插入图片描述
2.6 保存模板内容为windows_temperature.yaml并导入zabbix

windows_temperature.yaml模板:

zabbix_export:
  version: '5.4'
  date: '2022-06-10T10:47:13Z'
  groups:
    -
      uuid: 7df96b18c230490a9a0a9e2307226338
      name: Templates
  templates:
    -
      uuid: 4f0aa5b74bfa4d3993b40074ed8e8604
      template: 'Windows Temperature by Zabbix agent'
      name: 'Windows Temperature by Zabbix agent'
      groups:
        -
          name: Templates
      discovery_rules:
        -
          uuid: 983f5adea86d4cee9560141b7ebb5cec
          name: CPU温度自动发现
          key: 'cpu.temp.discovery[discovery]'
          lifetime: 3d
          item_prototypes:
            -
              uuid: 89f8911e181c4eb0b382730b102a6906
              name: 'CPU {#CPUID}: {#CPUNAME} 温度'
              key: 'cpu.temp.discovery[{#INDEX}]'
              history: 30d
              value_type: FLOAT
              units: °C
              tags:
                -
                  tag: CPU
                  value: 温度
              trigger_prototypes:
                -
                  uuid: 4824f569e1f3428391b39854120222cf
                  expression: 'avg(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)<{$CPU_TEMP_CRIT_LOW:""}'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: 'min(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)>{$CPU_TEMP_CRIT_LOW:""}+3'
                  name: 'CPU {#CPUID}: {#CPUNAME} 温度太低: >{$CPU_TEMP_CRIT_LOW:""}℃'
                  opdata: '{ITEM.LASTVALUE1}'
                  priority: AVERAGE
                -
                  uuid: 8344c07558274769a08abd4c3f9b2e22
                  expression: 'avg(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)>{$CPU_TEMP_CRIT:""}'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: 'max(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)<{$CPU_TEMP_CRIT:""}-3'
                  name: 'CPU {#CPUID}: {#CPUNAME} 温度高于临界值: >{$CPU_TEMP_CRIT:""}℃'
                  opdata: '{ITEM.LASTVALUE1}'
                  priority: AVERAGE
                -
                  uuid: 2d0c380a8c61489eabfdb0ef2a5de4e5
                  expression: 'avg(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)>{$CPU_TEMP_WARN:""}'
                  recovery_mode: RECOVERY_EXPRESSION
                  recovery_expression: 'max(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)<{$CPU_TEMP_WARN:""}-3'
                  name: 'CPU {#CPUID}: {#CPUNAME} 温度高于警告值: >{$CPU_TEMP_WARN:""}℃'
                  opdata: '{ITEM.LASTVALUE1}'
                  priority: WARNING
                  dependencies:
                    -
                      name: 'CPU {#CPUID}: {#CPUNAME} 温度高于临界值: >{$CPU_TEMP_CRIT:""}℃'
                      expression: 'avg(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)>{$CPU_TEMP_CRIT:""}'
                      recovery_expression: 'max(/Windows Temperature by Zabbix agent/cpu.temp.discovery[{#INDEX}],5m)<{$CPU_TEMP_CRIT:""}-3'
          graph_prototypes:
            -
              uuid: 83f34ee492224bb893839fa2f45d15ab
              name: 'CPU {#CPUID}: {#CPUNAME} 温度'
              yaxismin: '-5'
              yaxismax: '120'
              ymin_type_1: FIXED
              ymax_type_1: FIXED
              graph_items:
                -
                  sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: E64A19
                  item:
                    host: 'Windows Temperature by Zabbix agent'
                    key: 'cpu.temp.discovery[{#INDEX}]'
      macros:
        -
          macro: '{$CPU_TEMP_CRIT}'
          value: '85'
          description: 'CPU高温度临界值 单位: ℃'
        -
          macro: '{$CPU_TEMP_CRIT_LOW}'
          value: '10'
          description: 'CPU低温度临界值 单位: ℃'
        -
          macro: '{$CPU_TEMP_WARN}'
          value: '70'
          description: 'CPU高温度警告值 单位: ℃'

导入模板
在这里插入图片描述
2.7 新建主机并关联模板
在这里插入图片描述

在这里插入图片描述
2.8 等待几分钟后成功发现监控项、触发器、图形
在这里插入图片描述
2.9 查看数据是否获取成功
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。 Zabbix 2.4.4 更新**志: 新功能: [ZBXNEXT-2354]分离VMware的性能收藏家基于统计的检索来自VMware的数据检索,并添加到自定义的监控性能计数器项目(抽头) [ZBX-1357]启用中文(中国)区域设置为默认显示(Richlv) [ZBX-1357]更新葡萄牙语(巴西),中文(中国),**语,韩语,波兰​​语,俄语和斯洛伐克翻译;由于翻译的zabbix(Richlv) [ZBXNEXT-2160]增加了支持的网络发现和行动的条件扩展IP范围(伊沃,萨沙,雨刮) Bug修复: [ZBX-9284]添加ZABBIX**志文件锁定,以避免在**志文件不完整的旋转记录(伊戈尔) [ZBX-591]添加接口(SourceIP),用于网络监控,警报(EZ短信),VMware监控和简单的检查(HTTPS服务)传出连接(伊戈尔) [ZBX-9143] Windows下提高proc.num处理多个进程(dimir) [ZBX-9232]固定不完整的事件**志消息(伊戈尔) [ZBX-9257]固定显示缺少触发上下文菜单的历史联系(伊沃) [ZBX-9257]新增失踪**前缀触发上下文菜单项之前,如果触发属于多个**(伊沃) 主要特点: - 安装与配置简单,学**成本低 - 支持多语言(包括中文) - 免费开源 - 自动发现服务器与网络设备 - 分布式监视以及WEB集中管理功能 - 可以无agent监视 - 用户安全认证和柔软的授权方式 - 通过WEB界面设置或查看监视结果 - email等通知功能 等等 主要功能: - CPU负荷 - 内存使用 - 磁盘使用 - 网络状况 - 端口监视 - **志监视
要在Zabbix监控Windows CPU温度,可以按照以下步骤操作: 1. 确保已在目标Windows服务器上安装了Zabbix Agent。如果未安装,请下载并安装最新版本的Zabbix Agent。 2. 在Zabbix服务器上,登录到Web界面,并导航到“配置”>“主机”>“创建主机”。 3. 在名称字段中,键入要监控Windows服务器的名称。 4. 在“可见名称”字段中,输入您想要显示的可见名称。 5. 选择或创建一个主机组,此主机将归类到该组中。 6. 在“Agent”选项卡中,将监控模式更改为“主动”模式。 7. 在“IP地址”字段中,输入要监控Windows服务器的IP地址。 8. 在“宏”选项卡中,添加一个宏,以定义您的主机上的{$CPUTEMP}宏。这将用于从Windows服务器获取CPU温度。 9. 单击“添加”按钮,然后单击“更新”按钮保存配置并返回到主机列表。 10. 在主机列表中,找到刚刚创建的主机,并单击其名称。 11. 单击“模板”选项卡,并单击“选择”按钮。选择具有适当的Windows模板,并单击“添加”按钮。 12. 返回到主机列表,并等待一段时间,以使Zabbix Agent开始读取和发送有关Windows服务器的信息。 13. 之后,您可以在Zabbix服务器上通过导航到“监控”>“最新数据”>“选择所需的主机”来查看CPU温度数据。请选择“system.cpu.temp[]”来查看CPU温度。 通过上述步骤配置Zabbix监控Windows CPU温度后,您将能够轻松地查看和记录Windows服务器的CPU温度数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Halyace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值