You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

This page is intended to provide a NMIS Device Troubleshooting Process to Identify bad behaviors in collection for NMIS8/9 products, you can break it down into clear steps that anyone can follow and identify what's wrong with the device collection also if we have Gaps In Graphs.


Network-Management-Information-System

Device Troubleshooting Process


Diagramas de Flujo



  1. Identify the problem. The first step in troubleshooting a device issue is to identify the problem, you have to consider if the issue is in NMIS8 or NMIS9 products.
    1. Add to the support the case the product version and the servers/devices/models involved.
  2. What kind of problem are you observing. A device issue can be affected for the next reasons.
    1. Network performance, latency in the network, layer 1,2, and 3 issues.
    2. Device configuration, connectivity, SNMP configuration, and others. 
    3. Server hardware requirements, high resource utilization parameters in the server.
    4. Server configuration options, missing configuration items for server tunning.
    5. Disk performance, slow write/read times for the device collection. 
  3. Gather information, collect all the graphs, images, behaviors that can explain what the problem is.
    1. Collect support tool files The Opmantek Support Tool
      1. Execute the collect command for the support tool

        #General collection.
        /usr/local/nmis8/admin/support.pl action=collect  
        
        #If the file is big, we can add the next parameter.
        /usr/local/nmis8/admin/support.pl action=collect maxzipsize=900000000
        
        #Device collection.
        /usr/local/nmis8/admin/support.pl action=collect node=<node_name> maxzipsize=900000000
    2. If you are using NMIS8, provide the /usr/local/nmis8/var files
      1. go to /usr/local/nmis8/var directory and collect the next files

        -rw-rw----   1 nmis   nmis    4292 Apr  5 18:26 <node_name>-node.json
        -rw-rw----   1 nmis   nmis    2695 Apr  5 18:26 <node_name>-view.json


      2. obtain update/collect outputs this information will upload to the support case:

        /usr/local/nmis8/bin/nmis.pl type=update node=<node_name> model=true debug=9 force=true > /tmp/node_name_update_$(hostname).log
        /usr/local/nmis8/bin/nmis.pl type=collect node=<node_name> model=true debug=9 force=true > /tmp/node_name_collect_$(hostname).log
  4. Replicate the problem. If possible you have to define, what the steps are to replicate the problem.
  5. Identify symptoms. To this point, you are able to see a specific problem and what the symptoms are.
  6. Determinate if something has changed, is important to verify with your team if something has changed, a good way to see this behavior is monitoring the performance graph for devices and server


  1. It is an individual problem?, verify if this behavior is happening in a single device/server.

Network performance - Server.

Introduccíon.

Esta sección esta enfocada a realizar la revisión y validación del estado del servidor en general, por lo que solo nos centraremos en verificar el comportamiento he histórico, por lo que nos apoyaremos del sistema de monitoreo.

Verificar

Procedemos a acceder a la GUI de NMIS.

  • Nos aseguramos que los datos del tablero Metrics este normal, los valores de Metric, Reachability, interfaceAvail y Healt se encuentren en el rango de 70% - 100% con esto nos aseguramos que el servidor esta trabajando correctamente y el valor de Response Time se mantenga lo mas bajo posible.

  • Vista del nodo LocalHost: Se verificara que el estatus del nodo este en alcanzable, asi mismo revisar las secciones en los recuadros, estas metricas indicaran si el servidor presenta alguna falla, o degradación en servicios monitoreados, el servidor debe de encontrarse en perfectas condiciones para ejecutar correctamente el sistema de monitoreo.

  • Vista de las graficas referentes a la red (Response Time in miliseconds, IP Utilisation, TCP Connection, TCP Segments) nos ayudara a visualizar el comportamiento del servidor en un periodo de 2 dias, por lo que tambien se podrá consultar un rango de fechas para mayor precisión.


  • d
  • d



Device configuration. 

Introduccíon.


Verificar

ping

trace

