Openshift
Este documento describe la funcionalidad Openshift del discovery de PandoraFMS.
- Introducción
- Pre requisitos
- Parámetros y configuración
- Ejecución manual
- Discovery
- Agentes y módulos generados por el plugin
Introducción
Este plugin tiene como finalidad monitorizar nodos y pods de Openshift, mediante métricas claves referentes al CPU, memoria, status de estos y de los contenedores de un pod, que son esenciales para llevar un control y seguimiento de estos recursos.
El plugin se conecta al API REST de Openshift y monitoriza el entorno mediante las métricas anteriormente mencionadas, generando un agente para cada zona e instancia via XML que envía al servidor de pandora.
Pre requisitos
- Conectividad a la API de Openshift
El plugin debe poder llegar a API de forma remota para poder extraer la información.
- Obtención de token Bearer
Se puede obtener con el siguiente comando de CLI, despues de haber hecho login con este:
./oc whoami -t
-
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 :
Se puede aplicar este fichero directamente para configurar los permisos necesarios
oc apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml
- Se necesita corriendo este apiservice: v1beta1.metrics.k8s.io y el metrics server.
oc get apiservice
- 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 y configuración
Parámetros
--conf | Ruta al archivo de configuración |
Archivo de configuración (--conf)
ip = < IP o host de Kubernetes >
port = < Puerto del host de kubernetes >
token = < Token Bearer de autenticación >
connection = < Modo de conexión, normal o proxy >
proxy = < Url de conexión >
interval = < Intervalo en segundos para los agentes y para el analisis de métricas >
agent_group_name = < Nombre del grupo de destino para los agentes creados >
prefix = < Prefijo para el nombre de los agentes>
transfer_mode = < Modo de transferencia, tentacle o local >
data_dir = < (Solo se activa si el transfer_mode es local) Ruta de destino para los XML de cada agente, por defecto "/var/spool/pandora/data_in/" >
tentacle_ip = < IP de la máquina destino para los agentes creados >
tentacle_port = < Puerto de tentacle, por defecto : 41121 >
deployments = < Activar con 1 para habilitar la monitorización de deployments >
nodes = < Activar con 1 para habilitar la monitorización de nodes >
pods = < Activar con 1 para habilitar la monitorización de pods >
Ejemplo
ip = 192.168.49.2
port = 8443
token = eyJhbGciOiJSUzI1NiIsImtpZCI6IkVpeVhfTFFzSWpmcGtjZzM0blZrZDY3YUtMbzNqTWZmcmdLZ2NKblVHbTgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50IiwisInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.aC1lPbS5kYR9Fg9hXJaPiQ8cHzjdWlaAfXdPlmPok6LRX0_OZESEhw8to4PZrz2vzt_BUbawUR0NOpHadujHIx7as4Jm8UCRHgmGseyB7mae9vRMFiD1B4EeH5L8lvucydlV2Avx1IV9SyssbypwGCH_jg7tfKz4EMz5aBfgipliRwFaRGdQMX5sjz4AknGxcb2UVOe9LFb_xC-awDEjaGvm_F0tSLxtyGPoJmsvknNmEC9hJLG_AU8Z9Ke5I5oTvEzRmUCqrKz6319p-x9aaF6yUfOFtlnQlLhIz2xkOs8DkkJ1Rk59i2MolzXGwmlGgWkgc7qCgvqXQNjDeX3ySA
connection = normal
proxy = http://localhost:8080
interval = 300
agent_group_name = kubernetes
prefix = kube.
transfer_mode = tentacle
data_dir = /var/spool/pandora/data_in
tentacle_ip = 172.42.42.101
tentacle_port = 41121
deployments = 1
nodes = 1
pods = 1
Ejecución manual
El formato de la ejecución del plugin es el siguiente:
./pandora_openshift --conf < ruta al fichero de configuración >
Por ejemplo:
./pandora_openshift --conf /usr/share/pandora_server/util/plugin/openshift.conf
La ejecución devolverá una salida en formato JSON con información sobre la ejecución, y generará un fichero XML para cada agente monitorizado que enviará al servidor de Pandora FMS por el método de transferencia indicado en la configuración.
Por ejemplo:
{"summary": {"Total agents": 84, "Nodes agents": 3, "Pods agents": 43, "Deployments agents": 37}}
Discovery
Este plugin puede integrarse con el Discovery de Pandora FMS.
Para ello se debe cargar el paquete ".disco" que puede descargar desde la librería de Pandora FMS:
https://pandorafms.com/library/
Una vez cargado, se podrán monitorizar entornos de openshift creando tareas de Discovery desde la sección Management > Discovery > Applications
Para cada tarea se solicitarán los siguientes datos mínimos:
- Openshift host : Host de openshift.
- Openshift port : Puerto de openshift.
- Openshift token: Token de openshift.
- Tentacle IP: IP del servidor de Tentacle al que enviar los datos de los agentes. Normalmente este parámetro no se modificará.
- Tentacle port: Puerto del servidor de Tentacle al que enviar los datos. Normalmente este parámetro no se modificará.
.También se podrá ajustar la configuración de la tarea para personalizar la monitorización deseada:
- Scan Deployments : Si se activa monitorizará los deployments y creará un agente por cada uno de estos.
- Scan Nodes: Si se activa monitorizara los nodos y creará un agente por cada uno de estos.
- Scan Pods: Si se activa monitorizara los pods y creará un agente por cada uno de estos.
Las tareas completadas con éxito tendrán un resumen de ejecución con la siguiente información:
- Total agents : Número total de agentes generados por la tarea.
- Nodes agents : Número total de agentes de nodos.
- Pods agents : Número total de agentes de pods.
- Deployment agents: Número total de agentes de aplicaciones.
Agentes y módulos generados por el plugin
La ejecución del plugin, creara los siguientes agentes y módulos:
- Agente global
< prefix.Openshift > |
Modules
Api status |
APIServices count |
APIServices Status |
< Endpoint healthz> |
Services count |
List Services |
Namespaces count |
List Namespaces |
< Component status healthz > |
Replication controllers count |
Replication controllers status |
Deployments |
- Un agente por cada deployment
< prefix. Nombre deployment > |
Modules
Replicas |
Updated replicas |
Ready replicas |
Avalaible replicas |
Unavalaible replicas |
Available |
Progressing |
- Un agente por cada Nodo
< prefix. Nombre nodo > |
Modules
Pods |
Pods (%) |
CPU (cores) |
CPU (%) |
Memory (bytes) |
Memory (%) |
Condition < condition > status |
- Un agente por cada pod
< prefix. Nombre pod > |
Modules
Pod status |
<Condition status> |
Containers |
Container <nombre contenedor> CPU (cores) |
Container <nombre contenedor> CPU (%) |
Container <nombre contenedor> Memory (bytes) |
Container <nombre contenedor> Memory (%) |