Openshift
Plugin para monitorear openshift.
- Introducción
- Matriz de compatibilidad
- Pre requisitos
- Parámetros
- Ejecución Manual
- Configuración en Pandora FMS
- Módulos generados por el plugin
- Posibles problemas
- Control de errores
Introducción
Ver. 10-02-2022
Con este plug-in podremos ver datos y monitorear nuestros nodos y pods de openshift.
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:
- 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 :
- 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:
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:
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.
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".
Se debe pinchar en seleccionar archivo.
Se elegirá el archivo.pspz2 a subir.
Aparecerá un mensaje que informará que se ha registrado correctamente.
Una vez registrado el plugin, lo veremos en el apartado plugins.
Podremos acceder al menu del plugin pinchando en su título-
En parámetros veremos la macro que usa el plugin, esto no hace falta tocarlo
En el campo Default value, deberemos introducir la ruta de nuestro archivo.conf.
Instalación manual
Iremos a servidores > plugins:
Pinchamos en añadir:
Le ponemos en nombre y la descripción que se prefiera:
Metemos como comando la ejecución con la ruta del plugin:
/path_pandora_openshift path_pandora_openshift.conf
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 |
- 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 |
- 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) |
- 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 |
- 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 |
- Un agente con nombre "prefix_OS_Api_service" con módulos por cada elemento de nuestra api.
Elemento API |
- 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 |
- Un agente con nombre "prefix_OS_Services" con un módulo por cada servicio de nuestro entorno.
Servicio |
- Un agente con nombre "prefix_OS_Component status" para monitorizar cada component status del entorno.
- Un agente con nombre "prefix_OS_Operators" para monitorizar cada operador del entorno.
- 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 |
Ejemplo de vista de agentes tras ejecución del plugin
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)
Este error se da porque no se puede invocar a los comandos que cogen las metricas de los nodos y pods
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>
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 |