Social Icons

twitter facebook google plus linkedin

miércoles, 20 de septiembre de 2017

Recomendaciones para la administración de logs de IIS

Hola Mundo

Internet Information Services es el servidor de aplicaciones incluido como rol dentro de Windows Server, que otros roles y plataformas utilizan para poder dar servicios a la red en la que están inmersos. 

Cada transacción genera una entrada en el registro de log de IIS. Estos registros contienen con precisión el quién, qué, dónde, cuándo y cómo de la transacción. En sistemas altamente concurrentes, el tamaño de los log puede volverse inmanejable. 

 Es altamente aconsejable tener en vista el crecimiento del directorio , con alguna herramienta de monitoreo, o bien, revisando periódicamente con alguna herramienta para estos fines, como WinDirStat (herramienta de terceros gratuita). 
%SystemDrive%\inetpub\LogFiles

 Para poder tener un mayor control para el posterior análisis, se recomienda partir configurando en IIS:

  • Centralized Binary Logging. Esta configuración permite preservar los recursos de memoria, disminuyendo la cantidad de archivos de log. Manejando un único archivo de datos no formateados. 
  • Crear archivos separados para los distintos sitios web y aplicaciones. Limitar la cantidad de campos que se registran. Registrar solo lo estrictamente necesario. 


 A nivel de sistema de archivos también se pueden hacer cambios en el tratamiento del directorio de logs y es comprimiendo el directorio. Esto se consigue con privilegios de administración sobre el sistema y entrando a las propiedades avanzadas del directorio. Habilitando la compresión, el volumen del directorio será de solo un 2% del tamaño original. Almacenar los log en un directorio remoto es una buena forma, pero hay que considerar el alto trabajo de la red y recursos externos para el correcto funcionamiento.  Recordar que son sistemas intensivos en el uso de recursos. 

 Cuando la administración no es adecuada, el directorio crece y es necesario eliminarlos directamente desde el directorio. La operación no requiere detener el servicio. Se recomienda partir eliminando los más antiguos. 

 La administración y el monitoreo correcto de los log de IIS aseguran la continuidad operativa del sistema en general y ayuda al cuidado de los recursos de disco del servidor. Si se quiere ir más allá, siempre es una opción hacer inteligencia sobre los archivos de log con alguna solución de Big Data.

jueves, 24 de agosto de 2017

Habilitar usuario root y permitir login por ssh

Hola Mundo:
Ubuntu impuso la moda de deshabilitar el usuario root y que todas las operaciones que requerían privilegios se hicieran a través de sudo. Esto fue una ventaja desde el punto de vista de seguridad, ya que la superficie expuesta era mucho menor. 

El procedimiento es sencillo, pero hay que tener consideración con la seguridad.

sudo passwd root

Con esto se le asigna una contraseña al usuario root. Para permitir el acceso por ssh hay que ir a /etc/ssh/sshd_config y buscar la opcion PermitLogin y dejarla en yes.


Luego se reinicia el servicio

sudo /etc/init.d/sshd restart

Con esta configuración aplicada ya estarían en condiciones de usar el usuario root.

Espero que hayan disfrutado este micro post.

miércoles, 7 de junio de 2017

Mover la ubicación de la base de datos de SCCM

Hola Mundo

La organización del almacenamiento de un servidor de base de datos es crucial para el rendimiento y
correcta operación de ésta. Requiere de constante monitoreo y cambios, en el caso de ser necesario, para mantener la continuidad operativa del servicio.

Mover el archivo de datos y archivo de log de una base de datos de un directorio a otro puede sonar una tarea trivial. Este tipo de operación requiere de una planificación previa, ventana de mantenimiento para bajar el servicio y un plan de rollback, en caso de fallo.

La base de datos de SCCM es crucial para el funcionamiento de la plataforma completa. Es aquí donde se almacenan todos los datos y configuraciones. Por lo que un mal funcionamiento de la base de datos, provocaría un comportamiento errático, o bien, dejaría fuera de servicio a la solución.

Cuando se mueve la base de datos de SCCM de un directorio físico a otro, conservando el servidor, es necesario volver a setear la propiedad TRUSTWORTHY de la base de datos.

Básicamente, esta propiedad indica si la instancia de SQL Server confía en la base de datos o no. Para la operación de la solución, la instancia debe confiar en la base de datos posterior al cambio.