mtr

snmpwalk

Server hardware requirements.

Introduccion


Top

Abrimos una consola y simplemente ejecutamos el comando:

top

Nos va a aparecer una interfaz en modo texto que se va a ir actualizando cada 3 segundos. Muestra un resumen del estado de nuestro sistema y la lista de procesos que se están ejecutando. La salida que obtengo en mi ordenador es la siguiente:

top - 12:50:01 up 62 days, 22:56,  5 users,  load average: 4.76, 8.03, 4.34
Tasks: 412 total,   1 running, 411 sleeping,   0 stopped,   15 zombie
Cpu(s):  6.8%us,  3.8%sy,  0.2%ni, 74.4%id, 28.2%wa,  0.1%hi,  0.5%si,  0.0%st
Mem:  20599548k total, 18622368k used,  1977180k free,   375212k buffers
Swap:  6669720k total,  3536428k used,  3133292k free, 10767256k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                     
26306 root      20   0  478m 257m 1900 S  3.9  1.3   0:08.21 nmis.pl                                                                     
15522 root      20   0  626m 373m 2776 S  2.0  1.9  71:45.09 opeventsd.pl                                                                
27285 root      20   0 15280 1444  884 R  2.0  0.0   0:00.01 top                                                                         
    1 root      20   0 19356  308  136 S  0.0  0.0   1:07.65 init                                                                        
    2 root      20   0     0    0    0 S  0.0  0.0   0:02.14 kthreadd                                                                    
    3 root      RT   0     0    0    0 S  0.0  0.0  17359:19 migration/0                                                                 
    4 root      20   0     0    0    0 S  0.0  0.0 252:25.86 ksoftirqd/0                                                                 
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                                   
    6 root      RT   0     0    0    0 S  0.0  0.0   2233:33 watchdog/0                                                                  
    7 root      RT   0     0    0    0 S  0.0  0.0 340:35.60 migration/1                                                                 
    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1                                                                   
    9 root      20   0     0    0    0 S  0.0  0.0   5:23.87 ksoftirqd/1                                                                 
   10 root      RT   0     0    0    0 S  0.0  0.0 214:57.35 watchdog/1    

Es importante entender la salida del comando. El análisis línea por línea y luego en cada columna mostrada.

1. Tiempo de actividad y carga media del sistema

top - 12:50:01 up 62 days, 22:56,  5 users,  load average: 4.76, 8.03, 4.34

En la primera línea nos muestra:

  • Hora actual.
  • Tiempo que ha estado el sistema encendido.
  • Número de usuarios (root).
  • Carga media en intervalos de 5, 10 y 15 minutos respectivamente.

2. Tareas

Tasks: 412 total,   1 running, 411 sleeping,   0 stopped,   15 zombie

La segunda línea muestra el total de tareas y procesos, los cuales pueden estar en diferentes estados.

  • Running (ejecutar): procesos ejecutándose actualmente o preparados para ejecutarse.
  • Sleeping (hibernar): procesos dormidos esperando que ocurra algo (depende del proceso) para ejecutarse.
  • Stopped (detener): ejecución de proceso detenida.
  • Zombie: el proceso no está siendo ejecutado. Estos procesos se quedan en este estado cuando el proceso que los ha iniciado muere (padre).

3. Estados de la CPU

Cpu(s):  6.8%us,  3.8%sy,  0.2%ni, 74.4%id, 28.2%wa,  0.1%hi,  0.5%si,  0.0%st

Esta línea nos muestra los porcentajes de uso del procesador diferenciado por el uso que se le de.

  • us (usuario): tiempo de CPU de usuario.
  • sy (sistema): tiempo de CPU del kernel.
  • id (inactivo): tiempo de CPU en procesos inactivos.
  • wa (en espera): tiempo de CPU en procesos en espera, en este ejemplo se puede visualizar que se tienen un porcentaje muy alto en este valor por lo que nos debemos de preocupar.
  • hi (interrupciones de hardware): interrupciones de hardware.
  • si (interrupciones de software): tiempo de CPU en interrupciones de software.

