Para un administrador de sistemas novato: cómo crear orden a partir del caos

Para un administrador de sistemas novato: cómo crear orden a partir del caos

Soy administrador del sistema FirstVDS y este es el texto de la primera conferencia introductoria de mi curso corto sobre cómo ayudar a colegas novatos. Los especialistas que recientemente han comenzado a dedicarse a la administración de sistemas se enfrentan a varios de los mismos problemas. Para ofrecer soluciones, me comprometí a escribir esta serie de conferencias. Algunas cosas que contiene son específicas del soporte técnico de hosting, pero en general, pueden ser útiles, si no para todos, sí para muchos. Así que adapté el texto de la conferencia para compartirlo aquí.

No importa cómo se llame tu puesto, lo que importa es que en realidad estés involucrado en la administración. Por lo tanto, comencemos con lo que debe hacer un administrador del sistema. Su tarea principal es poner las cosas en orden, mantener el orden y prepararse para futuros aumentos del orden. Sin un administrador del sistema, el servidor se vuelve un desastre. Los logs no se escriben, o en ellos se escriben cosas equivocadas, los recursos no se distribuyen de manera óptima, el disco se llena de todo tipo de basura y el sistema comienza a morir lentamente de tanto caos. ¡Tranquilamente! ¡Los administradores del sistema en su persona comienzan a resolver problemas y eliminar el desorden!

Pilares de la administración de sistemas

Sin embargo, antes de empezar a resolver problemas, conviene familiarizarse con los cuatro pilares principales de la administración:

  1. Documentación
  2. Plantillas
  3. Mejoramiento
  4. Automatización

Esto es lo básico. Si no construye su flujo de trabajo sobre estos principios, será ineficaz, improductivo y, en general, tendrá poco parecido con una administración real. Veamos cada uno por separado.

Документация

Документация No significa leer documentación (aunque no se puede prescindir de ella), sino también mantenerla.

Cómo conservar la documentación:

  • ¿Ha encontrado un nuevo problema que nunca antes había visto? Anotar los principales síntomas, métodos de diagnóstico y principios de eliminación.
  • ¿Se le ha ocurrido una solución nueva y elegante para un problema común? Anótalo para no tener que reinventarlo dentro de un mes.
  • ¿Te ayudaron a resolver una pregunta que no entendiste? Escriba los puntos y conceptos principales, dibuje un diagrama usted mismo.

La idea principal: no debes confiar completamente en tu propia memoria a la hora de dominar y aplicar cosas nuevas.

El formato en el que lo harás depende de ti: podría ser un sistema con notas, un blog personal, un archivo de texto, un bloc de notas físico. Lo principal es que sus registros cumplan con los siguientes requisitos:

  1. No tardes demasiado. Resalte las ideas, métodos y herramientas principales. Si comprender un problema requiere sumergirse en la mecánica de bajo nivel de asignación de memoria en Linux, no reescriba el artículo del que lo aprendió; proporcione un enlace al mismo.
  2. Las entradas deben ser claras para usted. si la linea race cond.lockup no le permite comprender de inmediato lo que describió en esta línea: explique. No se necesita media hora para comprender una buena documentación.
  3. La búsqueda es una característica muy buena. Si escribe publicaciones de blog, agregue etiquetas; Si es un cuaderno físico, pegue pequeños post-its con descripciones. La documentación no tiene mucho sentido si dedicas tanto tiempo a buscar una respuesta en ella como a resolver la pregunta desde cero.

Para un administrador de sistemas novato: cómo crear orden a partir del caos

Así es como puede verse la documentación: desde notas primitivas en un bloc de notas (imagen de arriba) hasta una base de conocimientos multiusuario completa con etiquetas, búsqueda y todas las comodidades posibles (abajo).

Para un administrador de sistemas novato: cómo crear orden a partir del caos