En el caso que no se configure la propiedad, se generarán muchos problemas al momento de distribuir  una actualización a través del rol Software Update Point y WSUS.
El error que van a encontrar es:

*** *** Unknown SQL Error! SMS Provider 14-03-2012 07:56:47 2016 (0x07E0) 
*~*~*** Unknown SQL Error! ThreadID : 2016 , DbError: 50000 , Sev: 16~*~* SMS Provider 14-03-2012 07:56:47 2016 (0x07E0) 
*** [24000][0][Microsoft][SQL Server Native Client 10.0]Invalid cursor state SMS Provider 14-03-2012 07:56:48 2016 (0x07E0) 
*~*~[24000][0][Microsoft][SQL Server Native Client 10.0]Invalid cursor state *** Unknown SQL Error! ThreadID : 2016 , 
DbError: 0 , Sev: 0~*~* SMS Provider 14-03-2012 07:56:48 2016 (0x07E0) 

El caso está descrito en el sitio de soporte de Microsoft y tiene los pasos precisos para la solución
https://support.microsoft.com/en-us/help/3057073/after-the-system-center-2012-configmgr-sql-site-database-is-moved,-you-cannot-create-a-software-update-package-or-application

Espero que les sirva.

domingo, 28 de mayo de 2017

Recomendaciones sobre WSUS y SCCM

Hola Mundo:

Este artículo no pretende ser una guía paso a paso para la instalación y configuración de Windows
Server Update Services para System Center Configuration Manager. Más bien es una serie de recomendaciones, basadas en la literatura y en la experiencia, para que ambos servicios trabajen de la mejor manera posible.

Base de datos
Por defecto, el asistente de instalación del rol estará configurado para usar un Windows Internal Database. Este motor de datos, es un SQL Server muy pequeño que funciona sobre Windows Server. 
Utilizarlo no es la mejor práctica en este escenario. Lo mejor es usar un servidor SQL Server aparte. Usar el mismo SQL Server que SCCM es una buena idea (siempre y cuando se cumplan las mejores prácticas). Esto facilita la administración y el mantenimiento de SUSDB.

Asistente de configuración de rol
Una vez que el rol termina de instalar, es necesario ejecutar un asistente de configuración del rol. En este asistente se indica la ruta donde se descargarán las actualizaciones. Es importante ejecutarlo para que SCCM reconozca que el rol está completamente operativo.
Esta consola ya no debe usarse para la distribución de actualizaciones. Solo debe usarse para vigilar la sincronización y ejecutar tareas de limpieza.

Sincronización
Dependiendo de la arquitectura de la solución de SCCM y WSUS, la configuración de este punto va a   permitir que el servidor pueda sincronizar con el catálogo de actualizaciones en línea. 
En el caso que sea el mismo servidor que sale a internet, no debe existir ninguna URI configurada. En el caso que sea otro servidor el que hace la sincronización del catálogo, como el caso de CAS, la URI debiera estar configurada y apuntando al puerto que corresponda. Si es un Windows Server 2012 sin SSL, el puerto es 8530. Si tiene SSL el puerto será 8531. Si es un servidor de una versión inferior, el puerto será el 80.
Esta configuración debe ser configurada en las opciones de configuración del rol Software Update Point en SCCM. 

IIS App Pool
WSUS es un rol que basa gran parte de su funcionamiento en servicios web. Éstos servicios web corren sobre Internet Information Services (IIS). 
Al ser una aplicación, utiliza un App Pool con sus propias configuraciones, pero manejables desde la consola de IIS. De vez en cuando, requieren de ajustes para el uso de CPU y memoria. Tiene a consumir bastante cuando tiene una carga considerable de trabajo de distribución de actualizaciones. Recomiendo esta lectura: http://blog.maximilianomarin.com/2017/01/wsus-no-sincroniza-con-sccm-error-503.html

GPO
No es necesario usar una GPO para indicarle a los equipos del dominio dónde deben ir a buscar las actualizaciones. De eso se encargan los Client Settings de SCCM. En el caso que  exista una política, SCCM nunca podrá instalar actualizaciones en las máquinas, porque el dominio tiene mayor "poder" sobre las estaciones de trabajo. Recomiendo esta lectura http://blog.maximilianomarin.com/2016/09/error-al-distribuir-updates-con-sccm.html

