Сама установка библиотеки проходит по старинке
go get github.com/Chudilo4/goroutine_analyzer@latestpackage main
import (
"github.com/Chudilo4/goroutine_analyzer"
"time"
"log"
)
func main() {
stats := goroutine_analyzer.NewGoroutineStats("my_service")
// Запуск HTTP сервера для экспорта метрик
// Маршрут для того что бы забирать информацию о статистике
// маршрут и адрес можете поменять по вашему усмотрению
err := stats.RunExportMetricPoint("/metrics", ":8070")
if err != nil {
log.Panic(err)
}
// Отмечаем запуск горутины
stats.Add("func")
go func() {
// Отмечаем остановку горутины
defer stats.Done("func")
// Логика горутины
}()
// Отмечаем запуск горутины
stats.Add("worker.func")
go func() {
// Отмечаем остановку горутины
defer stats.Done("worker.func")
// Логика горутины
}()
// Обновление метрик каждую секунду
go func() {
for {
stats.UpdateMetrics()
<-time.After(time.Second)
}
}()
// Отображение метрик в логах каждую секунду
go func() {
for {
log.Println(stats.GetMapCount())
<-time.After(time.Second)
}
}()
// Для корректного завершения программы ожидаем остановку горутин
stats.Wait()
}В docker-compose указан пример как интегрировать показания в grafana и prometheus
Для того что бы вести новую версию нужно влить изменение в main ветку после чего проставить тег следующей версии
Создаём новую ветку
git branch feature/new_featureДобавляем изменения
git add -AКомитим
git commit -m "Новые изменения"Пушим
git pushПереходим на ветку Develop
git checkout developСливаем ветку Develop
git merge feature/new_featureПереходим на ветку Main
git checkout mainСливаем в ветку Main
git merge developСтавим Тег
git tag v0.0.2Пушим Тег
git push origin v0.0.2