No sólo no tendrás que buscar las mismas respuestas dos veces, sino que documentar será de gran ayuda para aprender nuevos temas (¡notas!), mejorará tu sentido arácnido (la capacidad de diagnosticar un problema complejo con una mirada superficial), y añadirá organización a tus acciones. Si la documentación está disponible para sus colegas, les permitirá descubrir qué y cómo acumuló allí cuando no está allí.

Plantillas

Plantillas es la creación y uso de plantillas. Para solucionar los problemas más típicos, conviene crear una plantilla de acción específica. Se debe utilizar una secuencia estandarizada de pasos para diagnosticar la mayoría de los problemas. Cuando haya reparado/instalado/optimizado algo, el rendimiento de ese algo debe verificarse utilizando listas de verificación estandarizadas.

Las plantillas son la mejor manera de organizar su flujo de trabajo. Al utilizar procedimientos estándar para resolver los problemas más comunes, se obtienen muchas cosas interesantes. Por ejemplo, el uso de listas de verificación le permitirá diagnosticar todas las funciones que son importantes para su trabajo y descartar el diagnóstico de funciones sin importancia. Y los procedimientos estandarizados minimizarán los lanzamientos innecesarios y reducirán la probabilidad de error.

El primer punto importante es que también es necesario documentar los procedimientos y las listas de verificación. Si sólo confía en la memoria, puede perderse alguna verificación u operación realmente importante y arruinarlo todo. El segundo punto importante es que todas las prácticas modelo pueden y deben modificarse si la situación lo requiere. No existen plantillas ideales y absolutamente universales. Si hay un problema, pero la verificación de la plantilla no lo reveló, esto no significa que no haya problema. Sin embargo, antes de comenzar a probar algunos problemas hipotéticos poco probables, siempre vale la pena realizar primero una prueba rápida de plantilla.

Optimización

Optimización habla por si mismo. El proceso de trabajo debe optimizarse al máximo en términos de tiempo y costes laborales. Hay innumerables opciones: aprender atajos de teclado, abreviaturas, expresiones regulares, herramientas disponibles. Busque usos más prácticos de estas herramientas. Si llama a un comando 100 veces al día, asígnelo a un atajo de teclado. Si necesita conectarse regularmente a los mismos servidores, escriba un alias en una palabra que lo conectará allí:

Para un administrador de sistemas novato: cómo crear orden a partir del caos

Familiarícese con las diferentes opciones disponibles para las herramientas; tal vez haya un cliente de terminal, DE, administrador de portapapeles, navegador, cliente de correo electrónico o sistema operativo más conveniente. Descubra qué herramientas utilizan sus colegas y amigos; tal vez las elijan por una razón. Una vez que tengas las herramientas, aprende a utilizarlas: aprende las claves, abreviaturas, consejos y trucos.

Haga un uso óptimo de las herramientas estándar: coreutils, vim, expresiones regulares, bash. Para los tres últimos hay una gran cantidad de manuales y documentación maravillosos. Con su ayuda, puedes pasar rápidamente del estado de "Me siento como un mono que casca nueces con una computadora portátil" a "Soy un mono que usa una computadora portátil para pedirme una galleta de nueces".

Automatización

Automatización transferirá operaciones difíciles de nuestras manos cansadas a las manos incansables de la automatización. Si algún procedimiento estándar se realiza en cinco comandos del mismo tipo, entonces ¿por qué no agrupar todos estos comandos en un archivo y llamar a un comando que descargue y ejecute este archivo?

La automatización en sí consiste en un 80% en escribir y optimizar sus propias herramientas (y otro 20% en intentar que funcionen como deberían). Podría ser simplemente una frase avanzada o una enorme herramienta omnipotente con una interfaz web y API. El criterio principal aquí es que crear una herramienta no debería requerir más tiempo y esfuerzo que la cantidad de tiempo y esfuerzo que la herramienta le ahorrará. Si pasa cinco horas escribiendo un script que nunca volverá a necesitar, para una tarea que le habría llevado una o dos horas resolver sin el script, esta es una optimización del flujo de trabajo muy pobre. Puedes dedicar cinco horas a crear una herramienta sólo si el número, el tipo de tareas y el tiempo lo permiten, lo que no suele ser el caso.

