OpenTelemetry Collector + Elastic APM: Отображение системной информации в Kibana (с Elasticresarch)
Привет, я бездарь.
Я попробовал получить системную информацию.
Поскольку мне рассказали об OpenTelemetry,
и я также видел ❄ Домашний сервер с NixOS и Raspberry Pi | Часть 5: Получение температуры CPU в качестве метрик, в конечном итоге я хотел бы когда-нибудь получить температуру CPU...
Я попробую это как промежуточный шаг.
Установка
В предыдущей статье я установил Elasticresarch и Kibana, поэтому на этот раз я попробую установить OpenTelemetry Collector и Elastic APM.
И снова, поскольку я управляю демонами с помощью привычного Supervisor, все должно получиться, если следовать статье... Я думаю.
Прежде чем начать, давайте настроим пользователя elastic.
cd /usr/share/elasticsearch/
bin/elasticsearch-setup-passwords interactive
Это создаст несколько пользователей, связанных с elastic, поэтому обязательно установите для них пароли.
Затем в vim/elasticsearasticsearch.yml
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
добавьте следующее.
Теперь давайте наконец установим opentelemetry-collector. Загрузите пакет .deb по ссылке ниже.
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
Затем установим 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
Настроим apm-server. vim/apm-servm-server.yml
apm-server:
host: "0.0.0.0:8200"
protocol: "http"
username: "elastic"
password: "пароль пользователя elastic"
rum:
enabled: true
ilm:
enabled: "auto"
output.elasticsearch:
username: "elastic"
password: "пароль пользователя elastic"
instrumentation:
enabled: true
setup.kibana:
host: "kibana:5601"
Уже поздно, но интересно, правильна ли эта конфигурация...
Затем, настройка opentelemetry-collector. Я собираюсь внести довольно много изменений, поэтому сначала сделаю резервную копию, а затем отредактирую.
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"
Что меня особенно зацепило, так это часть с insecure: true; без нее ничего не работало...
Хотя скрипт демона был создан в init.d, он не работал должным образом, поэтому я настрою его с помощью Supervisor.
Что касается выполнения демона командой, убедитесь, что путь правильный, проверив его с помощью which.
Вот 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
Вот 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"
Примените это с помощью Supervisor.
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start apm-server
sudo supervisorctl start otelcol
Также, на всякий случай, перезапустите elasticsearch и kibana.
Проверка из Kibana в браузере

Если вы правильно подключились к серверу APM, вы сможете проверить это через Observability -> APM.
Также вы можете настроить это из Analytics -> Dashboard следующим образом.

Я споткнулся, но

отсюда, из TSVB

Если вы выберете это, оно будет отображено. Также, если отображение странное, при касании части графика временная метка, которая отображается, может измениться сама по себе, поэтому в правом верхнем углу

попробуйте изменить временную ось отсюда.
Так или иначе, я просто игрался с этим, и полдня исчезло.
До скорого.
С наилучшими пожеланиями. (Я пропустил работу, чтобы пойти выпить, поэтому обновил 3 статьи подряд!)