¿Preocupado por compartir el monitoreo? tomar holgura

La infraestructura de mensajería de la empresa suele ser uno de los sistemas más importantes. Todo administrador conoce la importancia de la supervisión constante de Exchange. Esto no es solo para evitar el tiempo de inactividad y solucionar problemas rápidamente, sino también para conocer la infraestructura de la infraestructura para ayudar a identificar problemas potenciales y detectar un rendimiento reducido antes de que se conviertan en problemas reales y provoquen tiempos de inactividad.

Las soluciones de monitoreo como System Center Operations Manager (SCOM), SolarWinds, Nagios y MailScape son algunos ejemplos de herramientas de monitoreo para Exchange. Sin embargo, no todas las organizaciones tienen los medios y las oportunidades para adquirirlos y utilizarlos. Además, muchas soluciones de monitoreo alertan a los administradores exclusivamente por correo electrónico, lo que puede ser problemático si se interrumpe el flujo de correo, o a través de un tablero al que los administradores pueden no tener acceso fuera del horario comercial.

A lo largo de mi carrera, he desarrollado varios escenarios que funcionan constantemente. X minutos y, si detectan algún problema con Exchange, envían una alerta por correo electrónico. Sin embargo, hay dos problemas con este enfoque:

  1. Como se mencionó, si el flujo de correo se ve afectado, los administradores no recibirán una notificación por correo electrónico.
  2. Si no está en la oficina, no todos revisan constantemente el correo electrónico, lo que significa que el administrador puede tardar un tiempo en descubrir que algo anda mal.

Por estas razones, aprendí los mejores métodos para enviar notificaciones a mi teléfono cuando algo andaba mal con Exchange. Probé la solución de administración de dispositivos móviles (MDM) que estábamos usando en ese momento, pero parecía que no había forma de interactuar con su API para enviar alertas mediante programación. La alternativa que también estaba considerando era WhatsApp. Aunque PowerShell se puede utilizar para enviar mensajes de WhatsApp, tiene varios inconvenientes, como la necesidad de registrar destinatarios en un servicio como Puerta de enlace WhatsMate WA y que tendré que mantener una lista de usuarios a los que les gustaría recibir notificaciones sobre mis scripts. Los usuarios no podrán habilitar u optar por no recibir notificaciones por su cuenta.

Índice

Lento para ayudar

Lento es una aplicación de mensajería de equipo incluso utilizada por el equipo de la NASA detrás del rover Curiosity Rover. Slack se está volviendo extremadamente popular y empiezo a entender por qué. Solo mira el video a continuación y juzga por ti mismo. No voy a explorar en este artículo cómo funciona Slack, pero según mi experiencia limitada con él, parece muy bueno.

https://www.youtube.com/watch?v=9RJZMSsH7-g

Nos suscribimos a Slack creando un archivo equipo en formato nombre_equipo.slack.com. Obviamente, usamos el nombre de la empresa como nuestro equipo de Slack, por ejemplo empresa.slack.com. Este equipo tendrá uno o más "grupos de chat". Canales organizar charlas de equipo. Por ejemplo, podemos crear un canal para un proyecto o un tema específico. Para probar Slack, creé un canal llamado Exchange:

canales slaky

Una vez que el canal está configurado y los usuarios se unen o los invitamos, podemos iniciar una conversación:

Canal de intercambio Slack

El propósito de usar Slack es básicamente enviar mensajes mediante programación, así que veamos cómo podemos hacerlo.

Para enviar datos a Slack en tiempo real, ganchos web son usados. Los webhooks son una forma de enviar mensajes desde fuentes externas a Slack. Usan solicitudes HTTP regulares con una carga JSON que incluye mensajes de texto, archivos adjuntos y otras funciones. Pero no te preocupes, ¡no necesitaremos aprender JSON!

El primer paso es hacer la prueba. token de OAuth para nuestras pruebas. Este token nos dará a nosotros y a todos los que lo tengan, acceso completo a nuestros datos privados y a todo nuestro equipo (todos los canales), ¡así que mantenerlo en secreto es extremadamente importante! Para obtenerlo, inicie sesión en su comando Slack (usando un navegador, no un programa), y luego vaya a Tokens para pruebas y desarrollo página.

Una vez que tenemos un token, siempre podemos volver a publicarlo, por ejemplo, si alguien logra obtenerlo:

ficha de holgura

No crearemos cargas útiles JSON nosotros mismos. En cambio, confiaremos en los módulos de PowerShell que ya han sido desarrollados por otras personas. Después de todo, ¿por qué inventar una bicicleta? De los pocos que revisé, uno de Warren Frame, lo hizo DivagaciónCookieMonsterparece ser el mejor. Así que intentemos usarlo.

