Plataforma de monitoreo Zabbix acoplando dispositivo modbus tcp

fondo:

1. No existe un equipo de monitoreo de temperatura dedicado en la sala de cómputo de la empresa. En el pasado, la temperatura de la CPU o placa base del servidor se obtenía a través de la función snmp, y la temperatura aproximada de la sala de cómputo (la diferencia entre el termómetro y el valor del servidor) se calculó de acuerdo con el valor de desviación. Ejecute tareas de alta carga, lo que resulta en una temperatura ambiente calculada extremadamente imprecisa.

2. Aunque hay juegos completos de productos de alarma de temperatura en Internet, no cumplen con los requisitos de la empresa en los siguientes aspectos:

2-1: La mayoría de los productos existentes están alarmados por correo electrónico o voz/SMS de teléfono móvil, WeChat, y nuestra empresa necesita conectarse a la plataforma interna para una alarma unificada

2-2: La mayoría de los equipos en Internet tienen un precio de 200 a 400 yuanes, y aquellos que admiten funciones en la nube deben renovar la tarifa de la plataforma (se requiere la aprobación de la compra y el reembolso todos los años, y el proceso interno es muy problemático)

Proceso de implementación:

1. Lo primero es comprar un equipo de hardware. La puerta de enlace + el sensor de temperatura costará entre 200 y 220 yuanes, como se muestra en la siguiente figura:

La imagen de la izquierda es la puerta de enlace modbus tcp, que realiza el protocolo 485 o modbus rtu al protocolo modbus tcp

La imagen de la derecha es una sonda de temperatura y humedad, que admite el protocolo modbus rtu , se conecta a la puerta de enlace a través de 485 y luego se convierte al protocolo tcp

2. Sistema y software:

· Instale Zabbix-Server versión 5.2 y superior en el sistema Linux (el protocolo modbus es compatible desde 5.2)

· zabbix-agent2 (actualmente solo la versión zabbix-agent2 es compatible con modbus, y la compatibilidad con zabbix-agent puede agregarse más adelante)

3. Aclare la lógica aquí, de lo contrario, puede tener errores o preguntas durante la configuración:

Aunque Zabbix-Server puede monitorear directamente el host monitoreado como ping, snmp, service.perf, port.perf, etc., la adquisición de datos modbus se realiza a través de zabbix-agent2, lo que significa que agent2 obtiene los datos modbus controlados de host y luego envíe el resultado de regreso a Zabbix-Server. Si el propio dispositivo modbus o la red donde se encuentra tiene una política de firewall, es necesario permitir el acceso al host agent2 (el servidor y el agente de Zabbix se pueden instalar en el mismo sistema linux)

4. Implemente Zabbix-Server, porque el sitio web oficial tiene un tutorial muy detallado, por lo que no lo describiré aquí. Aquí hay una oración: la base de datos instalada en el comando del sitio web oficial no está completa, debe instalar mariadb manualmente

· Enlace al sitio web oficial: tutorial de instalación del sitio web oficial

5. Instale zabbix-agent2. Permítame explicarlo aquí: modbus necesita el soporte de zabbix-agent2, y usamos el comando yum install zabbix-agent para instalar la versión v1 de forma predeterminada, y Zabbix-Server viene con la versión v1 del agente

· Primero desactive o desinstale la versión anterior del agente (si existe), tome centos7 como ejemplo, puede ejecutar systemctl stop zabbix-agent; yum autoremove zabbix-agent para desinstalar después de la desactivación

· Debido a que zabbix-agent2 está parcialmente escrito en lenguaje Go, depende del entorno Go. Aquí lo implementamos a través de un script de instalación de un solo clic (basado en la instalación de Centos, si es Debian, debe instalar Sudo por adelantado):

 Enlace de referencia: instalación con un solo clic del entorno go 

git clone https://gitee.com/xuthus5/golang-install-shell.git (si se informa un error, es necesario instalar git)
cd golang-install-shell
chmod +x install.sh
./install.sh

Después de que aparezca la siguiente interfaz de instalación, seleccione 0 para instalar el entorno golang y luego instálelo de acuerdo con los parámetros predeterminados :

----------------------------------
0) 安装golang环境
1) 安装gopm跨墙
2) 安装web框架
3) 安装包
4) 退出
----------------------------------
输入操作编号:0
----------------------------------
选择安装版本:
1) 1.11
2) 1.10.4
3) 1.9.7
4) 1.8.7
----------------------------------
输入安装版本编号(默认1):

~~~~~~~~~~~~~~~~~~~~~~省略很多软件安装的信息~~~~~~~~~~~~~~~~~~~~~~~

输入程序安装目录GOROOT(默认 /usr/local):
输入GOPATH目录(默认 /root/go):

 Una vez finalizada la instalación, seleccione 4 para salir

go version go1.11 linux/amd64
环境变量配置成功!请执行 source /root/.bashrc 确保配置生效
----------------------------------
0) 安装golang环境
1) 安装gopm跨墙
2) 安装web框架
3) 安装包
4) 退出
----------------------------------
输入操作编号:4

· Instalar zabbix-agent2:

# Agregue la fuente del sitio web oficial
rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpm

# Limpiar yum caché
yum limpiar todo 

# Instale agent2, el programa se ejecutará automáticamente después de la instalación y configurará automáticamente la función de inicio automático de arranque
yum install zabbix-agent2

Edite el archivo de configuración después de que la instalación sea exitosa :

# Edite el archivo de configuración
vi /etc/zabbix/zabbix_agent2.conf

# Modifique los siguientes elementos de acuerdo con el entorno actual
Hostname=
Server=
ServerActive=

