Usuario:ManuelRomero/proyecto/proyectoIternova/codigo

De WikiEducator
Saltar a: navegación, buscar



  //Segunda columna 'host'
            echo '<div class="col-xs-12 col-md-4">';
            $error[] = Controller_Forms::field(array('field_type' => 'text',
                        'field_id' => 'host',
                        'field_title' => Idiomas_Controller::translate('monitorizacion.host', $idioma, $langfile),
                        'field_value' => $obj->host,
                        'obligatory' => true,
                        'first' => $first));
 
            //Tercera columna 'host_name'
            echo '</div><div class="col-xs-12 col-md-4">';
            $error[] = Controller_Forms::field(array('field_type' => 'text',
                        'field_id' => 'host_name',
                        'field_title' => Idiomas_Controller::translate('monitorizacion.host_name', $idioma, $langfile),
                        'field_value' => $obj->host_name,
                        'obligatory' => true,
                        'first' => $first));
 
            echo '</div><div class="col-xs-12 col-md-4">';
            //hacer un peque?o formulario con campos
            /* MRM aquí crearemos los checkbox para los servicios */
 
 
 
 
 
 
 
 
 
            $servicios = Monitorizacion_Controller_Services::get_servicios();
 
            //$array_checked, contendrá todos los índices de los servicos seleccionados
            $array_checked = array();
            foreach ($servicios as $servicio => $servicio_nombre) {
 
                $array_checked[] = in_array($servicio, $obj->servicios);
            }
            //Logs_Controller::vardump($obj);
            //Logs_Controller::vardump($array_checked);
 
 
            $error[] = Controller_Forms::field(array('field_type' => 'checkbox_multiple',
                        'field_id' => 'servicios',
                        'field_title' => Idiomas_Controller::translate('monitorizacion.servicios', $idioma, $langfile),
                        'array_keys' => array_keys($servicios),
                        'array_values' => array_keys($servicios),
                        'array_titles' => array_values($servicios),
                        'array_checked' => $array_checked,
                        'first' => $first
            ));
 
 
            /* MRM_END */
            /**
              host_nagios ????
              descripcion
             */
            //MRM tengo que coger el valor que quiero visualizar
            // Logs_Controller::vardump("MRM");
            // Logs_Controller::vardump($obj);
 
            $servidores_nagios = Monitorizacion_Modules_Nagios_Model::get_servidores();
            echo '</div><div class="col-xs-12 col-md-4">';
            $error[] = Controller_Forms::field(array('field_type' => 'select',
                        'field_id' => 'nagios_id',
                        'field_title' => Idiomas_Controller::translate('monitorizacion.nagios', $idioma, $langfile),
                        'array_keys' => array_keys($servidores_nagios),
                        'array_values' => array_values($servidores_nagios),
                        //'array_titles'=>array_values($servidores_nagios),
                        'field_value' => $obj->nagios_id,
                        'obligatory' => true,
                        'first' => $first));
 
 
            echo '</div><div class="col-xs-12 col-md-4">';
            $error[] = Controller_Forms::field(array('field_type' => 'textarea',
                        'field_id' => 'descripcion',
                        'field_title' => Idiomas_Controller::translate('monitorizacion.descripcion', $idioma, $langfile),
                        'field_value' => $obj->descripcion,
                        'obligatory' => false,
                        'first' => $first));

Casting los objetos a arrays

Para evitar problemas si una acción me retorna un objeto o un array, convierto siempre todo a array

  • Metodo

Controller_Utils::cast_object_to_array($obj)

  • Muy bueno que lo hace de forma recursiva.

Estructura de datos

Servidor nagios
["_id"] =>    string(24) "5762657febcfa667008b456b"
["url"] =>    string(17) "http://172.17.0.3"
["host"] =>    string(12) "e490a9185700"
["usuario"] =>    string(5) "admin"
["password"] =>    string(5) "admin"
["descripcion"] =>    string(35) "Servidor nagios de prueba en docker"
Host
 ["_id"] =>    string(24) "57627b58ebcfa6780f8b4569"
   ["host"] =>    string(10) "172.17.0.3"
   ["host_name"] =>    string(12) "e490a9185700"
   ["servicios"] =>    array(5) {
     [0] =>      int(1)
     [1] =>      int(2)
     [2] =>      int(3)
     [3] =>      int(4)
     [4] =>      int(5)
   }
   ["nagios_id"] =>    string(24) "5762657febcfa667008b456b"
   ["nagios_name"] =>    string(12) "e490a9185700"
   ["descripcion"] =>    string(51) "El equipo donde tengo nagios que quiero monitorizar"
