Para el administrador del sistema principiante: cómo hacer que el orden salga del caos



Soy el administrador del sistema FirstVDS, y este es el texto de la primera conferencia introductoria de mi breve curso sobre cómo ayudar a colegas novatos. Los profesionales que recientemente comenzaron a participar en la administración del sistema se enfrentan a una serie de los mismos problemas. Para proponer soluciones, me comprometí a escribir esta serie de conferencias. Algunas cosas en él son específicas para alojar soporte técnico, pero en general, pueden ser útiles, si no para todos, para muchos. Así que adapté el texto de la conferencia para compartir aquí.

No importa cómo se llame su posición, es importante que de hecho esté administrando. Por lo tanto, comencemos con lo que debe hacer el administrador del sistema. Su tarea principal es poner en orden, mantener el orden y prepararse para futuros aumentos en orden. Sin un administrador del sistema, comienza un desastre en el servidor. Los registros no están escritos, o algo está escrito en ellos, los recursos no están asignados de manera óptima, el disco está lleno de todo tipo de basura y el sistema comienza a doblarse lentamente debido a tanto caos. Calma ¡Los administradores del sistema en su persona comienzan a resolver problemas y eliminar el desorden!

Pilares de administración del sistema


Sin embargo, antes de comenzar a resolver problemas, vale la pena familiarizarse con los cuatro pilares principales de la administración:

  1. Documentación
  2. Templar
  3. Optimización
  4. Automatización

Este es el fundamento de lo básico. Si no construye su flujo de trabajo sobre estos principios, será ineficiente, improductivo y, en general, no muy similar a la administración real. Tratemos cada uno por separado.

La documentación


Documentación no significa leer la documentación (aunque sin ella en ningún lado), sino también mantenerla.

Cómo mantener registros:

  • ¿Te enfrentas a un nuevo problema que nunca has visto antes? Escriba los síntomas principales, los métodos de diagnóstico y los principios de eliminación.
  • ¿Se te ocurrió una nueva solución elegante para un problema típico? Anótelo para que no tenga que reinventarlo en un mes.
  • ¿Te han ayudado a resolver una pregunta en la que no entendiste nada? Escriba los puntos y conceptos principales, dibuje un diagrama para usted.

La idea principal: no confíe completamente en su propia memoria en el desarrollo y la aplicación de una nueva.

El formato en el que hará esto depende solo de usted: puede ser un sistema con notas, un blog personal, un archivo de texto, un cuaderno físico. Lo principal es que sus registros cumplan con los siguientes requisitos:

  1. No tardes demasiado . Destaque ideas clave, métodos y herramientas. Si comprender el problema requiere sumergirse en la mecánica de bajo nivel de la asignación de memoria de Linux, no reescriba el artículo del que lo aprendió; déle un enlace.
  2. Las entradas deben ser entendibles para usted. Si la línea race cond.lockup no le permite comprender de inmediato lo que describió con esta línea, explique. La buena documentación no necesita ser entendida por media hora.
  3. La búsqueda es una muy buena característica. Si está blogueando, agregue etiquetas; si está en una libreta física, pegue un pequeño post-it con descripciones. No tiene mucho sentido en la documentación si pasas tanto tiempo buscando una respuesta como si dedicases a resolver un problema desde cero.



Así es como se vería la documentación: desde entradas de bloc de notas primitivas (imagen de arriba), hasta una base de conocimiento multiusuario completa con etiquetas, búsqueda y todas las comodidades posibles (a continuación).



No solo no tendrá que buscar las mismas respuestas dos veces: la documentación será de gran ayuda en el aprendizaje de nuevos temas (¡notas!), Su sentido de araña se impulsará (la capacidad de diagnosticar un problema difícil con una mirada superficial) agregará organización a sus acciones. Si la documentación está disponible para sus colegas, les permitirá descubrir qué y cómo acumuló allí cuando no está en su lugar.

Templar


El patrón es la creación y el uso de patrones. Para resolver la mayoría de las preguntas típicas, vale la pena crear una plantilla de acción específica. Se debe usar una secuencia estandarizada de acciones para diagnosticar la mayoría de los problemas. Cuando haya reparado / instalado / optimizado algo, el rendimiento de este algo debe verificarse con listas de verificación estandarizadas.

