Openshift

Plugin para monitorear openshift.

Introducción

Ver. 10-02-2022

Con este plug-in podremos ver datos y monitorear nuestros nodos y pods de openshift.

Tipo: Plug-in de servidor

Matriz de compatibilidad

Sistemas donde se ha probado

CentOS 7, Fedora

Sistemas donde debería funcionar

Cualquier sistema linux 

 

Pre requisitos

- Tener instalado CLI(oc) de openshift.

Información sobre la instalación de cli en la documentación oficial:

https://docs.openshift.com/container-platform/4.9/cli_reference/openshift_cli/getting-started-cli.html

- Tener un proyecto creado en openshift.

- La cuenta de usuario de openshift deberá tener permisos de cluster-reader

Los comandos de cli para añadir permisos son los siguientes (estos deben de darse desde una cuenta con privilegios)

Añadir un rol a un user :

oc adm policy add-role-to-user <role> <user_name>

Remover un rol de un user :

oc adm policy remove-role-from-user <role> <user_name>

Añadir un rol a un user para todos los proyectos:

oc adm policy add-cluster-role-to-user <role> <user_name>

Remover un rol de user para todos los proyectos:

oc adm policy remove-cluster-role-from-user <role> <user_name>

Ejemplo :

image-1644427009267.png

- Tiene que estar activada la opción cluster-monitoring

Esto se puede hacer con el siguiente comando :

./crc config set enable-cluster-monitoring true

Ejemplo:

openshiftmonitoing.png

Para poder tener habilitado se pide un minimo de 14 gb, por lo que si hemos configurado el entorno con menos, y activamos la opción cluster-monitoring deberemos añadirle más a la maquina, el mínimo son 14336 en mb.

El comando para especificar la memoria es :

./crc config set memory 14336

Ejemplo:

change memory.png

 

Parámetros

 

El plugin hace uso de los siguientes parámetros:

cli Path del binario oc de openshift
user Tu nombre de user 
password Tu password
ip Ip de tu entorno (ruta completa con puerto)
project Proyecto de openshift
mode Modo de envio del xml (dejar tentacle por defecto)
tentacle ip Ip de pandora a la que enviar los datos
tentacle port Número de puerto tentacle(por defecto: 41121)
agent_openshift Para habilitar este agente, que crea módulos con el número de deployments,services...etc. Dejarlo a 1 para habilitarlo.
agent_node Para habilitar un agente por cada nodo. Dejar en 1 para habilitarlo.
agent_pod Para habilitar un agente por cada pod. Dejar en 1 para habilitarlo.
agent_pod_stats Para habilitar un agente con las métricas de cada pod. Dejar en 1 para habilitarlo.
agent_deployment Para habilitar un agente por cada deployment. Dejar en 1 para habilitarlo.
agent_imagestreams Para habilitar un agente con módulos de cada imagestreams, el número de imagestreams se determina con top_imagestreams_count. Dejar a 1 para habilitarlo.
agent_replication_controller Para habilitar un agente que creará un módulo por cada replication controller en nuestro entorno. Dejar a 1 para habilitarlo.
agent_csv
Para habilitar un agente que creara un módulo para monitorizar cluster service versión.
agent_component_status

Para habilitar un agente que creara un módulo para monitorizar component status.
agent_operators
 
Para habilitar un agente que creara un módulo para monitorizar operadores.
agent_apiservice Para habilitar un agente que creará un módulo por cada servicio de nuestra API. Dejar a 1 para habilitarlo.
agent_services Para habilitar un agente que creará un módulo por cada servicio en nuestro entorno. Dejar a 1 para habilitarlo.
top_imagestream_count Número de imagestreams que monitorear de tu entorno. Por defecto 11.
prefix Nombre personalizado para los agentes creados
as_server_plugin Si se va a utilizar como plugin de servidor, dejarlo  a 1 para activarlo, si se usa como plugin de agente, dejarlo a 0.

Habrá que editar el conf poniendo el valor requerido.