Matenimiento
Es más que necesario ejecutar un plan de limpieza mensual en WSUS para que el servicio opere de forma correcta. Esto implica hacer una limpieza del catálogo, actualizaciones y mantenimiento sobre la base de datos.  Recomiendo esta lectura https://blogs.technet.microsoft.com/configurationmgr/2016/01/26/the-complete-guide-to-microsoft-wsus-and-configuration-manager-sup-maintenance/


Eso es todo por hoy. Tomen en cuenta las recomendaciones. Espero que les sirvan.

Chau.

viernes, 19 de mayo de 2017

Consideraciones para la instalacion de Cumulative Updates en SCCM

Hola Mundo:

Los cumulative update son paquetes que incluyen actualizaciones que corrigen fallos de las

plataformas, agregan características nuevas y van quitando aquellas que no son ampliamente usadas o las que ya no se utilizan.
Estos paquetes se liberan con cierta periodicidad y es importante estar atento a la liberación de éstos.
Este artículo pretende dar algunas recomendaciones para la instalación de algún cumulative update en System Center Configuration Manager.
¿Instalarlos o no?
Es muy importante tener en consideración que el rubro de las tecnologías de la información es muy dinámico y variable, por lo tanto, siempre los productos están implementando características nuevas y siempre están saliendo nuevos sistemas operativos que requieren de funcionalidades nuevas. 
No instalarlos es patear el trabajo para más adelante y no sacarle el máximo provecho a la tecnología.

Respaldos
Siempre. Antes de hacer cualquier cambio, es necesario contar con los respaldos al día y de fácil acceso.

Ventana de mantenimiento
Un reinicio luego de la instalación del paquete nunca viene mal. Considerar la instalación y el reinicio en un horario no productivo o cuando se tenga la certeza que no impactará en las operaciones de los usuarios.

¿Dónde empezar?
Dependerá de la implementación que se quiera actualizar. Si es una estructura jerárquica, se recomienda partir desde lo más arriba hacia abajo. Si se tiene un CAS, partir desde el CAS hacia los otros sitios. Si es solo un servidor, partir por el servidor, luego la consola y al final los agentes.

¿Se debe instalar todos los CU anteriores antes de instalar el actual?
Dependerá del CU que se esté instalando. Por ejemplo, el CU4 de la versión 2012 R2 reemplaza a los anteriores. Siempre es una buena idea leer la descripción del CU antes de aplicarlo.

Descripción del CU
Como todo paquete de actualización tiene su respectiva entrada en el sitio de soporte de Microsoft. Leerlo antes de comenzar es un buen comienzo.

La pantalla de inicio de instalación del CU nos dará más información



Si queda alguna duda sobre el paquete que se quiere instalar, consultar en los foros de Technet, Server Fault  o alguno otro de su preferencia.



viernes, 5 de mayo de 2017

Cambio de hora 2017

Hola Mundo:

El día de hoy Microsoft liberó un nuevo hotfix opcional para el cambio de hora en Chile.

Lo único que cambia con respecto al anterior, es que se agrega la nueva zona horaria para la región de Magallanes.

El código del hotfix opcional es KB4015193 y pueden encontrar más referencia en:

https://support.microsoft.com/en-us/help/4015193/dst-changes-in-windows-for-magallanes-chile

Esta actualización ya está disponible para ser distribuida por WSUS o para ser descargada desde el catalogo http://www.catalog.update.microsoft.com/search.aspx?q=4015193

Es importante tener en cuenta que para distribuir este hotfix en máquinas Windows 8.1 o Windows Server 2012 R2, es necesario tener instalado el siguiente update rollup:
https://support.microsoft.com/en-us/help/2919355/windows-rt-8.1,-windows-8.1,-and-windows-server-2012-r2-update-april-2014

¡A parchar, a parchar!

sábado, 22 de abril de 2017

Obtener los contenedores donde se descubren equipos

¡Qué belleza que desde cierto año en adelante todos los productos de Microsoft se administran desde la consola de Powershell!

Esto da muchas prestaciones al momento de obtener información, realizar otro tipo de tareas administrativas no soportadas desde la administración gráfica o automatizar procesos.

Yendo al contexto, SCCM trabaja sobre Active Directory para el descubrimiento de usuarios, grupos y equipos. El descubrimiento específico para equipos se llama Active Directory System Discovery y, según la configuración aplicada, se ejecuta siguiendo una agenda y hace el descubrimiento en contenedores y unidades organizativas.