La automatización no significa necesariamente escribir guiones completos. Por ejemplo, para crear un montón de objetos del mismo tipo a partir de una lista, todo lo que necesita es una frase inteligente que hará automáticamente lo que haría a mano, cambiando entre ventanas, con un montón de copiar y pegar.

En realidad, si construye el proceso de administración sobre estos cuatro pilares, puede aumentar rápidamente su eficiencia, productividad y calificaciones. Sin embargo, esta lista debe complementarse con otro elemento, sin el cual trabajar en TI es casi imposible: la autoeducación.

Autoeducación del administrador del sistema

Para ser aunque sea un poco competente en esta área, es necesario estudiar y aprender cosas nuevas constantemente. Si no tienes el más mínimo deseo de afrontar lo desconocido y resolverlo, te quedarás estancado muy rápidamente. Constantemente aparecen todo tipo de nuevas soluciones, tecnologías y métodos en TI, y si no los estudias al menos superficialmente, estás en el camino del fracaso. Muchas áreas de la tecnología de la información se basan en una base muy compleja y voluminosa. Por ejemplo, operación de red. Las redes e Internet están en todas partes, te las encuentras todos los días, pero una vez que profundizas en la tecnología que hay detrás de ellas, descubrirás una disciplina enorme y muy compleja, cuyo estudio nunca es un paseo por el parque.

No incluí este elemento en la lista porque es clave para TI en general, y no solo para la administración del sistema. Naturalmente, no podrás aprender absolutamente todo de inmediato; simplemente, físicamente no tienes suficiente tiempo. Por eso, a la hora de educarte, debes recordar los niveles necesarios de abstracción.

No es necesario que aprenda de inmediato cómo funciona la administración de la memoria interna de cada utilidad individual y cómo interactúa con la administración de la memoria de Linux, pero es bueno saber qué es la RAM esquemáticamente y por qué es necesaria. No necesita saber en qué se diferencian estructuralmente los encabezados TCP y UDP, pero sería una buena idea comprender las diferencias básicas en el funcionamiento de los protocolos. No es necesario aprender qué es la atenuación de la señal en óptica, pero sería bueno saber por qué las pérdidas reales siempre se heredan entre nodos. No hay nada de malo en saber cómo funcionan ciertos elementos en un cierto nivel de abstracción y no necesariamente entender absolutamente todos los niveles cuando no hay ninguna abstracción (simplemente te volverás loco).

Sin embargo, en su campo, pensar en el nivel de abstracción "bueno, esto es algo que le permite mostrar sitios web" no es muy bueno. Las siguientes conferencias estarán dedicadas a una descripción general de las áreas principales con las que debe lidiar un administrador de sistemas cuando trabaja en niveles inferiores de abstracción. Intentaré limitar la cantidad de conocimientos revisados ​​a un nivel mínimo de abstracción.

10 mandamientos de la administración de sistemas

