OpenTelemetry предоставляет набор API для непосредственного измерения производительности и поведения вашего программного обеспечения и отправлять эти данные на наблюдаемость платформ. Давайте узнаем, как начать работу с OpenTelemetry для приложений Go и визуализируйте эти данные с Signoz.
OpenTelemetry — это библиотека инструментарной приборостроения поставщика. В этой статье давайте рассмотрим, как вы можете принять прибор вашего приложения Go с помощью OpenTelemetry и получить данные, представленные через Signoz — инструмент APM с открытым исходным кодом и наблюдаемостью.
Шаги для начала работы с OpenTelemetry for Go Application
- Установка Signoz.
- Установка пример пример
- Приборы с openTelemetry и отправка данных для Signoz
Установка Signoz.
Вы можете начать работу с SignoD, используя только три команды на вашем терминале, если у вас установлен Docker. Вы можете прочитать о других вариантах развертывания от Signoz Documentation Отказ
git clone https://github.com/SigNoz/signoz.git cd signoz/deploy/ ./install.sh
У вас будет возможность выбирать между Chickouse или Kafka + Druid в качестве варианта хранения. Попытка Signoz с базой данных Chickouse занимает менее 1,5 ГБ памяти, а для этого учебника мы будем использовать эту опцию.
Когда вы закончите установку Signoz, вы можете получить доступ к интерфейсу AT: http://localhost:3000
Список приложений, показанный на приборной панели, является из приложения для образца, называемого горячим R.O.D, который поставляется в комплекте с установочным пакетом Signoz.
Signoz Dashboard
Установка пример пример
Чтобы увидеть, как Opentelemetry можно использовать для прибора приложения GO, давайте посмотрим, как он работает с принципом образца Bookstore ( Github Repo ).
Это простое приложение Bookstore с API для отдыха, которая предоставляет данные книги и выполняет операции CRUD. Приложение использует GIN Framework для создания восстановленного API. GIN — это высокопроизводительный HTTP Web Framework, написанные в Golang, содержащую набор обычно используемых функций, таких как маршрутизация, промежуточная поддержка и рендеринг.
OpenTelemetry имеет определенные приборочные пакеты для поддержки популярных пакетов Go и используют случаи. Например, это приложение использует Framework GIN для маршрутизации запроса. OpenTelemetry предоставляет приборостроенный пакет имени Отельгин Для прибора Framework GIN, который вам нужно импортировать в ваше приложение. Вы можете найти полный список поддерживаемых пакетов Golang здесь Отказ
Предпосылки Убедитесь, что у вас есть Golang установлен на вашем компьютере, работая $ Go версия
на вашем терминале. Если у вас нет установленного Golang, вы можете скачать его здесь Отказ
Шаги для установки приложения образец GO:
- Образец клона образец приложений репозиторий из вашего терминала Используйте следующую команду для образца клона Go Application Github Repository.
git clone https://github.com/SigNoz/sample-golang-app.git
- Путь обновления до пример-golang-app и check.
cd sample-golang-app go run main.go
Убедитесь, что у вас есть доступный порт для запуска вашего приложения. Если по умолчанию приложение Go пытается запустить порта 8080, вы можете получить ошибку, так как Signoz использует порт 8080 для его обслуживания запросов. На вашем Mac Terminal вы можете установить порт прослушивания вашего приложения, используя следующую команду:
export PORT = 8081
/книги Конечная точка нашего приложения Bookstore
После того, как вы убедитесь, что ваше приложение работает, выйдите из сервера, нажав «Ctrl + C» на свой MAC-терминал.
Приборы с openTelemetry и отправка данных для Signoz
Файл main.go
Имеет инструкции по импортированию всех необходимых пакетов OpenTelemetry для прибора приложения приложения. Для этого приложения мы импортируем следующие пакеты OpenTelemetry.
import ( "go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/exporters/otlp" "go.opentelemetry.io/otel/exporters/otlp/otlpgrpc" "go.opentelemetry.io/otel/label" "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" )
Вам необходимо запустить приложение Go с необходимыми переменными среды, чтобы начать отправлять данные в SignoD. Используйте следующую команду для запуска и настройки приложения для отправки данных в SignoD:
SERVICE_NAME=goApp INSECURE_MODE=true OTEL_METRICS_EXPORTER=none OTEL_EXPORTER_OTLP_ENDPOINT=:4317 go run main.go
IP Signoz
Может быть заменен на localhost в этом случае. Следовательно, финальная команда становится:
SERVICE_NAME=goApp INSECURE_MODE=true OTEL_METRICS_EXPORTER=none OTEL_EXPORTER_OTLP_ENDPOINT=localhost:4317 go run main.go
И, поздравляю! Вы учли ваше образец приложения Golang. Хит /книги
Конечная точка приложения Bookstore в http://localhost: 8081/Книги . Обновите его кучу раз, чтобы сгенерировать нагрузку и подождать 1-2 минуты для данных, чтобы отображаться на панели инструментов Signoz.
Теперь вы можете получить доступ к панели инструментов Signoz в http://localhost: 3000 Для мониторинга вашего приложения для показателей производительности.
Примерное приложение Golang появляется в списке приложений
Если вы хотите подписать свое собственное приложение Golang, вы можете прочитать об этом в нашем Документация Отказ
Метрики и следы приложения Go
SignoD позволяет легко визуализировать метрики и следы, захваченные посредством приборов OpenTelemetry.
Signoz поставляется из коробки красных метрических графиков и визуализации. Красные метрики стоят за:
- Скорость запросов
- Скориемость запросов
- Продолжительность, предпринятая запросами
Измерьте такие вещи, как задержка приложений, запросы на секунду, процент ошибок и см. Ваши верхние конечные точки
Затем вы можете выбрать конкретную временную метку, где задержка высокая, чтобы сверлить, чтобы проследить вокруг этого временного времени.
Вид следов на определенном временном интеллекте
Вы можете использовать Flamegraphs, чтобы точно определить проблему, вызывающую задержку.
FLAMEGRAPHS, показывающие точную продолжительность, предпринятые каждые промежутки — концепция распределенного трассировки
Вывод
OpenTelemetry делает его очень удобным для прибора ваших приложений Go и генерировать данные телеметрии. Затем вы можете использовать инструмент APM с открытым исходным кодом, как SignoD, чтобы проанализировать производительность вашего приложения. Поскольку Signoz предлагает полный инструмент наблюдаемости, вам не нужно использовать несколько инструментов для ваших потребностей в мониторинге.
Вы можете попробовать SignoD, посетив его GitHub Repo 👇
Если вы сталкиваетесь с любыми проблемами, пытаясь Signoz, не стесняйтесь писать нам по адресу: support@signoz.io
Если вы хотите узнать больше о Signoz 👇 Следите за приложением вашего весеннего загрузки с OpenTelemetry и Signoz
Оригинал: «https://dev.to/signoz/monitor-your-golang-application-with-opentelemetry-and-signoz-3fli»