1、Total No 280December 2022冶金设备METALLURGICAL EQUIPMENT总第 280 期2022 年 12 月第 6 期基于 Prometheus 的高炉控制系统服务器监控吴建明许辉孙圣明(上海梅山钢铁股份有限公司炼铁厂江苏南京 210039)摘要介绍了 Prometheus 在高炉控制系统的监控应用,为工程师掌握分析服务器运行状态提供了极大便利。使用 windows_exporter 采集并统计 Windows 系统下的 CPU、内存、磁盘和网络等指标数据,采用Grafana 将数据以图表形式可视化,有助于工程师极大便利地掌控服务器运行状态。通过对指标数据持续
2、收集、统计和数据趋势分析,有利于控制系统故障分析与定位,保证高炉生产正常运行。关键词Prometheus服务器HMI监控中图法分类号TF325 6文献标识码BDoi:10.3969/j.issn.1001 1269.2022.06.025Server Monitoring of Blast Furnace Control Systemin Blast Furnace based on PrometheusWu JianmingXu HuiSun Shengming(Shanghai Meishan Iron Steel Co,Ltd,Nanjing 210039)ABSTRACTThis pa
3、per introduces the monitoring application of Prometheus in the blast furnace controlsystem,using windows_exporter to collect and count the CPU,memory,disk,network and other metrics dataunder the Windows system,and using Grafana to visualize the data in the form of charts,which provides greatconvenie
4、nce for engineers to grasp and analyze the running state of the server Through the continuous collection,statistics and data trend analysis of metrics data,it is conducive to analyze and locate faults of the control systemand ensures the normal operation of blast furnace productionKEYWORDSPrometheus
5、ServerHMIMonitor1前言梅山钢铁高炉 HMI 使用了多台服务器,服务器的稳定运行是高炉生产稳定顺行的有力保障,以四号高炉为例,共有四台服务器,为了保证服务器的稳定可靠运行,必须及时掌握高炉控制系统服务器的运行状态。目前的主要手段依靠工程师定期到现场进行检查,掌握运行状态,比如磁盘快满了,内存使用率过高了,CPU 使用率过高等问题。存在的问题是,工程师必须到现场,一台设备一台设备的依次检查,从而得到其运行状况,而且只能知晓某个时间点的状况,历史状态无法知晓。为了解决该问题,使用 Prometheus 对高炉区域的服务器进行了指标监控,及时掌握服务器的运行状态,出现异常及时知晓,及时
6、进行应对处理,最小程度降低服务器出现故障带来对生产的影响。2网络架构本文以梅钢四号高炉为例,介绍 Prometheus在工业控制系统服务器指标监控的应用。四号高炉的网络架构如图 1 所示,四号高炉HMI 系统采用 Wonderware 公司的系统平台,HMI客户端通过两台 HMI 服务器访问 PLC,生产过程历史数据进行集中管理,存储在历史数据服务器311作者简介:吴建明,男,1971 年生,硕士,高级工程师,邮箱:600984 baosteel com上,HMI 客户端通过 HMI 控件来展示历史曲线。GR 作为系统平台的管理者,承担 HMI 画面的组态,修改,发布等功能,其中需要监控的服务
7、器如表 1 所示。图 1四号高炉控制系统网络架构表 1四号高炉服务器序号服务器主机名IP 地址操作系统备注1HMI01192 168 74 2Windows Server 2016HMI 服务器 12HMI02192 168 74 3Windows Server 2016HMI 服务器 23DATA_SERVER192 168 74 4Windows Server 2016历史数据服务器4GR192 168 74 5Windows Server 2016GR 服务器3Prometheus 简介Prometheus1 7 是一个开源的系统监控和告警软 件,2012 年 开 始 由 前 Googl
8、e 工 程 师 在Soundcloud 以开源软件的形式进行研发,作为一款当下流行且成熟的系统监控软件,该软件能更好地与容器平台、云平台配合,在云平台上得到广泛应用。自 2012 年启动以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。Prometheus 收集并存储目标服务器的指标作为时间序列数据,即指标信息与记录它的时间戳一起存储,还有可选的称为标签的键值对。图 2 展示了 Prometheus 的架构和它的一些生态系统组件。包括核心的 Prometheus server 组件,负责抓取和存储时间
9、序列数据;负责数据抓取的客户端库;支持自定义数据抓取的 Pushgateway;一系列预定义好的数据抓取模块,如 HAProxy,StatsD,Graphite 等;处理告警的告警管理器等。这些组件从服务器中提取指标数据,要么直接提取,要么通过一个 Pushgateway 获取。它将所有采集的数据存储在本地 TSDB(Time Series Database,时间序列数据库),并按照一定规则从现有数据中进行聚合操作,记录新的时间序列,或者生成告警。数据最终通过 Grafana4,8 进行展示,或通过API 客户端来可视化收集的数据。Prometheus 相较于 Zabbix,Nagios 而言
10、,具有如下优点:1)易于管理。Prometheus 核心及大多数组件都是用 Go 语言编写的,只有一个单独的二进制可执行文件,不存在任何的第三方依赖,这很容易构建和部署。2)基于 Prometheus 丰富的 Client 库,用户可以轻松的在应用程序中添加对 Prometheus 的支持,从而让用户可以获取服务和应用内部真正的运行状态。4112022 年 12 月第 6 期总第 280 期冶金设备3)Prometheus 内置了一个强大的数据查询语言 PromQL。4)Prometheus 还具有高效,易于集成,具有良好的开放性和可扩展性等优点。图 2Prometheus 架构4监控系统部署
11、41Prometheus server 部署得益于 Go 语言编译生成的二进制软件包文件,Prometheus 的部署比较容易,从官方网站下载二进制软件包文件,这里存放在/home/user/文件夹下(这里的 user 为实际的用户名),解压后得到/home/user/prometheus 文 件 夹,所 有 的 运 行Prometheus server 所需要的文件全在该文件夹下,要运行 Prometheus server,只需要执行/home/user/prometheus/prometheus,并使用参数指定配置信息即可。实际部署时,笔者将其部署为 systemd 服务的形式,便于管理和
12、维护,并将该服务设置为开机自启动。编辑如下的 systemd 服务文件并上传至/etc/systemd/system 文件夹目录下。UnitDescription=Prometheus ServerDocumentation=https:/prometheus io/docs/introduction/overview/After=network online target ServiceUser=userRestart=on failureExecStart=/home/user/prometheus/prometheus config file=/home/user/prometheus/
13、prometheus yml storage tsdb path=/home/user/prometheus/data storage tsdb retention time=7d InstallWantedBy=multi user target这 里 指 定 的 配 置 信 息 config file 指 定Prometheus 配置文件,storage tsdb path 指定将时序数据存在/home/user/prometheus/data 文件夹目录下,storage tsdb retention time 指定只保留 7天的数据,过期数据自动删除。42Windows 系统指标采集因
14、为 高 炉 服 务 器 安 装 的 操 作 系 统 是Windows,所以需要从 Windows 系统采集指标数据,并 存 入Prometheus的TSDB数 据 库。Prometheus 官网没有提供针对 Windows 系统的指标数 据 采 集 软 件 包,但 是 Prometheus 社 区 在Github 上维护了一个开源的 windows_exporter9,511吴建明等:基于 Prometheus 的高炉控制系统服务器监控2022 年 12 月第 6 期专门用于采集安装 Windows 操作系统主机的指标数据。windows_exporter 可以采集多达几十种指标数据,在高炉控
15、制系统应用场景笔者选取了表2 所示的指标数据。在 Windows 操作系统下安装windows_exporter 时,在每台服务器命令行执行命令。msiexec/i windows_exporter msi ENABLED_COLLECTORS=cpu,cs,logical_disk,memory,net,process,service,system,tcp然后将每台服务器加入到 Prometheus 的promethueus yml 配置文件中,即可开启表 2 指定的指标数据定时采集,待 Prometheus server 运行后,Prometheus server 就会主动抓取每台服务器的
16、指标数据,而不是服务器向 Prometheus server 上报指标数据。表 2windows_exporter 采集指标数据名称描述默认开启cpuCPU 使用率是cs系统属性指标是logical_disk磁盘指标是memory内存指标否net网络接口指标是os操作系统指标(内存,进程,用户等)是process每个进程的指标否service服务状态指标是system系统调用指标是tcpTCP 连接指标否43Prometheus 配置文件Prometheus 核 心 配 置 prometheus yml 是YAML 语法格式文件,YAML10 是一种标记语言,可以简单表达清单、散列表,标量等数据形态。由于 YAML 使用空白字符和分行来分隔数据,特色是 巧 妙 避 开 各 种 封 闭 符 号,特 别 适 合 用grepPythoPerlRuby 等编程语言操作。Prometheus 配置文件里定义了四个单元:global、alerting、rule_files 和 scrape_configs。global单元包含用于控制 Prometheus 服务器行为的全局设置,如指定 Prome