Entonces, hemos aprendido los cuatro pilares y fundamentos principales. ¿Podemos empezar a resolver problemas? Aún no. Antes de hacer esto, es recomendable familiarizarse con las llamadas “mejores prácticas” y reglas de buenos modales. Sin ellos, es probable que hagas más daño que bien. Vamos a empezar:

  1. Algunos de mis colegas creen que la primera regla es "no hacer daño". Pero me inclino a no estar de acuerdo. Cuando intentas no hacer daño, no puedes hacer nada; demasiadas acciones son potencialmente destructivas. Creo que la regla más importante es... "hacer una copia de seguridad". Incluso si haces algún daño, siempre puedes retroceder y todo no será tan malo.

    Siempre debes realizar una copia de seguridad cuando el tiempo y el lugar lo permitan. Necesita hacer una copia de seguridad de lo que cambiará y de lo que corre el riesgo de perder debido a una acción potencialmente destructiva. Es recomendable verificar la integridad de la copia de seguridad y la presencia de todos los datos necesarios. La copia de seguridad no debe eliminarse inmediatamente después de haber verificado todo, a menos que necesite liberar espacio en el disco. Si la ubicación lo requiere, haga una copia de seguridad en su servidor personal y elimínela después de una semana.

  2. La segunda regla más importante (que yo mismo rompo a menudo) es "no te escondas". Si hiciste una copia de seguridad, escribe dónde, para que tus compañeros no tengan que buscarla. Si realizó algunas acciones complejas o no obvias, escríbalo: se irá a casa y el problema puede repetirse o surgirle a otra persona, y su solución se encontrará utilizando palabras clave. Incluso si haces algo que sabes bien, es posible que tus colegas no lo hagan.
  3. No es necesario explicar la tercera regla: “Nunca hagas algo cuyas consecuencias no conozcas, imagines o comprendas”. No copie comandos de Internet si no sabe lo que hacen, llame a man y analícelos primero. No utilice soluciones ya preparadas si no puede entender lo que hacen. Mantenga la ejecución de código ofuscado al mínimo absoluto. Si no tienes tiempo para resolverlo, entonces algo estás haciendo mal y deberías leer el siguiente punto.
  4. "Prueba". Los nuevos scripts, herramientas, frases ingeniosas y comandos deben probarse en un entorno controlado, no en la máquina cliente, si existe un potencial mínimo de acciones destructivas. Incluso si hizo una copia de seguridad de todo (y lo hizo), el tiempo de inactividad no es lo mejor. Cree un servidor/virtual/chroot separado para esto y pruébelo allí. ¿Hay algo roto? Luego puedes iniciarlo en "combate".

    Para un administrador de sistemas novato: cómo crear orden a partir del caos

  5. "Control". Minimiza todas las operaciones que no controlas. Una curva de dependencia de un paquete puede arrastrar hacia abajo la mitad del sistema, y ​​el indicador -y configurado para yum remove le brinda la oportunidad de practicar sus habilidades de recuperación del sistema desde cero. Si la acción no tiene alternativas incontroladas, el siguiente punto es una copia de seguridad ya preparada.
  6. "Controlar". Verifique las consecuencias de sus acciones y si necesita volver a una copia de seguridad. Comprueba si el problema realmente se ha resuelto. Compruebe si el error se reproduce y en qué condiciones. Comprueba lo que puedes romper con tus acciones. No es necesario confiar en nuestro trabajo, pero nunca comprobarlo.
  7. "Comunicar". Si no puede resolver el problema, pregunte a sus colegas si se han encontrado con esto. Si desea aplicar una decisión controvertida, conozca la opinión de sus compañeros. Quizás ofrezcan una mejor solución. Si no confía en sus acciones, discútalas con sus colegas. Incluso si esta es su área de especialización, una nueva mirada a la situación puede aclarar muchas cosas. No te avergüences de tu propia ignorancia. Es mejor hacer una pregunta estúpida, parecer un tonto y obtener una respuesta, que no hacer la pregunta, no obtener una respuesta y terminar siendo un tonto.
  8. “No rechaces ayuda sin razón”. Este punto es el inverso del anterior. Si te hacen una pregunta estúpida, aclárala y explícala. Piden lo imposible: explican que es imposible y por qué, ofrecen alternativas. Si no tiene tiempo (realmente no tiene tiempo ni ganas), diga que tiene una pregunta urgente, mucho trabajo, pero que lo resolverá más tarde. Si los compañeros no tienen tareas urgentes, ofrézcase a contactarlos y delegue la pregunta.
  9. "Dar opinion". ¿Alguno de tus colegas ha empezado a utilizar una nueva técnica o un nuevo guión y estás encontrando consecuencias negativas por esta decisión? Reportalo. Quizás el problema pueda resolverse en tres líneas de código o cinco minutos de perfeccionamiento de la técnica. ¿Ha encontrado un error en su software? Reportar un error. Si es reproducible o no es necesario reproducirlo, lo más probable es que se solucione. Exprese sus deseos, sugerencias y críticas constructivas, y plantee preguntas para debatir si parecen relevantes.
  10. "Solicite comentarios". Todos somos imperfectos, al igual que nuestras decisiones, y la mejor manera de comprobar la exactitud de su decisión es plantearla para discusión. Si ha optimizado algo para un cliente, pídale que supervise el trabajo; tal vez el cuello de botella en el sistema no esté donde estaba buscando. Ha escrito un guión de ayuda; muéstrelo a sus colegas, tal vez encuentren una manera de mejorarlo.