El listado de OU descubiertas se puede obtener directamente desde la consola, pero en un formato que no es exportable. Se torna complejo saber cuáles son cuando ya son un número considerable.

La solución está en hacerlo desde Powershell de SCCM. Primero que todo, hay que iniciar una sesión en el Powershell de SCCM.
Usar el siguiente script, asumiendo que el codigo de CLP y el servidor es MI-SCCM

PS CLP:\> $ADDiscovery = Get-CimInstance -ComputerName "MI-SCCM" -Namespace "root\SMS\site_CLP" -ClassName SMS_SCI_Component -Filter 'ComponentName="SMS_AD_SYSTEM_DISCOVERY_AGENT"'

PS CLP:\> $ADContainerProp = $ADDiscovery.PropLists | Where-Object {$_.PropertyListName -eq 'AD Containers'}

PS CLP:\> $ADContainerProp.Values

De esta forma, se obtendrá un listado en texto plano en Powershell para usarlo como se estime conveniente.

Espero que sea de utilidad.

Hasta la proxima entrega.

viernes, 24 de marzo de 2017

Obtener la ciudad del cliente en PHP

Hola Mundo:

Ya saben, estoy metiéndome poco a poco en desarrollo y les quiero compartir un trocito de código que utilicé en un proyecto.
El objetivo de este código  es obtener la ciudad del visitante a partir de la dirección IP.


 $ip = $_SERVER['REMOTE_ADDR'];
 $url = "http://freegeoip.net/json/".$ip;
 $data = file_get_contents($url);
 $obj = json_decode($data);
 $ciudad = $obj->city;

El codigo es sencillo. Obtiene un archivo JSON desde el servicio de Free Geo IP, lo procesa y almacena la ciudad en una variable.

Sencillo, ¿no?

jueves, 2 de marzo de 2017

Inventarios muy grandes en SCCM

Hola Mundo!
¿Qué tal la vida? ¿Las vacaciones? ¿El tiempo de verano? Se apareció marzo, pues. Nada que hacer.

El día de hoy, les compartiré un error habitual en SCCM a la hora de recolectar inventarios.
Una de las principales funciones de SCCM es mantener inventarios actualizados de las estaciones de trabajo que administra. Es bien completo y se puede manejar, con precisión, qué es lo que se va a inventariar. 

El problema se presenta cuando el inventario es muy grande y el archivo que llega al servidor excede los 5 MB. Ese es el tamaño máximo permitido por la plataforma.

El error que nos podemos encontrar es el siguiente:


Inventory Data Loader failed to process the file C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\Process\XXXXXX.MIF because it is larger than the defined maximum allowable size of 5000000.

Solution: Increase the maximum allowable size, which is defined in the registry key HKLM\Software\Microsoft\SMS\Components\SMS_INVENTORY_DATA_LOADER\Max MIF Size (the default is 5 MB), and wait for Inventory Data Loader to retry the operation.


 El mismo mensaje de error nos sugiere qué hacer. Modificar el Registro de Windows. Navegar hacia la clave HKLM\Software\Microsoft\SMS\Components\SMS_INVENTORY_DATA_LOADER\Max  MIF Size y aumentar el valor.

Eso es todo.

Simple, ¿no?


miércoles, 18 de enero de 2017

Enviar datos a Azure Mobile Apps usando jQuery

Hola Mundo:

Este artículo es un tanto distinto a los que siempre se publican. Esta vez es sobre desarrollo, pero
consumiendo servicios publicados en Microsoft Azure.

Azure Mobile Apps es un servicio de Microsoft Azure que permite levantar, sin mayor esfuerzo, un backend para aplicaciones móviles. Este backend puede estar construido con ASP.NET o Node.js.
De cualquier manera, provee las herramientas para generar una REST API lista para ser consumida desde las aplicaciones cliente.

Me refiero a aplicaciones cliente y no móviles, porque estos servicios pueden ser consumidos desde cualquier lugar. Incluso desde un sistema web usando Javascript.

En este caso puntual, compartiré una ayuda de memoria para enviar datos usando jQuery usando el método AJAX:
$.ajax({
 type: "POST",
 contentType: "application/json; charset=UTF-8",
 url: "https://xxxxxxx.azurewebsites.net/tables/xxxxxx",
 headers: {'ZUMO-API-VERSION': '2.0.0', 'Content-Type': 'application/json'},
 data: JSON.stringify({
  "Campo1": "Valor1",
    "Campo2": "Valor2"
 }),
 dataType: "json",
 accept:  "json",
 success: function(datos){
   console.log(datos)
   alert('Datos reportados correctamente')
 },
 error: function(jqXHR, estado, error){
   console.log(estado)
   console.log(error)
 },
 complete: function(jqXHR, estado){
   console.log(estado)
 },
 timeout: 1000000000
});

