Credit image

¿Te gusta el diseño web? ¡Echa un vistazo a la documentación de LenguajeCSS.com!

Byte-CPU-Meter: Mide la carga de tu servidor

Bit y Byte tienen el honor de presentar Byte-CPU-meter, un medidor de carga del servidor para nuestra página web.

Con él podremos mostrar un pequeño medidor de la carga que está actualmente soportando nuestro servidor y saber en todo momento si está sobrecargado o no.

Requisitos


  • Servidor web basado en sistema operativo Unix/Linux.
  • PHP4 o superior.
  • Permitir el comando shell_exec (privilegios).

El snippet requiere menos de 1Kb de memoria para ejecutarse y tarda muy pocos milisegundos en generar el medidor.

Instalación


Es bastante sencilla. Sólo se necesita descomprimir el siguiente fichero byte-cpu-meter-0.1.zip en la ruta donde tenemos nuestra página web. Luego añadimos el siguiente código PHP donde queremos que aparezca:

include("bytecpumeter.php");

Descarga


Observaciones


El sistema de carga puede inducir a mucha controversia. Este plugin lo que hace es mostrar el porcentaje de carga del servidor respecto a su uptime del último minuto.

El uptime (load average) lo que hace es mostrar el número de procesos en cola del servidor. Así pues, se puede conocer una aproximación a lo ocupado que se encuentra.

He establecido unos valores para servidores compartidos (por defecto) y otros para servidores virtualizados o dedicados. Si tienes un servidor del segundo tipo, debes comentar los anteriores y utilizar estos ultimos.

NOTA: En la mayoría de los servidores la función shell_exec (junto a otras que requieren permisos de usuario) no están permitidas. Esto se hace para evitar que si el servidor tiene un ataque, el atacante no pueda obtener ningún permiso de administrador ni ver información que no debería. Lo ideal sería permitir estos privilegios a la carpeta que contiene el script de byte-cpu-meter.

Si te animas a colocarlo en tu blog, deja constancia en un comentario con tu blog.

Escrito por Manz, el , en webmasters. Comentarios recibidos: 28.

28 comentarios de lectores
Nacho 001
Nacho 001
1

Pequeño bug (por así decirlo), cuando intento descomprimirlo con el WinRAR me dice que el archivo esta dañado. ¿Puede ser o es mi soft?

Adrián
Adrián
2

En efecto, el fichero está dañado...

Litbea
Litbea
3

A mi me daba error al pulsar sobre el enlace, pero no al intentar abrir una nueva pestaña haciendo clic con el botón medio del ratón.

Manz
Manz
4

Mis disculpas. Al parecer el servidor tiene algún tipo de problema despachando ficheros .tar.gz (quizas con los MIME, con wget funciona bien) y no comprobé la descarga. Lo he vuelto a subir en .zip Saludos

Nacho 001
Nacho 001
5

Perfecto, ahora solo falta que funcione cuando lo instale en mi blog. jeje!! Saludos.

Nacho 001
Nacho 001
6

Mmm... El que logre instalarlo en Wordpress que me avise en que directorio descomprimió el archivo, lo descomprimí en la ruta, pero nada. El código lo deje pegado en el footer.php, y al final de mi blog solo se ve el código.

Manz
Manz
7

¡Ojo Nacho! Se trata de un código PHP, no es javascript ni ningún otro lenguaje del lado del cliente. Tienes que incluirlo con las etiquetas de apertura y cierre de PHP.

Nacho 001
Nacho 001
8

Si, me había equivocado en el cierre, ahora lo había puesto bien: Pero tuve que quitarlo por que me daba mensajes de error en el footer, ahora voy a ponerlo en el sidebar, a ver que tal.

Linuxuario
Linuxuario
9

Me da este pequeño error en mi sitio: Warning: shell_exec() has been disabled for security reasons in .../bytecpumeter.php on line 33 aunque aparece la imagen byte1.gif y la barrita vacía, estoy hospedado en datattec.

Manz
Manz
10