# Reiniciar agent2 después de completar la configuración
systemctl restart zabbix-agent2

Agregue un host con zabbix-agent2 instalado en el servidor Zabbix-Server y agregue elementos de monitoreo modbus

· Aquí está la introducción detallada y el enlace de acceso del sitio web oficial para los elementos de monitoreo de modbus: introducción al sitio web oficial

Parámetro Descripción valores predeterminados Ejemplo
punto final Protocolo y dirección del punto final, definido como  protocol://connection_string

Posibles valores de protocolo:  rtuascii  (solo Agente 2),  tcp

Formato de cadena de conexión:

con  tcp  -  address:port
con línea serie:  rtuascii  -  port_name:speed:params
donde
'velocidad' - 1200, 9600, etc.
'parámetros' - bits de datos (5,6,7 u 8), paridad (n,e o o para ninguno/par/impar), bits de parada (1 o 2)
protocolo: ninguno  protocolo

rtu/ascii
: nombre_puerto: ninguno
velocidad: 115200
parámetros: 8n1  protocolo

tcp
: dirección: ninguno
puerto: 502
tcp://192.168.6.1:511
tcp://192.168.6.2
tcp://[::1]:511
tcp://::1
tcp://host local:511
tcp://host local
rtu:// COM1:9600:8n
ascii://COM2:1200:7o2
rtu://ttyS0:9600
ascii://ttyS1
identificación de esclavo Dirección Modbus del dispositivo para el que está diseñado (1 a 247), consulte  la Guía de implementación de mensajería MODBUS  (página 23)

El dispositivo tcp (no GW) ignorará el campo
serie: 1

tcp: 255 (0xFF)
2
función Vacío o valor de una función admitida:

1 - Leer bobina,
2 - Leer entrada discreta,
3 - Leer registros de retención,
4 - Leer registros de entrada
vacío 3
DIRECCIÓN Dirección del primer registro, bobina o entrada.

Si la 'función' está vacía, entonces la 'dirección' debe estar en el rango de:
Bobina - 00001 - 09999
Entrada discreta - 10001 - 19999
Registro de entrada - 30001 - 39999
Registro de retención - 40001 - 49999

Si la 'función' no está vacía, la ' el campo de dirección será de 0 a 65535 y se utilizará sin modificación (PDU)
función vacía: 00001

función no vacía: 0
9999
contar Recuento de 'tipo' secuenciado que se leerá del dispositivo, donde:

para entrada de bobina o discreta, el 'tipo' = 1 bit
para otros casos: (recuento*tipo)/2 = recuento real de registros para lectura
Si 'compensación' es no 0, el valor se agregará a 'recuento real'
El rango aceptable para 'recuento real' es 1:65535
1 2
tipo Data type:

for Read Coil and Read Discrete Input - bit

for Read Holding Registers and Read Input Registers:
int8 - 8bit
uint8 - 8bit (unsigned)
int16 - 16bit
uint16 - 16bit (unsigned)
int32 - 32bit
uint32 - 32bit (unsigned)
float - 32bit
uint64 - 64bit (unsigned)
double - 64bit
bit
uint16
uint64
endianness Endianness type:
be - Big Endian
le - Little Endian
mbe - Mid-Big Endian
mle - Mid-Little Endian

Limitations:
for 1 bit - be
for 8 bits - be,le
for 16 bits - be,le
be le
offset Number of registers, starting from 'address', the result of which will be discarded.

The size of each register is 16bit (needed to support equipment that does not support random read access).
0 4

· 这是根据实际环境修改后的参照表:

说明 监控项
官方给出的监控项 modbus.get[endpoint,<slaveid>,<function>,<address>,<count>,<type>,<endianness>,<offset>]
对上述的解释 modbus.get[通讯协议及地址,设备地址,功能码,寄存器地址,读取个数,数据类型,字节序,抵消] 备注:最后的字节序、抵消没弄明白是啥意思
根据实际环境修改

modbus.get[tcp://192.168.1.202:502,1,3,512,1,int16,,]

Utilice el puerto TCP 502 para acceder a la puerta de enlace 192.168.1.202

1 indica que la dirección del dispositivo es 1

3 representa el código de función, que es leer el registro de espera

512 es la dirección de registro en decimal, lo que significa 02 00 en hexadecimal

1 es el número de lecturas

· int16 indica el tipo de datos devuelto por la puerta de enlace

· El <orden de bytes> y el <desplazamiento> al final no saben lo que hacen, simplemente déjelo en blanco

Observaciones: Los parámetros anteriores necesitan usar decimal

El sensor de temperatura que utilicé da 10 veces el valor real, por lo que debe dividirse por 10 en el proceso zabbix (es decir, multiplicado por 0,1 )

· Después de configurar los elementos de monitoreo, el agente tendrá que esperar aproximadamente 1 minuto antes de usar los nuevos elementos de monitoreo. Si tiene prisa, puede ejecutar manualmente systemctl restart zabbix-agent2 para obligar a agent2 a reiniciarse y obtener nuevos elementos de monitoreo. inmediatamente:

Este es el valor de temperatura obtenido:

Durante el proceso de depuración, si la puerta de enlace modbus no responde, zabbix informa un error de puerta de enlace, etc., puede descargar la herramienta de depuración, usar la máquina como servidor de puerta de enlace y luego permitir que zabbix-agent2 acceda a la máquina y analice dónde. aparece segun los datos en la informacion

Dirección de descarga de la herramienta: asistente de depuración

Supongo que te gusta

Origin blog.csdn.net/baishikele006/article/details/123145869
Recomendado
Clasificación