servicios
   const SERVICIO_UNDEFINED =-1; //Servicio no definido 
   const SERVICIO_SSH = 1; //SSH
   const SERVICIO_HTTP = 2; //Servicio http
   const SERVICIO_MYSQL = 3; //Servicio uso mysql
   const SERVICIO_DISCOS = 4; // Current_load 
   const SERVICIO_CPU= 5; //Servicio uso de cpu
   const SERVICIO_PING=6;  //PING 
Tradución de los servicios
monitorizacion.servicios.ssh=Servicio de uso de ssh
monitorizacion.servicios.http=Servicio de uso web con http
monitorizacion.servicios.mysql=Servicio de uso de mysql
monitorizacion.servicios.discos=Serivicio de uso de discos
monitorizacion.servicios.cpu=Servicio de uso de cpu
monitorizacion.servicios.ping=Servicio de ping
monitorizacion.service.not_defined =Servicio no definido
monitorizacion.descripcion=Descripción  


Pendientes

  • mirar crondaemon Mirar en la wiki añadida en la clase de stats

  • Webbin *Webbinario que me pasa para mirar ??????
  • MongoDB + time-series:

- https://www.mongodb.com/presentations/webinar-mongodb-time-series-data-setting-stage-sensor-management - https://www.mongodb.com/presentations/mongodb-time-series-data-part-2-analyzing-time-series-data-using-aggregation-framework


9/10/2016
  • Errores varios al visualizar las monitorizaciones
Estaba $obj->nombre y no es un campo de la colección de monitorizacion (host host_name nagios nagios_name, descripcion, servicios) 



  • Camibio en el directorio stats' del módulo de monitorizacion el nombre de los siguientes ficheros

smarapps_ **** por monitorizacion_*****

  • Usado para hacer estadísticas
  • Me quedo modificando lo de los servicios
  • A partir de intentar borrar una monitorización, he añadido el método get_servicios en controller.
  • Esto me ha provocado una serio de errores, volver a lo de monitorizar host


3/5/2016

Fichero Monitoriazacion_Constants
  1. Crear una constante por servicio a monitorizar
  2. Añadir un método que retorne un array con el id del servicio seleccionado y el texto asociado
Menú
  1. Que aparezcan un checkbox con los servicios (p.e.)
SSh
HTTp
Mysql
Discos
cpu
;En es_ES.lang
 monitorizacion.servicios=Servicios a monitorizar;
 
;En monitorizacion:constats.php
 
/** Carga un array con los servicios que los diferentes servidores de nagios podrán monitorizar
* @return array asociativo con la lista de servicios
*/
public static function servicios(){
        $servicios =["http"=>"Tráfico http","cpu"=>"Uso de cpu","Mysql"=>"Uso de base de datos Mysqlt"];
        return $servicios;
}
 
;en monitoriazación_view.php método static edit
/*MRM aquí crearemos los checkbox para los servicios*/
 $servicios = Monitorizacion_Constants::servicios();
 $error[] = Controller_Forms::field(array('field_type' => 'checkbox_multiple',
                   'field_id' => 'servicio',
                   'field_title' => Idiomas_Controller::translate('monitorizacion.servicio', $idioma, $langfile),
                   'array_keys'=> array_keys($servicios),
                   'array_values'=>array_values($servicios),
                   'array_titles'=>array_values($servicios)
                  //    'array_checked'=>$array_checked, 'first' => $first ) 
             ));
/*MRM_END*/
class Monitorizacion_Model {
 
    /**
     * @var string $_db_collection Nombre identificador de la coleccion en la base de datos
     */
    private static $_db_collection = 'monitorizacion';
 
    /**
     * @var string $_id Identificador de registro dentro de la coleccion monitorizacion
     */
    public $_id = null;
 
    /**
     *
     * @var string ip del host que estamos monitorizando
     */
    public $host = '';
 
    /**
     *
     * @var string nombre del host que estamos monitorizando
     */
    public $host_name = '';
 
    /**
     *
     * @var array de string lista de servicios que estamos monitorizando
     */
    public $servicios = [];  //
 
    /**
     *
     * @var string url del servidor de nagios que nos da el servicio para este host
     */
    public $nagios_id = '';
 
    /**
     *
     * @var string identificador del servidor de nagios
     */
    public $nagios_name = '';
 
    /**
     *
     * @var string descripcion de esta monitorizacion concreta (host con n servicios);
     */
    public $descripcion = '';