La plantilla es la mejor manera de organizar su flujo de trabajo. Usando procedimientos estándar para resolver los problemas más comunes, obtienes muchas cosas interesantes. Por ejemplo, el uso de listas de verificación le permitirá diagnosticar todas las funciones importantes para la operación y descartar los diagnósticos de funcionalidades sin importancia. Y los procedimientos estandarizados minimizarán los lanzamientos innecesarios y reducirán la probabilidad de error.

El primer punto importante es que los procedimientos y las listas de verificación también deben documentarse. Si solo confía en la memoria, puede omitir algunas pruebas u operaciones realmente importantes y arruinar todo. El segundo punto importante es que todas las prácticas de plantilla pueden y deben modificarse si la situación lo requiere. No hay plantillas perfectas y absolutamente universales. Si hay un problema, pero una comprobación de plantilla no lo reveló, esto no significa que no haya ningún problema. Sin embargo, antes de realizar la verificación de algunos problemas hipotéticos poco probables, siempre debe hacer primero una verificación rápida de la plantilla.

Optimización


La optimización habla por sí misma. El flujo de trabajo debe optimizarse tanto como sea posible en términos de tiempo y trabajo. Hay innumerables opciones: aprender métodos abreviados de teclado, abreviaturas, expresiones regulares, herramientas disponibles. Busque opciones para un uso más práctico de estas herramientas. Si llama a un comando 100 veces al día, cuélguelo en un atajo de teclado. Si necesita conectarse regularmente a los mismos servidores, escriba un alias en una palabra, que lo conectará allí:



Vea las diferentes opciones para las herramientas disponibles: quizás haya un cliente terminal más conveniente, DE, administrador de portapapeles, navegador, cliente de correo electrónico y sistema operativo. Descubra qué herramientas usan sus colegas y conocidos, tal vez las elijan por alguna razón. Después de recoger las herramientas, aprenda a usarlas: aprenda las claves, abreviaturas, consejos y trucos.

Aproveche al máximo las herramientas estándar: coreutils, vim, expresiones regulares, bash. Para los últimos tres, hay una gran cantidad de maravillosos manuales y documentación. Con su ayuda, puede cambiar rápidamente del estado de "Me siento como un mono que poda las nueces con una computadora portátil - a" Soy un mono que usa una computadora portátil para pedir una galleta de nuez ".

Automatización


La automatización transferirá operaciones pesadas de nuestras manos cansadas a las manos incansables de la automatización. Si se realiza algún procedimiento estándar en los talones del mismo tipo de comandos, ¿por qué no incluir todos estos comandos en un archivo y no llamar a un comando que descarga y ejecuta este archivo?

La automatización en sí consiste en el 80% de la escritura y la optimización de sus propias herramientas (y otro 20% de los intentos de hacer que funcionen como debería). Puede ser solo una línea avanzada o una gran herramienta omnipotente con una interfaz web y API. El criterio principal aquí es que crear una herramienta no debería tomar más tiempo y esfuerzo que la cantidad de tiempo y esfuerzo que esta herramienta le ahorrará. Si escribe un script durante cinco horas que nunca volverá a necesitar, para una tarea que le tomaría una o dos horas resolver sin un script, esta es una optimización muy pobre del flujo de trabajo. Puede pasar cinco horas creando una herramienta solo si el número, el tipo de tareas y el tiempo lo permiten, lo que ocurre con poca frecuencia.

La automatización no significa necesariamente escribir scripts completos. Por ejemplo, para crear un grupo de objetos del mismo tipo de la lista, un ingenioso one-liner es suficiente para hacer automáticamente lo que haría con sus manos, cambiando entre ventanas, con montones de copiar y pegar.

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

Sysadmin autoeducación


Para ser al menos un poco competente en esta área, debe aprender constantemente y aprender cosas nuevas. Si no tienes el más mínimo deseo de toparte con lo desconocido y comprender, te despertarás muy rápidamente. Todo tipo de nuevas soluciones, tecnologías y métodos aparecen constantemente en TI, y si no los estudia al menos superficialmente, está en camino de perder. Muchas áreas de la tecnología de la información son muy complejas y voluminosas. Por ejemplo, operación de red. Las redes e Internet están en todas partes, las encuentras todos los días, pero si profundizas en las tecnologías detrás de ellas, encontrará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 la clave para TI en general, y no solo para la administración del sistema. Naturalmente, no podrá aprender absolutamente todo a la vez, simplemente no tiene suficiente tiempo físicamente. Por lo tanto, en la autoeducación, uno debe recordar los niveles necesarios de abstracción.

