1. Descripción general de Prometeo
Prometheus es una combinación de bases de datos de monitoreo, alarmas y series temporales de código abierto. Adecuado para monitorear contenedores Docker. Debido a que la popularidad de Kubernetes ha impulsado el desarrollo de Prometheus,
sitio web oficial: https://prometheus.io/
2. Datos de series temporales
1. ¿Qué son los datos de secuencia?
Datos de series de tiempo: los datos que registran cambios en el estado del sistema y del equipo en orden cronológico se denominan datos de series de tiempo.
Hay muchos escenarios de aplicación: como
- La longitud, latitud, velocidad, dirección, distancia lateral, etc. que deben registrarse durante el funcionamiento del vehículo sin conductor.
- Datos de trayectoria de conducción de cada vehículo en una zona determinada.
- Datos de transacciones en tiempo real de la industria de valores tradicional
- Datos de monitoreo de operación y mantenimiento en tiempo real, etc.
2. Características de los datos de series temporales
- Buen rendimiento:
las bases de datos relacionales tienen un rendimiento deficiente para procesar datos a gran escala. NoSQL puede manejar mejor datos a gran escala, pero aún no es tan bueno como las bases de datos de series temporales. - Bajo costo de almacenamiento y
algoritmo de compresión eficiente, que ahorra espacio de almacenamiento y reduce eficazmente la E/S
3.Características principales de Prometeo
- Modelo de datos multidimensional
- lenguaje de consulta flexible
- No depende del almacenamiento distribuido, los nodos de servidores individuales son autónomos
- Utilice HTTP para extraer datos de series temporales a través del modelo Pull
- Los modelos push también se pueden admitir a través de puertas de enlace intermedias.
- Descubra objetos de servicio de destino mediante el descubrimiento de servicios o la configuración estática
- Admite una variedad de iconos y pantallas de interfaz
4.Diagrama de arquitectura del principio de Prometheus
Pasos de implementación del servicio (según el entorno de Docker, implementar y monitorear contenedores locales y monitorear recursos de contenedores entre locales)
Requiere dos máquinas virtuales
La primera
root@ubuntu20:~# ventana acoplable extrae google/cadvisor
Ejecutar contenedor
root@ubuntu20:~# ejecución de ventana acoplable \
> --volume=/var/run:/var/run:ro \
> --volume=/sys:/sys:ro \
> --volume=/var/lib/docker/:/var/lib/docker:ro \
> --volume=/dev/disk/:/dev/disk:ro \
> --publicar=8080:8080 \
> --detach=verdadero \
> --nombre=cadvisor\
> --privilegiado \
> --dispositivo=/dev/kmsg \
> google/cadvisor
Ver el estado del puerto
Acceso al navegador
Ven al segundo canal.
root@ubuntu20:~# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys/:/sys:ro --volume=/ var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor -- privilegiado --device=/dev/kmsg google/cadvisor
Descargar imagen
Operaciones que deben realizarse en ambos hosts
root@ubuntu20:~# docker pull prom/node-exporter
La primera:
Descargar imagen
root@ubuntu20:~# docker pull prom/Prometheus
root@ubuntu20:~# ventana acoplable extrae grafana/grafana
root@ubuntu20:~# docker run -d -p 9100:9100 --volume /proc/:/host/proc --volume /sys:/host/sys --volume /:/roofs --name node-exporter prom /node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($$ |/)"
Ver el estado del puerto
Segunda estación:
realizar lo mismo
docker run -d -p 9100:9100 --volume /proc/:/host/proc --volume /sys:/host/sys --volume /:/roofs --name node-exporter prom/node-exporter -- path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($$|/)"
Ver puerto
La primera
raíz@ubuntu20:~# vim prometheus.yml
Añadir:
global:
scrape_interval: 15s # De forma predeterminada, raspa los objetivos cada 15 segundos.
# Adjunte estas etiquetas a cualquier serie temporal o alerta cuando se comunique con # sistemas externos (federación, almacenamiento remoto, Alertmanager).
etiquetas_externas:
monitor: 'codelab-monitor'
# Una configuración de raspado que contiene exactamente un punto final para raspar:
# Aquí está el propio Prometeo.
scrape_configs:
# El nombre del trabajo se agrega como una etiqueta `job=<job_name>` a cualquier serie temporal extraída de esta configuración.
- nombre_trabajo: 'prometeo'
configuraciones_estáticas:
- objetivos: ['192.168.0.143:9090','192.168.0.143:9100','192.168.0.143:8080','192.168.0.141:8080','192.168.0.141:9100']
correr
root@ubuntu20:~# docker run -d -p 9090:9090 --volume /root/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus prom/Prometheus
Ver puerto
Acceso al navegador
http://192.168.0.143:9090/
Construir con éxito
A continuación continuamos implementando la página gráfica (implementada en el primer servidor)
root@ubuntu20:~# docker run -d -p 3000:3000 -e "GF_SECURITY_ADMIN_PASSWORD=123456" grafana/grafana
Verificar el estado del puerto
Cuenta predeterminada: administrador
La contraseña es: 123456
Haga clic en el primer prometheus para configurarlo.
Guardar en la parte inferior
Luego vaya al sitio web oficial de grafana para descargar el archivo json del dial de monitoreo
Paneles de control | Laboratorios Grafana
Paneles de búsqueda
Descargar archivo json a local
Regrese a Prometheus y busque importar, configurar y agregar el archivo json.
OK