4. Memoria física

Mem:  20599548k total, 18622368k used,  1977180k free,   375212k buffers
  •  Memoria total.
  • Memoria utilizada.
  • Memoria libre.
  • Memoria utilizada por buffer.

5. Memoria virtual

Swap:  6669720k total,  3536428k used,  3133292k free, 10767256k cached  
  •  Memoria total.
  • Memoria usada.
  • Memoria libre.
  • Memoria en caché.

6. Columnas

Ahora vamos a ver las diferentes columnas que nos encontramos al ejecutar el comando.

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                     
26306 root      20   0  478m 257m 1900 S  3.9  1.3   0:08.21 nmis.pl                                                                     
15522 root      20   0  626m 373m 2776 S  2.0  1.9  71:45.09 opeventsd.pl                                                                
27285 root      20   0 15280 1444  884 R  2.0  0.0   0:00.01 top                                                                         
    1 root      20   0 19356  308  136 S  0.0  0.0   1:07.65 init                                                                        
    2 root      20   0     0    0    0 S  0.0  0.0   0:02.14 kthreadd                                                                    
    3 root      RT   0     0    0    0 S  0.0  0.0  17359:19 migration/0                                                                 
    4 root      20   0     0    0    0 S  0.0  0.0 252:25.86 ksoftirqd/0                                                                 
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                                   
    6 root      RT   0     0    0    0 S  0.0  0.0   2233:33 watchdog/0                                                                  
    7 root      RT   0     0    0    0 S  0.0  0.0 340:35.60 migration/1                                                                 
    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1                                                                   
    9 root      20   0     0    0    0 S  0.0  0.0   5:23.87 ksoftirqd/1                                                                 
   10 root      RT   0     0    0    0 S  0.0  0.0 214:57.35 watchdog/1    


  • PID: es el identificador de proceso. Cada proceso tiene un identificador único.
  • USER (USUARIO): usuario propietario del proceso.
  • PR: prioridad del proceso. Si pone RT es que se está ejecutando en tiempo real.
  • NI: asigna la prioridad. Si tiene un valor bajo (hasta -20) quiere decir que tiene más prioridad que otro con valor alto (hasta 19).
  • VIRT: cantidad de memoria virtual utilizada por el proceso.
  • RES: cantidad de memoria RAM física que utiliza el proceso.
  • SHR: memoria compartida.
  • S (ESTADO): estado del proceso.
  • %CPU: porcentaje de CPU utilizado desde la última actualización.
  • %MEM: porcentaje de memoria física utilizada por el proceso desde la última actualización.
  • TIME+ (HORA+): tiempo total de CPU que ha usado el proceso desde su inicio.
  • COMMAND: comando utilizado para iniciar el proceso.



Server configuration option.

Introduccion.

NMIS8

NMIS 8 - Configuration Options for Server Performance Tuning

NIMS9

NMIS 9 - Configuration Options for Server Performance Tuning

Disk performance.

Introducción.

Este procedimiento está dedicado a determinar la causa y proporcionar posibles soluciones al visualizar graficas cortadas en NMIS, el problema raíz es la visualización de graficas con interrupciones, por lo que esto ocasiona problemas de nivel 2 (Impacto severo - Sistema de producción poco confiable) o incluso en algunas ocaciones nivel 1 (Critica para el negocio, perdida completa del servicio, perdida de datos) al cliente, por lo que es fundamental determinar que sucede y proporcionar un diagnóstico.


Proceso.


OMK deberá solicitar evidencia del caso, esto para poder elaborar un diagnóstico inmediato y asi dar seguimiento, por lo que se requiere determinar los síntomas que presenta el servidor, para esto nos apoyaremos de los siguientes puntos:

Vista del Nodo en la GUI:

