# 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](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 ``` Remover un rol de un user : ``` oc adm policy remove-role-from-user ``` Añadir un rol a un user para todos los proyectos: ``` oc adm policy add-cluster-role-to-user ``` Remover un rol de user para todos los proyectos: ``` oc adm policy remove-cluster-role-from-user ``` Ejemplo : [![image-1644427009267.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1644427009267.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/openshiftmonitoing.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/change-memory.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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://: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: ``` ``` 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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645117674078.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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 ``` 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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register-plugin.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register-plugin.png)** Se debe pinchar en seleccionar archivo. **[![register_plugin2.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register-plugin2.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register-plugin2.png)** Se elegirá el archivo.pspz2 a subir. [![register1_openshift.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register1-openshift.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register1-openshift.png) Aparecerá un mensaje que informará que se ha registrado correctamente. [![register2_openshift.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register2-openshift.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register2-openshift.png) Una vez registrado el plugin, lo veremos en el apartado plugins. [![serversingles.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/serversingles.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/serversingles.png) Podremos acceder al menu del plugin pinchando en su título- [![register3_openshift.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register3-openshift.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register3-openshift.png) En parámetros veremos la macro que usa el plugin, esto no hace falta tocarlo [![register4_openshift.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register4-openshift.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register4-openshift.png) En el campo Default value, deberemos introducir la ruta de nuestro archivo.conf. [![register5_openshift.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register5-openshift.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register5-openshift.png) **Instalación manual** Iremos a servidores > plugins: [![image-1629974405286.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1629974405286.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629974405286.png) Pinchamos en añadir: [![image-1629974430627.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1629974430627.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629974430627.png) Le ponemos en nombre y la descripción que se prefiera: [![image-1646653196568.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1646653196568.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1646653196568.png) Metemos como comando la ejecución con la ruta del plugin: ``` /path_pandora_openshift path_pandora_openshift.conf ``` [![image-1646653248949.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1646653248949.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/nodos-modulos.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645115122322.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645115401735.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1644837340546.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1644851092860.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645031007816.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645115623265.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/image-1645115623265.png) **- Un agente con nombre "prefix\_OS\_Services" con un módulo por cada servicio de nuestro entorno.**
Servicio
[![image-1645031359257.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645031359257.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/image-1645031359257.png) \- **Un agente con nombre "prefix\_OS\_Component status" para monitorizar cada component status del entorno.** [![image-1675248093965.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-02/scaled-1680-/image-1675248093965.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-02/image-1675248093965.png) **-** **Un agente con nombre** **"prefix\_OS\_Operators" para monitorizar cada operador del entorno.** [![image-1675248078684.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-02/scaled-1680-/image-1675248078684.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645031121455.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/image-1645031121455.png) **Ejemplo de vista de agentes tras ejecución del plugin** [![image-1645115831454.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645115831454.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1644835302770.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1644835468926.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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. ``` ``` [![image-1645116241124.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/scaled-1680-/image-1645116241124.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-02/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.
9Ha ejecutado todo perfectamente
8Ha fallado en el agente openshift
7Ha fallado en el agente replication controllers
6Ha fallado en el agente services
5Ha fallado en el agente api services
4Ha fallado en el agente imagestreams
3Ha fallado en los agentes de deployments
2Ha fallado en el agente pod stats
1Ha fallado en los agentes de pods
0Ha fallado en los agentes de nodos