Exibindo informações do sistema no Kibana com OpenTelemetry Collector + Elastic APM (com Elasticreseach)
Olá, sou um inútil.
Tentei obter informações do sistema.
O gatilho foi ter aprendido sobre o OpenTelemetry e
também vi ❄ Servidor doméstico com NixOS e Raspberry Pi | Parte 5 Obtenção da temperatura da CPU como métrica, então eventualmente quero conseguir obter a temperatura da CPU...
Como um passo nesse caminho, vou tentar.
Instalação
Como já instalei Elasticsearch e Kibana no artigo anterior, desta vez vou instalar o OpenTelemetry Collector e o Elastic APM.
Além disso, desta vez também estou gerenciando os daemons com o sempre presente Supervisor, então se você seguir o artigo, qualquer um deve conseguir... eu acho.
Antes disso, vamos configurar o usuário elastic.
cd /usr/share/elasticsearch/
bin/elasticsearch-setup-passwords interactive
Isso criará alguns usuários relacionados ao Elastic, então certifique-se de definir as senhas corretamente.
E em vim/elasticsearasticsearch.yml,
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
adicione o seguinte.
Agora, finalmente, vamos instalar o opentelemetry-collector. Obtenha o pacote .deb no link abaixo:
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
Em seguida, vamos instalar o 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
Vamos configurar o apm-server. vim/apm-servm-server.yml
apm-server:
host: "0.0.0.0:8200"
protocol: "http"
username: "elastic"
password: "senha do usuário elastic"
rum:
enabled: true
ilm:
enabled: "auto"
output.elasticsearch:
username: "elastic"
password: "senha do usuário elastic"
instrumentation:
enabled: true
setup.kibana:
host: "kibana:5601"
Agora que penso nisso, será que essa configuração está correta...?
E então, a configuração do opentelemetry-collector. Como vou mudar bastante, vou editar depois de fazer um backup.
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"
O que me pegou foi o insecure: true; sem isso, nada funcionava...
Um script de daemon foi criado em init.d, mas não funcionou bem, então vou configurá-lo com Supervisor.
Para a execução do daemon no comando, certifique-se de verificar o caminho com which e usar o caminho correto.
Para o APM-Server, use isto:
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
Para o opentelemetry-collector, use isto:
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
Aplique com Supervisor.
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start apm-server
sudo supervisorctl start otelcol
Além disso, por precaução, reinicie o elasticsearch e o kibana.
Verificar no Kibana do navegador

Se a conexão com o servidor APM estiver correta, você poderá verificar em Observability -> APM.
Além disso, você pode configurar algo assim em Analytics -> Dashboard.
Eu tropecei, mas
a partir de TSVB aqui
Se você selecionar aqui, será exibido. Além disso, se a exibição estiver estranha, o timestamp exibido mudará automaticamente se você tocar na parte do gráfico, então mude o eixo do tempo no canto superior direito
aqui.
De uma forma ou de outra, mexer nisso por impulso me custou meio dia.
Até a próxima.
Obrigado. (3 artigos atualizados em um frenesi porque eu estava matando aula para beber!)