No tiene que aprender de inmediato cómo funciona la administración de memoria interna de cada utilidad individual y cómo interactúa con la administración de memoria de Linux, pero no está mal saber qué es la RAM de forma esquemática y por qué es necesaria. No necesita saber cómo los encabezados TCP y UDP son estructuralmente diferentes, pero sería bueno comprender las principales diferencias de protocolo en la operación. No es necesario estudiar qué es la atenuación de la señal en óptica, pero sería bueno saber por qué los nodos siempre heredan las pérdidas reales. No hay nada de malo en saber cómo funcionan ciertos elementos en un cierto nivel de abstracción y no es necesario analizar absolutamente todos los niveles cuando no hay abstracción (simplemente te vuelves loco).

Sin embargo, discutir en su campo a nivel de abstracción "bueno, esto es algo que le permite mostrar sitios" no es muy bueno. Las siguientes conferencias se dedicarán a una visión general de las principales áreas que un administrador de sistemas tiene que tratar en los niveles más bajos de abstracción. Intentaré limitar la cantidad de conocimiento revisado a un nivel mínimo de abstracción.

Los 10 mandamientos de la administración del sistema


Entonces, hemos aprendido los cuatro pilares principales y los cimientos. ¿Puedo comenzar a resolver problemas? Aún no Antes de esto, es aconsejable familiarizarse con las llamadas "mejores prácticas" y las reglas de buena forma. Sin ellos, es probable que hagas más daño que bien. Entonces, comencemos:

  1. Algunos de mis colegas creen que la primera regla es "no hacer daño". Pero tiendo a estar en desacuerdo. Cuando intentas no dañar, no puedes hacer nada: demasiadas acciones son potencialmente destructivas. La regla más importante que considero es "hacer una copia de seguridad" . Incluso si duele, siempre puede retroceder, y todo no será tan malo.

    Debe realizar una copia de seguridad siempre que el tiempo y el lugar lo permitan. Necesita hacer una copia de seguridad de lo que cambiará y lo que corre el riesgo de perder con una acción potencialmente destructiva. Se recomienda verificar la copia de seguridad para verificar la integridad y disponibilidad de todos los datos necesarios. Una copia de seguridad no debe eliminarse inmediatamente después de haber verificado todo, si no necesita liberar espacio en disco. Si el espacio lo requiere, haga una copia de seguridad en su servidor personal y elimínelo en una semana.
  2. La segunda regla más importante (que yo mismo a menudo rompo) es "no la escondas" . Si realizó una copia de seguridad, escriba: dónde para que sus colegas no tengan que buscarla. Si ha realizado acciones no evidentes o complejas, escriba: irá a su casa, pero el problema puede reaparecer o alguien más lo tendrá y su solución se encontrará por palabras clave. Incluso si haces algo que sabes bien, es posible que tus colegas no lo sepan.
  3. No hay necesidad de explicar la tercera regla: "nunca hagas las consecuencias que no conoces, no imaginas ni entiendes" . No copie comandos de Internet, si no sabe lo que están haciendo, llame primero a man y analice. No use soluciones preparadas si no puede entender lo que están haciendo. Minimice la ejecución de código ofuscado. Si no hay tiempo para comprender, está haciendo algo mal y debería leer el siguiente párrafo.
  4. "Pruébalo" . Los nuevos scripts, herramientas, líneas simples y comandos deben verificarse en un entorno controlado y no en la máquina del cliente, si existe al menos un potencial mínimo para acciones destructivas. Incluso si hace una copia de seguridad de todo (y lo hizo), el tiempo de inactividad no es lo mejor. Obtenga un servidor / máquina virtual / chroot por separado para este caso y pruebe allí. ¿No se ha roto nada? Entonces puedes correr en la "batalla".



  5. "Control" . Minimice todas las operaciones que no controla. Una curva de dependencia en un paquete puede arrastrar la mitad del sistema hacia atrás, y el indicador -y establecido para yum remove le brinda la oportunidad de entrenar sus habilidades de recuperación del sistema desde cero. Si la acción no tiene alternativas no controladas, el siguiente punto y una copia de seguridad lista.
  6. "Compruébalo" . Verifique las consecuencias de sus acciones y si necesita volver a la copia de seguridad. Compruebe si el problema realmente se resolvió. Compruebe si se reproduce el error y en qué condiciones. Verifica que puedas romper con tus acciones. Confiar en nuestro trabajo es superfluo, pero nunca verificar.
  7. "Comunicarse" . Si no puede resolver el problema, pregunte a sus colegas si se han encontrado con ese problema. Desea aplicar una decisión controvertida: descubra la opinión de sus colegas. Quizás ofrecerán una mejor solución. No hay confianza 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 mucho. No seas tímido con tu propia ignorancia. Es mejor hacer una pregunta estúpida, parecer un tonto y obtener una respuesta a ella, que no hacer esta pregunta, no obtener una respuesta y permanecer en el frío.
  8. "No rechaces la ayuda sin razón" . Este artículo es la otra cara del anterior. Si le hicieron una pregunta estúpida, aclare y explique. Pida lo imposible: explique que es imposible y por qué, ofrezca alternativas. Si no hay tiempo (realmente no hay tiempo, no deseo), diga que tiene una pregunta urgente \ una gran cantidad de trabajo, pero lo resolverá más adelante. Si sus colegas no tienen tareas urgentes, ofrezca contactarlos y delegar la pregunta.
  9. "Vamos comentarios" . Algunos de los colegas comenzaron a aplicar una nueva técnica o un nuevo guión, y ¿encuentra las consecuencias negativas de esta decisión? Reporte esto. Quizás el problema se resuelva en tres líneas de código o cinco minutos de refinamiento de la metodología. ¿Tropezó con un error en el software? Informar un error Si se está reproduciendo o si no es necesario reproducirlo, lo más probable es que se solucione. Exprese sus deseos, sugerencias y críticas constructivas, envíe preguntas para su discusión si parece que son relevantes.
  10. "Pida retroalimentación" . Todos somos imperfectos, al igual que nuestras decisiones, y la mejor manera de verificar la exactitud de nuestra decisión es presentarla para discusión. Optimizamos algo en el cliente: solicite realizar un seguimiento del trabajo, tal vez el "cuello de botella" del sistema no está donde estaba buscando. Escribieron un guión de ayuda: muéstrales a tus colegas, tal vez encuentren una manera de mejorarlo.

