Mostrar información del sistema en Kibana con OpenTelemetry Collector + Elastic APM (con Elasticreseach)
Hola, soy un inútil.
Intenté obtener información del sistema.
Gracias a que me enseñaron sobre OpenTelemetry y
También vi ❄ Servidor doméstico con NixOS y Raspberry Pi | Parte 5 Obtener la temperatura de la CPU como métricas, así que eventualmente me gustaría llegar a obtener la temperatura de la CPU...
Como un paso en ese camino, lo intentaré.
Instalación
En el artículo anterior, ya instalé Elasticresarch y Kibana, así que esta vez instalaré OpenTelemetry Collector y Elastic APM.
Además, como siempre, estoy gestionando los demonios con el familiar Supervisor, así que si sigues el artículo, cualquiera debería poder hacerlo bien... eso espero.
Y antes de eso, configuraremos el usuario elastic.
cd /usr/share/elasticsearch/
bin/elasticsearch-setup-passwords interactive
Con esto, se crearán varios usuarios relacionados con elastic, así que asegúrate de configurar las contraseñas correctamente.
Y en vim/elasticsearasticsearch.yml, añade lo siguiente:
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
Ahora, finalmente, instalemos opentelemetry-collector. Obtén el paquete .deb desde el siguiente enlace:
httpithub.cen-telemetentelemetry-collector-releasleases
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.109.0/otelcol_0.109.0_linux_amd64.deb
sudo dpkg -i otelcol_0.109.0_linux_amd64.deb
A continuación, instalaremos Elastic APM Server.
httpww.elastic.i/arvtup-repositories.html
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo update-rc.d apm-server defaults 95 10
Configuraremos apm-server. vim/apm-servm-server.yml
apm-server:
host: "0.0.0.0:8200"
protocol: "http"
username: "elastic"
password: "contraseña del usuario elastic"
rum:
enabled: true
ilm:
enabled: "auto"
output.elasticsearch:
username: "elastic"
password: "contraseña del usuario elastic"
instrumentation:
enabled: true
setup.kibana:
host: "kibana:5601"
Ahora que lo pienso, ¿es correcta esta configuración...?
Y la configuración de opentelemetry-collector. Como cambiaré bastantes cosas, lo editaré después de hacer una copia de seguridad.
sudo cp -p /etc/otelcol/config.yaml /etc/otelcol/bak.config.yaml
sudo vim /etc/otelcol/config.yaml
receivers:
hostmetrics:
collection_interval: 10s
scrapers:
cpu:
memory:
disk:
filesystem:
network:
load:
paging:
processors:
batch:
exporters:
otlp:
endpoint: "localhost:8200"
tls:
insecure: true
service:
pipelines:
metrics:
receivers: [hostmetrics]
processors: [batch]
exporters: [otlp]
telemetry:
logs:
level: "info"
metrics:
level: "detailed"
address: "0.0.0.0:8888"
Lo que realmente me frustró fue la parte de insecure: true; si no lo ponía, no funcionaba de ninguna manera...
Aunque se creó un script de demonio en init.d, no funcionó correctamente, así que lo configuraré con Supervisor.
En cuanto a la ejecución del demonio del comando, asegúrate de verificar la ruta con which y que sea una ruta válida.
Este es el APM-Server
sudo cat /etc/supervisor/conf.d/apm-server.conf
[program:apm-server]
command=/usr/bin/apm-server -e -c /etc/apm-server/apm-server.yml
autostart=true
autorestart=true
redirect_stderr=true
stderr_logfile=/var/log/apm-server/apm-server.error.log
stdout_logfile=/var/log/apm-server/apm-server.out.log
user=apm-server
Este es el opentelemetry-collector
sudo cat/supervisnfelcol.conf
[program:otelcol]
commanr/belcol --confic/otelcnfig.yaml
autostart=true
autorestart=true
stderr_logfilr/lelcelcol.err.log
stdout_logfilr/lelcelcol.out.log
user=otel
environment=OTEL_EXPORTER_OTLP_ENDPOINT="httocalhost:4317"
Sobre OTEL_EXPORTER_OTLP_ENDPOINT
Aplicaremos con Supervisor.
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start apm-server
sudo supervisorctl start otelcol
Además, por si acaso, reinicia también elasticsearch y kibana.
Verificar desde Kibana en el navegador

Si la conexión con el servidor APM es correcta, deberías poder verificarlo desde Observability -> APM.
También puedes configurarlo así desde Analytics -> Dashboard.

Me encontré con un problema:

Desde aquí, en TSVB

Si seleccionas esto, se mostrará. Además, si la visualización es extraña, al tocar la parte del gráfico, la marca de tiempo mostrada cambia automáticamente, así que cambia el eje de tiempo desde la parte superior derecha aquí:

De una forma u otra, al jugar con ello, perdí medio día.
Hasta la próxima.
Saludos. (¡3 artículos actualizados en un frenesí porque me fui a beber y holgazaneé!)