Se puede observar que él nodo presenta cortes en las gráficas, pero el nodo se muestra alcanzable y no presenta fallas en perdida de paquetes.

Lo siguiente que se validara es la GUI de nmis, ver el comportamiento de las siguientes graficas:

 

 

NMIS Runtime Graph (menú: System > Host Diagnostics> NMIS Runtime Graph )

En esta grafica revisamos que los valores de Rutime, collect time, Nmis processes y max parallel processes sean normales (referente al histórico y a los alores configurados, tambien tener en cuenta los recursos del servidor.)

 

NMIS Polling Summary (menú: System > Host Diagnostics> NMIS Polling Summary)

El resumen de poleo que proporciona Nmis es muy útil, ya que en el podremos ver los detalles de tiempo de colección de los nodos, nodos activos, nodos colectados, etc,. Estos valores deben de estar acorde a los numero de nodos monitoreados, asi mismo el tiempo de colección debe estar entre el rango de minutos configurados en el cron de nmis.

Network Metrics and Health (menú: Network Status > Network Metrics and Health.)

Aquí podremos validar la disponibilidad del servidor, estado de salud y alcance, estos valores debe de estar por encima de 60 para considerar que se esta trabajando bien, aquí se ven cortes por lo que indica que no se colecto información en ese lapso de tiempo.

Configuracion de archivo Cron (nmis) y Config.nmis

Aquí se procederá a verificar la configuracion de colección de datos hacia los dispositivos, por lo que validamos los parámetros de Collect, maxthreads y mthread.

En el archivo Cron de nmis vemos lo siguiente:


Crond NMIS
######################################################
# NMIS8 Config
######################################################

# Run Full Statistics Collection
*/5 * * * *     root     /usr/local/nmis8/bin/nmis.pl type=collect maxthreads=100 mthread=true
*/5 * * * *     root     /usr/local/nmis8/bin/nmis.pl type=services mthread=true
# ######################################################

# Optionally run a more frequent Services-only Collection
# */3 * * * *   root     /usr/local/nmis8/bin/nmis.pl type=services mthread=true

######################################################

# Run Summary Update every 2 minutes
*/2 * * * *     root     /usr/local/nmis8/bin/nmis.pl type=summary



Procedemos a verificar que el valor del mthread este activado y que el maxthreads tenga en mismo valor en el archivo Config.nmis


Sección Config.nmis
    'nmis_group' => 'nmis',
    'nmis_host' => 'nmissTest_OMK.omk.com',
    'nmis_host_protocol' => 'http',
    'nmis_maxthreads' => '100',
    'nmis_mthread' => 'false',
    'nmis_summary_poll_cycle' => 'false',
    'nmis_user' => 'nmis',



Podemos ver que el valor mthread esta desactivado y que el valor maxthreads si corresponde al mismo declarado en el cron de nmis, por lo que se procede a activarlo y a realizar un update y collect al nodo.

Update_Collect
/usr/local/nmis8/bin/nmis.pl type=update node=<Name_Node> force=true

/usr/local/nmis8/bin/nmis.pl type=collect node=<Name_Node> force=true


Nota: Si estos valores declarados en el cron y en el archivo Conf.nmis no funcionan se recomienda realizar lo siguiente:

Example Crond
# Ejemplo 1:
/usr/local/nmis8/bin/nmis.pl type=collect abort_after=300 mthread=true maxthreads=100 ignore_running=true

# Ejemplo 2
/usr/local/nmis8/bin/nmis.pl type=collect abort_after=240 mthread=true maxthreads=100 ignore_running=true

El valor del parámetro maxthreads (se recomienda probar entre 50, 80 y 100) debe ser el mismo en ambos archivos (cron nmis y conf.nmis)

Aplicar los comandos de Update y Collect al termino de cada prueba y verificar el comportamiento en la GUI de NMIS, esto consiste en revisar las gráficas de NMIS Runtime Graph, Network_summary y Polling_summary.