Si aplica constantemente estas prácticas en su trabajo, la mayoría de los problemas dejarán de ser problemas: no solo reducirá al mínimo la cantidad de sus propios errores y fakaps, sino que también tendrá la oportunidad de corregirlos (en forma de copias de seguridad y colegas que le aconsejarán que haga una copia de seguridad). Además, solo detalles técnicos, en los que, como saben, el diablo yace.

Las herramientas principales con las que tendrá que trabajar más del 50% del tiempo son grep y vim. ¿Qué podría ser más fácil? Búsqueda de texto y edición de texto. Sin embargo, grep y vim son potentes multiherramientas multifuncionales 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. No lo creas: llama al comando vimtutor desde la terminal y comienza a aprender. En cuanto a grep, su principal fortaleza está en las expresiones regulares. Sí, la herramienta en sí misma le permite establecer condiciones de búsqueda y generar datos de manera bastante flexible, pero sin RegExp no tiene mucho sentido. ¡Y necesitas saber expresiones regulares! Al menos a un nivel básico. Para comenzar, le aconsejaría que vea este video , que comprende los conceptos básicos de los conceptos básicos de las expresiones regulares y su uso junto con grep. Oh sí, cuando los combinas con vim, obtienes POTENCIA DEFINITIVA la capacidad de hacer tales cosas con el texto que tienes que colgarlas con más de 18 iconos.

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



Le aconsejaría que recuerde que cada herramienta individual y las teclas de los comandos más utilizados se ejecutan aproximadamente, para todo lo demás hay man. No dude en llamar al hombre si tiene alguna duda. Y asegúrese de leer hombre sobre hombre mismo: contiene información importante sobre lo que encuentra.

Conociendo estas herramientas, puede resolver efectivamente una parte significativa de las tareas que encontrará en la práctica. En las siguientes conferencias, consideraremos cuándo aplicar estas herramientas y las estructuras de los principales servicios y aplicaciones a las que se aplican.

El administrador del sistema FirstVDS, Kirill Tsvetkov, estuvo con usted.

Source: https://habr.com/ru/post/472810/


All Articles