Ve hacia eso Página de PSSlack en GitHub, descargue el módulo PowerShell e instálelo o impórtelo en su estación de trabajo de prueba. Una vez hecho esto, debe acceder a los cmdlets de PSSlack:
Get-Command -Module PSSlack
Get-Help Send-SlackMessage -Full

... y así.

Envía mensajes de Slack usando PowerShell

Ahora que tenemos el token y el módulo de PowerShell, estamos listos para comenzar, ¡así que comencemos a probar! Comenzamos guardando nuestro token en una variable. No es realmente necesario, pero lo hago para que el código sea más fácil de leer. A continuación usamos Enviar mensaje de Slack cmdlet para enviar un mensaje a nuestro intercambio canal:

$token = “xoxp-50080309206-(...)”
Send-SlackMessage -Token $token -Channel “#exchange” -Parse Full -Text “High mail queues on EXCH1MDB01: 317 emails”

Envía el primer mensaje de Slack usando PowerShell

Una vez que ejecutemos el comando, recibiremos una confirmación de que el mensaje ha sido enviado (bueno: cierto). Cuando regresemos a nuestro canal en nuestra PC, ¡veremos nuestro primer mensaje de Slack usando PowerShell!

El primer mensaje de Slack de Exchange

Obviamente, en realidad no verificamos las colas de correo en el servidor EXCH1 hasta ahora, pero llegaremos a eso pronto.

Exchange es un mensaje de falla

El siguiente ejemplo muestra una advertencia que podemos enviar desde un script que encontró que Exchange no estaba funcionando. Incluye un archivo adjunto para crear un mensaje formateado.

Add-Type –Assembly “System.Drawing”

$slackAttach = New-SlackMessageAttachment -Color $([System.Drawing.Color]::Red) -Title "Exchange might be down!" -TitleLink https://dashboard.company.com -Text "Please action immediately!" -Pretext "System Unresponsive" -FallBack "Exchange might be down!"

$slackAttach | New-SlackMessage -Channel "#exchange" -IconEmoji :warning: -AsUser -Username "Exchange Admin" | Send-SlackMessage -Token $Token

El intercambio no es rico Slack Mmssage

Bien, ¡esto empieza a verse mejor! puedes canalizar Nuevo archivo adjunto de mensaje de Slack oficina Nuevo mensaje de Slackpero lo separé para que sea más fácil de leer.

Tenga en cuenta que "¡Es posible que Exchange no esté funcionando!" el texto también es una referencia al tablero interno. Esto podría ser, por ejemplo, el tablero SCOM o Splunk. Para destacar, usamos rojo y un ícono de advertencia. Y sí, podemos usar muchos emojis diferentes ?

Obtenga datos en vivo de Exchange

En nuestro próximo ejemplo, comenzamos a obtener datos en vivo de Exchange e informes al respecto. Este ejemplo simple simplemente envía un mensaje que contiene cierta información sobre una base de datos de buzones llamada MDB01:

$exchDB = Get-MailboxDatabase “MDB01” -Status | Select Name, LastFullBackup, DatabaseSize, Mounted, ServerName

$slackFields = [PSCustomObject] @{
Name = $exchDB.Name
BCK = $exchDB.LastFullBackup
Size = $exchDB.DatabaseSize.Split("(")[0]
Mounted = $exchDB.Mounted
Server = $exchDB.ServerName
Users = (Get-Mailbox -Base de datos $exchDB.Name -ResultSize Unlimited).Count
} | New-SlackField -Short

Add-Type -Assembly "System.Drawing"
$slackAttach = New-SlackMessageAttachment -Color $([System.Drawing.Color]::Green) -Fields $slackFields -Fallback "DB Info"

$slackAttach | New-SlackMessage -Channel "#General" -IconEmoji :information_source: -AsUser -Username "Exchange Admin" | Send-SlackMessage -Token $Token

El resultado final es el siguiente:

Mensaje flojo con un archivo adjunto

Cada mensaje puede contener hasta 100 archivos adjuntos, por lo que podríamos enviar un mensaje separado con los detalles de cada base de datos o, preferiblemente, crear un archivo adjunto para cada base de datos y luego enviar un mensaje con todos estos archivos adjuntos. Aquí hay un ejemplo de un solo mensaje con dos archivos adjuntos:

Mensaje de Slack con varios archivos adjuntos

Supervisión de colas de intercambio

Veamos cómo podemos monitorear las colas de tráfico de Exchange y emitir una advertencia si la cantidad total de correos electrónicos en la cola excede un cierto límite. Para lograr esto, obtenemos colas de todos los servidores, desactivamos todos los correos electrónicos con redundancia instantánea y contamos la cantidad total de correos electrónicos en todas las colas. Luego, si ese número supera nuestro límite, enviamos una alerta. Obviamente, este es un script básico solo para fines de demostración. En un entorno de producción, probablemente necesitará varias configuraciones, como un límite de umbral, colas o servidores para encender/apagar, etc.