Si aplicas constantemente estas prácticas en tu trabajo, la mayoría de los problemas dejarán de serlo: no sólo reducirás al mínimo el número de tus propios errores y pifias, sino que también tendrás la oportunidad de corregir errores (en el futuro). forma de copias de seguridad y colegas que le aconsejarán que realice copias de seguridad). Además, sólo detalles técnicos, en los que, como sabemos, está el diablo.

Las principales herramientas con las que tendrás que trabajar más del 50% del tiempo son grep y vim. ¿Qué podría ser más sencillo? Búsqueda de texto y edición de texto. Sin embargo, tanto grep como vim son potentes herramientas múltiples que le permiten buscar y editar texto de manera eficiente. Si algún bloc de notas de Windows le permite simplemente escribir/eliminar una línea, entonces en vim puede hacer casi cualquier cosa con texto. Si no me cree, llame al comando vimtutor desde la terminal y comience a aprender. En cuanto a grep, su principal fortaleza están en las expresiones regulares. Sí, la herramienta en sí le permite establecer condiciones de búsqueda y generar datos de manera bastante flexible, pero sin RegExp esto no tiene mucho sentido. ¡Y necesitas saber expresiones regulares! Al menos en un nivel básico. Para empezar, te aconsejo que mires esto. видео, cubre los conceptos básicos de las expresiones regulares y su uso junto con grep. Oh, sí, cuando los combinas con vim, obtienes la capacidad MÁXIMA de hacer cosas con texto que debes etiquetar con más de 18 íconos.

Del 50% restante, el 40% proviene del kit de herramientas coreutils. Para coreutils, puede consultar la lista en wikipedia, y el manual de la lista completa está en el sitio web GNU. Lo que no está cubierto en este conjunto está en las utilidades. POSIX. No es necesario que aprendas todas las claves de memoria, pero es útil saber al menos aproximadamente qué pueden hacer las herramientas básicas. No es necesario reinventar la rueda a partir de muletas. De alguna manera necesitaba reemplazar los saltos de línea con espacios en la salida de alguna utilidad, y mi cerebro enfermo dio origen a una construcción como sed ':a;N;$!ba;s/n/ /g', se acercó un colega y me alejó de la consola con una escoba, y luego resolvió el problema escribiendo tr 'n' ' '.

Para un administrador de sistemas novato: cómo crear orden a partir del caos

Te aconsejo que recuerdes qué hace cada herramienta individual y las claves de los comandos más utilizados; para todo lo demás está el hombre. No dudes en llamar al hombre si tienes alguna duda. Y asegúrese de leer el hombre mismo: contiene información importante sobre lo que encontrará.

Conociendo estas herramientas, podrás resolver eficazmente una parte importante de los problemas que encontrarás en la práctica. En las siguientes conferencias, veremos cuándo usar estas herramientas y los marcos para los servicios y aplicaciones subyacentes a los que se aplican.

Con usted estuvo el administrador del sistema FirstVDS, Kirill Tsvetkov.

Fuente: habr.com

Añadir un comentario