Check de servidor

Se requiere realizar una revisión general del hardware del servidor, para obtener lo siguiente:

Sistema Operativo.

Verificación del sistema operativo en donde se encuentra trabajando el sistema de monitoreo.

Comando:

cat /etc/*release* && uname -osmr && uname -v

Resultado:

[root@opmantek ~]# cat /etc/*release* && uname -osmr && uname -v
CentOS release 6.10 (Final)
CentOS release 6.10 (Final)
CentOS release 6.10 (Final)
cpe:/o:centos:linux:6:GA
Linux 2.6.32-754.28.1.el6.x86_64 x86_64 GNU/Linux
#1 SMP Wed Mar 11 18:38:45 UTC 2020
[root@opmantek ~]#


Detalles de almacenamiento:

Verificación del estado de almacenamiento, memoria libre y detalles de las particiones del S.O.

Comando:

echo -e "\n \e[31m Información de espacio en el disco \e[0m" && df -h && echo -e "\n\n \e[31m Información de uso de RAM \e[0m" && free -m && echo -e "\n\n \e[31m Detalle de discos \e[0m" && fdisk -l

Resultado:

[root@opmantek ~]# echo -e "\n \e[31m Información de espacio en el disco \e[0m" && df -h && echo -e "\n\n \e[31m Información de uso de RAM \e[0m" && free -m && echo -e "\n\n \e[31m Detalle de discos \e[0m" && fdisk -l

  Información de espacio en el disco

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_nmis64-lv_root
                       59G  2.7G   54G   5% /
tmpfs                 3.9G     0  3.9G   0% /dev/shm
/dev/sda1             477M  109M  343M  25% /boot
/dev/mapper/vg_nmis64_data-lv_data
                      321G   11G  295G   4% /data
/dev/mapper/vg_nmis64-lv_var
                      147G  1.5G  138G   2% /var

  Información de uso de RAM
             total       used       free     shared    buffers     cached
Mem:          7984       6891       1093          0        216       1077
-/+ buffers/cache:       5596       2387
Swap:         4071       1589       2482

  Detalle de discos
Disk /dev/sda: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008cec3

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        5222    41430016   8e  Linux LVM
/dev/sda3            5222       42570   299997810   8e  Linux LVM
/dev/sda4           42570       65256   182225295   8e  Linux LVM

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_nmis64-lv_root: 64.4 GB, 64432898048 bytes
255 heads, 63 sectors/track, 7833 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_nmis64-lv_swap: 4269 MB, 4269801472 bytes
255 heads, 63 sectors/track, 519 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_nmis64_data-lv_data: 350.1 GB, 350140497920 bytes
255 heads, 63 sectors/track, 42568 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_nmis64-lv_var: 160.3 GB, 160314687488 bytes
255 heads, 63 sectors/track, 19490 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

[root@opmantek ~]#

Análisis de comando top.

Abrimos una consola y simplemente ejecutamos el comando:

top

Nos va a aparecer una interfaz en modo texto que se va a ir actualizando cada 3 segundos. Muestra un resumen del estado de nuestro sistema y la lista de procesos que se están ejecutando. La salida que obtengo en mi ordenador es la siguiente:

 






  1. #General collection.
    /usr/local/nmis8/admin/support.pl action=collect  
    
    #If the file is big, we can add the next parameter.
    /usr/local/nmis8/admin/support.pl action=collect maxzipsize=900000000
    
    #Device collection.
    /usr/local/nmis8/admin/support.pl action=collect node=<node_name> maxzipsize=900000000
    
    
    
    
    


  1. #General collection.
    /usr/local/nmis8/admin/support.pl action=collect  
    
    #If the file is big, we can add the next parameter.
    /usr/local/nmis8/admin/support.pl action=collect maxzipsize=900000000
    
    #Device collection.
    /usr/local/nmis8/admin/support.pl action=collect node=<node_name> maxzipsize=900000000





  • No labels