While ($True) {

[Int] $msgCount = 0
Get-TransportService | Get-Queue | Where {$_.MessageCount -gt 0 -and $_.DeliveryType -notlike "Shadow*"} | ForEach {$msgCount += $_.MessageCount}

If ($msgCount -gt 20) {
$slackAttach = New-SlackMessageAttachment -Color $([System.Drawing.Color]::Red) -Title "High Mail Queues!" -Text "Total queued emails: $msgCount." -FallBack "High Mail Queues!"
$slackAttach | New-SlackMessage -Channel "#exchange" -IconEmoji :warning: -AsUser -Username "Exchange Admin" | Send-SlackMessage -Token $Token
}

Start-Sleep –Seconds 1800
}

Este es el resultado cuando el script activa una advertencia:

Monitoreo de colas de correo de intercambio

Cambiar al teléfono móvil con mensajes de Slack

Hasta ahora hemos visto cómo se ven estas alertas en la versión del navegador de Slack, pero el objetivo principal de usar Slack, ante todo, es permitir que los administradores reciban estas alertas en sus teléfonos. Entonces, veamos cómo se ve esta última alerta. aplicación móvil de holgura.

Si el mensaje se recibe por primera vez y siempre que el teléfono esté bloqueado, en la pantalla de bloqueo se muestra una notificación con el nombre de nuestra alerta:

Notificación de mensajes de Slack en el móvil

Cuando abrimos la app y pasamos a la nuestra intercambio canal, podemos ver esta última advertencia más todas las anteriores que generamos:

Mensajes de Slack en la aplicación móvil

Si enviamos un mensaje más simple o simplemente ponemos detalles de alerta en Título campo, podemos ver lo que sucede desde la propia notificación sin tener que abrir la aplicación:

Notificación de mensajes de Slack con detalles

Mensaje de holgura en la aplicación móvil

Monitoreo remoto de búsqueda y uso compartido

Usando este módulo de PowerShell, también podemos buscar mensajes específicos en nuestro canal usando el comando Find-SlackMessage:

Find-SlackMessage –Token “our_token” –Query “what_to_search”

En el siguiente ejemplo, busco cualquier mensaje que contenga esta palabra transacción. Luego clasifico los resultados por fecha y selecciono el primer mensaje que regresa para obtener el último mensaje que contiene esa palabra. transacción enviado a cualquier canal:

Find-SlackMessage –Token “our_token” –Query “transaction” -SortBy TimeStamp | Select -First 1 | Format-List

Buscar mensajes de Slack con PowerShell

Tenga en cuenta que se devuelve la marca de tiempo en hora UTC y no la hora que se muestra en mi teléfono o navegador.

Usando este método de búsqueda, incluso podemos desarrollar un guión que todos X Minutos escanea un canal específico (o todos los canales, para el caso) y lee lo que publican los usuarios. Si detecta un cmdlet de Exchange, el script lo ejecutará y publicará el resultado en el mismo canal. Esto es útil para verificar/solucionar problemas rápidamente cuando los administradores están inactivos y no tienen acceso al entorno de Exchange. Obviamente, sería muy importante limitar la cantidad de cmdlets que se ejecutan (no Colocar- * cmdlets) o restringir la secuencia de comandos para que no ejecute solo los comandos publicados por un usuario específico, p.

En la siguiente captura de pantalla vemos al usuario nuño publicó un cmdlet para verificar el tamaño de su buzón y un script que responde un minuto a Nuno con el lanzamiento de ese cmdlet:

Informes de intercambio con Slack

Usando el método de búsqueda que discutimos anteriormente, podemos ver quién publicó el cmdlet (nombre de usuario), el propio cmdlet (texto), e incluso cualquier publicación anterior o futura (anterior y Siguiente). Aquí vemos que el siguiente mensaje después de esto es en realidad una respuesta de secuencia de comandos:

Buscar mensajes en Slack usando PowerShell


La versatilidad de Slack la convierte en una aplicación de mensajería muy popular para muchas organizaciones. En este artículo, vimos cómo podemos usarlo para monitorear Exchange y enviar alertas a los administradores de dispositivos móviles. Sin embargo, con todas las funciones disponibles en Slack, podemos hacer cosas aún mejores. ¡Solo usa tu imaginación!



Si quieres conocer otros artículos similares a ¿Preocupado por compartir el monitoreo? tomar holgura puedes visitar la categoría Tutoriales.

Artículos de interés

Subir

Si continuas utilizando este sitio aceptas el uso de cookies. Más información