Ejemplo:

# oc cli config
cli=/home/alejandro/Descargas/cli/oc
user=developer
password=developer
ip=https://<ip>:6443/
project=prueba
# transfer configuratios
mode=tentacle
tentacle_ip=192.168.1.200
tentacle_port=41121
# enabled metrics block
agent_openshift=1
agent_node=1
agent_pod=1
agent_pod_stats=1
agent_deployment=1
agent_imagestreams=1
agent_apiservice=1
agent_services=1
agent_replication_controller=1
agent_component_status=1
agent_csv=0
agent_operators=1
top_imagestreams_count=11
# define 
as_server_plugin=1
prefix=prueba

Ejecución Manual

El plugin se puede ejecutar manualmente llamando al plugin perl y al archivo conf:

<path pandora_openshift.pl> <pandora_openshift.conf>

Si la opción del conf, as_server_plugin esta a 1 nos mostrará un número por pantalla, concretamente un 9 si todo va correcto.

image-1645117674078.png

 

Sí se ejecuta con as_server_plugin a 0 no devolverá nada por terminal, a no ser que haya algún error que nos pintará un módulo en xml con la parte que falla en la descripción.

Configuración en Pandora FMS

 

Como plugin de agente

Para poder monitorizar desde Pandora FMS con el plugin, deberemos llamarlo desde el conf del agente software que esta en la siguiente ruta :

/etc/pandora/pandora_agent.conf

lo llamaremos en la última línea del conf con el comando module_plugin , seguido de la ruta del plugin perl y de la ruta del archivo conf.

module_plugin perl <path .pl> <path .conf>

Esto también se puede hacer desde la consola si esta la configuración remota habilitada.

Como plugin de servidor

Instalación desde consola

Para el registro del plugin, desde la consola, se debe ir al apartado "registrar plugin".

register_plugin.png

Se debe pinchar en seleccionar archivo.

register_plugin2.png

 

Se elegirá el archivo.pspz2 a subir.

register1_openshift.png

Aparecerá un mensaje que informará que se ha registrado correctamente.

register2_openshift.png

Una vez registrado el plugin, lo veremos en el apartado plugins.

serversingles.png

Podremos acceder al menu del plugin pinchando en su título-

register3_openshift.png

En parámetros veremos la macro que usa el plugin, esto no hace falta tocarlo

register4_openshift.png

En el campo Default value, deberemos introducir la ruta de nuestro archivo.conf.

register5_openshift.png

 

Instalación manual

Iremos a servidores > plugins:

image-1629974405286.png

Pinchamos en añadir:

image-1629974430627.png

Le ponemos en nombre y la descripción que se prefiera:

 

image-1646653196568.png

Metemos como comando la ejecución con la ruta del plugin:

/path_pandora_openshift path_pandora_openshift.conf

image-1646653248949.png

 

Módulos generados por el plugin

El plugin generará :

* prefix es un parametro del conf que podemos customizar añadiendo el nombre que queramos.

- Un agente por cada nodo del entorno con nombre : prefix_OS_Nodo_<nombre del nodo>

Cada agente de nodo tendrá los siguientes módulos :

Status
Roles
Age
Versión
cpu cores
cpu %
memory bytes
memory %
allocated cpu
allocated memory
memory pressure
disk pressure
pid pressure
ready

nodos_modulos.png

- Un agente por cada pod del entorno con nombre : prefix_OS_Pod_<nombre del pod>

Cada agente de pod tendrá los siguientes módulos:

Status
Restarts
Ready
Age

image-1645115122322.png

- Un agente con nombre: prefix_OS_POD_Stats

Creará un módulo de cpu(cores) y otro de memoria por cada pod.

<nombre-pod>_Cpu (cores)
<nombre-pod>_Memory (bytes)

image-1645115401735.png

- Un agente por cada deployment con nombre :prefix_ OS_Deployment_<nombre-deployment>

Cada agente Deployment tendrá los siguientes datos :