Cierto, se me olvidó comentarlo. Para conocer la carga del servidor, el plugin llama a un comando del sistema operativo mediante la función shell_exec. Algunos servidores tienen esa función deshabilitada. Normalmente en la ayuda o FAQ del servidor tienen una manera de habilitarla. Saludos,

Nacho 001
Nacho 001
11

Aja! justamente ese el el mensaje de error que me da.

Manz
Manz
12

Si quieren más ayuda, lo mejor es buscar acerca de safe mode (PHP). Quizás la mejor opción sea introducir el script en una carpeta, donde se crea un fichero htaccess con la cadena: php_admin_flag safe_mode off. Sin embargo, esto depende mucho de cada servidor, y la mayoría tiene un sistema más sencillo para modificarlo.

Tankian
Tankian
13

Descargar archivo, descomprimirlo, hacer el include y listo. Sin ningun tipo de problema, ni de shell_exec ni nada de nada. PD: A ver cuando haces skins de bit, que es mi favorito :P

Nacho 001
Nacho 001
14

Que envidia que te tengo, yo no pude.

Nacho 001
Nacho 001
15

Voy a actualizar a Wordpress 2.3.1, ya he tenido muchos problemas con plugins y distintos códigos a causa de que mi wordpress es una beta de 2.0 Mañana actualizo y vuelvo a probar.

Tankian
Tankian
16

Mmm, lo mejor es que Manz no nos tortur mas con sus chapuzas :P:P

Nacho 001
Nacho 001
17

Ja!!, ya esta, pude hacerlo funcionar (un poco tarde), solo me cambie de hosting, ahora estoy en 1y1 (1and1 o como se diga). Saludos!

tikitakfire
tikitakfire
18

yeah! muy bueno! ya lo instale si problemas en el footer de tikitakorama.com.ar. por cierto... que puedo hacer para mermar la carga de mi server?

Victor
Victor
19

Funciona sin problemas :) Perfecto.

Jx
Jx
21

Habrá que pobrarlo ;)

abraham
abraham
22

Lo tengo en el píe de página. Y marca cero, después de venir de un "corte de servicio" por consumir demasiados recursos del servidor. Extraño no??

Manz
Manz
23

@abraham: Debes tener permisos para ejecutar ciertos comandos en tu servidor. Probablemente, si no los tienes es por ello que no marca nada.

sergio
sergio
24

saves como dar esos permisos no me funcionba a mi tengo un servidor linux virtual si puedes ayudarme y decirme donde esto que tengo que activar te loagradeceria me hace falta saludos

Isra
Isra
25

Si shell_exec no rula podéis probar system, exec o passthru, o intentar colar el comando a través de MySQL (en algunos servidores funciona). De todos modos es un poco chapuza la extracción del dato: $uptime = substr($uptime,(strpos($uptime,"average:") + 8)); $uptime = substr($uptime,0,strpos($uptime,",")); Se podría solucionar con una expresión regular (aunque no sé si para este programador de XHTML y CSS de su propio CMS ohhh será demasiado xD). Ah, y para reducir la carga, recomendable utilizar cache, con Apache es relativamente fácil configurarlo.

Manz
Manz
26

@Isra: Con respecto a system, exec y passthru como bien dices, puede funcionar (según la configuración del PHP del hosting), pero ojo, tienen sus diferencias: shell_exec devuelve un string con la cadena completa, exec y system devuelven el estado, mientras que passthru no devuelve nada. Respecto a la extracción de datos tiene su explicación, aunque probablemente no sea lo mejor que existe, una expresión regular es menos eficiente con respecto a tiempo de proceso: la ejecución de substr y strpos es mucho menos costosa que alguna de la familia de las regexp. En páginas con pocas visitas quizás no importe demasiado, pero en páginas con miles de visitas se nota bastante. El cache, como bien dices, una buena solución.

Creativosred
Creativosred
27

Gracias. Me ha sido de gran ayuda !

ProyectosBDS
ProyectosBDS
28

Funciona perfectamente, Gracias!!!! :)

Publica tu opinión

Si lo deseas, puedes utilizar el siguiente formulario para publicar tu opinión o responder a alguna de las existentes:

Previsualización

Aquí se previsualizará su comentario. Revise que sea correcto antes de publicarlo.