Lo relevante:

  • El type es POST. No olvidar que estamos enviando datos al servidor. Si tienes duda sobre esto, revisa este link: http://www.restapitutorial.com/lessons/httpmethods.html
  • contentType debe ser "application/json; charset=UTF-8". El servidor recibe datos en formato JSON. De otra forma, arrojará error 500.
  • La url es la dirección web del servicio. Esta es la forma más estándar si es que no han creado una personalizada.
  • La cabecera de la petición se indica en headers. Siempre debe estar incluido 'ZUMO-API-VERSION': '2.0.0' y  'Content-Type': 'application/json'. En el caso que alguno falte, la consola indicará que hace falta una de las dos y arrojará un error 500 o 400.
  • En data se indican los datos que se enviarán. El método stringify del objeto JSON es el encargado de hacer que los datos que estamos enviando sigan el formato de JSON.  Recuerden que en contentType y en la cabecera se indica que estamos enviando datos en formato JSON. Si esto no está, recibirán un error 400.
  • El atributo accept le indica al servidor el formato en el que se requiere la respuesta.
  • El atributo dataType es usado por jQuery para "formatear" la respuesta antes de dejarla disponible para el trabajo con ella.
  • Success indica la función que se ejecutará cuando los datos se reporten correctamente.
  • Error indica la función que se ejecutará cuando se produzca un error en el reporte de datos.
  • Complete indica la función que se ejecutará luego de la ejecución de lo indicado en Success o Error.
  • Timeout indica el tiempo total de espera, en milisegundos, antes de cancelar la operación. Previene una ejecución casi infinita de la solicitud.
Nada más quería estar a la moda y jugar un rato con Javascript y Azure.

Espero que les sea de su total utilidad.

miércoles, 4 de enero de 2017

WSUS no sincroniza con SCCM. Error 503

Primer artículo del año. 

Este año se abre con una problemática muy habitual de WSUS y SCCM y guarda relación cuando el
rol de Software Update Point de SCCM no logra conectarse con el servicio de WSUS para gatillar la la actualización del catálogo de actualizaciones para los productos Microsoft seleccionados.

El servicio de WSUS provee una capa de servicios web que otros componentes, como SCCM, consumen para la interoperación.

El signo observado es el error de SCCM al sincronizar con el servicio. Al revisar el log SMS_WSUS_SYNC_MANAGER vamos a encontrar el siguiente mensaje:

Message ID: 6703 WSUS Synchronization failed. Message: The request failed with HTTP status 503: Service Unavailable. Source: Microsoft.UpdateServices.Administration.AdminProxy.CreateUpdateServer.

Básicamente, lo que se indica es que al intentar acceder al servicio web, éste le responde con un error 503. 
Si hacen el ejercicio de entrar por el navegador a la URL del servicio, el resultado será el mismo.

Al abrir la consola de IIS y revisar los App Pool encontrarán que WsusPool se encontrará detenido:
fuente: Blogs Technet

Ahí está el problema. El App Pool se encuentra detenido. Tienes dos opciones: Inciarlo de forma manual y esperar a que nuevamente se caiga, o bien, solucionar el problema.

Me inclino por la segunda opción. El problema está en que el App Pool cuenta con memoria asignada insuficiente para atender las peticiones de los clientes. Cuando hay muchos clientes haciendo uso del servicio, se va a utilizar toda la memoria y el servicio se detendrá.

Para corregir el problema entrar a las opciones avanzadas y buscar el elemento Private Memory Limit (KB) y asignarle un valor mayor. Quizá unos 4 ó 5 GB estará bien.
Fuente: Blogs Technet

Advertencia: Al aumentar la memoria asignada, el uso de recursos del servidor aumentará y provocará una carga mayor sobre el mismo. Al acceder muchos clientes al mismo servidor para la descarga de actualizaciones, es altamente probable que la red sufra un alto impacto. Si esto ocurre, sugiero revisar la arquitectura de distribución de paquetes.

Una vez realizado el cambio, iniciar el App Pool y el servicio funcionará normalmente.

Saludos!