Age
Avalaible
Ready
Up to date

 

image-1644837340546.png

- Un agente con nombre "prefix_OS_Imagestreams_stats" con módulos por cada imagestream de nuestro entorno (el número se configura en el .conf).

El agente OS_Imagestreams_stats contendrá los siguientes módulos por cada Imagestream:

<nombre imagestream> - storage
<nombre imagestream> - images

image-1644851092860.png

- Un agente con nombre "prefix_OS_Api_service" con módulos por cada elemento de nuestra api.

Elemento API

image-1645031007816.png

- Un agente con nombre "prefix_OS_Replication controllers con los siguientes módulos  por cada replication controller:

<Replication controller nombre> Desired
<Replication controller nombre> Current
<Replication controller nombre> Ready
<Replication controller nombre> Age

image-1645115623265.png

- Un agente con nombre "prefix_OS_Services" con un módulo por cada servicio de nuestro entorno.

Servicio

image-1645031359257.png

- Un agente con nombre "prefix_OS_Component status" para monitorizar cada component status del entorno.

image-1675248093965.png

- Un agente con nombre "prefix_OS_Operators" para monitorizar cada operador del entorno.

image-1675248078684.png

- Además el plugin generará un agente llamado "prefix_Openshift" con módulos que indicaran el número de ciertos elementos con los que cuenta nuestro entorno.

El agente Openshift contendrá los siguientes módulos:

Services
Deployments
Namespaces
Nodes
Pods
Imagestreams
Replication controllers

image-1645031121455.png

 

Ejemplo de vista de agentes tras ejecución del plugin

image-1645115831454.png

 

 

 

 

 

Posibles problemas

 

Error from server (ServiceUnavailable)

Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io)

image-1644835302770.png

Este error se da porque no se puede invocar a los comandos que cogen las metricas de los nodos y pods

image-1644835468926.png

Lo más probable sea porque el metric server o la opción de monitoring en el entorno de openshift este deshabilitada, o se haya deshabilitado. Asegúrese de que el servidor este corriendo, se pueden ver más datos sobre este error desde la consola de Openshift que indicará si hay un problema con la monitorización.

Permisos

El plugin tiene comandos internos del CLI de openshift que necesitan permisos para ejecutarse desde el agente de pandora.

Lo recomendable es darle permisos tanto al plugin perl como al conf con :

chmod 755 pandora_openshift.pl
chmod 755 pandora_openshift.conf

A su vez, el binario de cli, también deberá tener los permisos correctos, en este caso root:root para que pueda ejecutarlo el agente de pandora.

chown root:root /path_oc
chmod 755 /path_oc

Control de errores

El plugin funciona modularmente, por lo que si por algún motivo falla al enviar los datos, mediante comandos por terminal podemos ver en que parte esta fallando. Podremos ver que parte del entorno que estamos sacando los datos esta teniendo problemas para enviar los datos (pods, nodos, deployments, etc)

Con el parámetro as_server_plugin del conf a 0

Ejecutando el plugin por terminal, si falla alguna parte al enviar los datos imprimirá un módulo y en la descripción veremos que agente es el que falla.

 

<path pandora_openshift.pl> <path pandora_openshift.conf>

image-1645116241124.png

En este ejemplo que se ha pintado un módulo en xml por terminal que nos dice en la descripción que ha tenido problemas con el agente pod_stats.

Con el parámetro as_server_plugin del conf a 1

Si ejecutamos por terminal manualmente el plugin con la opción as_server_plugin a 1, este pintara por terminal un número, este número indica en que parte ha fallado el plugin.

9 Ha ejecutado todo perfectamente
8 Ha fallado en el agente openshift
7 Ha fallado en el agente replication controllers
6 Ha fallado en el agente services
5 Ha fallado en el agente api services
4 Ha fallado en el agente imagestreams
3 Ha fallado en los agentes de deployments
2 Ha fallado en el agente pod stats
1 Ha fallado en los agentes de pods
0 Ha fallado en los agentes de nodos