在Ubuntu上结合Golang日志记录与性能监控,可以采用以下几种工具和策略:
标准库 log
:
package main
import (
"log"
)
func main() {
log.Println("This is a log message")
log.Printf("Hello, %s!", "Gopher")
log.Fatal("This is a fatal error")
}
第三方日志库:
package main
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
logger := zap.NewProduction()
defer logger.Sync()
logger.Info("logger construction succeeded")
}
package main
import (
"github.com/rs/zerolog/log"
)
func main() {
log.Info().Msg("logger construction succeeded")
}
package main
import (
"github.com/sirupsen/logrus"
)
func main() {
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.Info("logger construction succeeded")
}
pprof:
package main
import (
"log"
"net/http"
_ "net/http/pprof"
"runtime/pprof"
)
func main() {
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
// 在需要分析的地方调用以下函数
pprof.StartCPUProfile("/tmp/pprof/cpu.prof")
// 业务逻辑
pprof.StopCPUProfile()
}
Prometheus:
package main
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"net/http"
)
var (
requestCounter = prometheus.NewCounter(prometheus.CounterOpts{
Name: "web_requests_total",
Help: "Total number of HTTP requests",
})
requestLatency = prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "web_request_latency_seconds",
Help: "Latency of HTTP requests in seconds",
Buckets: prometheus.DefBuckets,
})
)
func init() {
prometheus.MustRegister(requestCounter)
prometheus.MustRegister(requestLatency)
}
func handler(w http.ResponseWriter, r *http.Request) {
requestCounter.Inc()
start := time.Now()
// 模拟处理请求
time.Sleep(500 * time.Millisecond)
requestLatency.Observe(time.Since(start).Seconds())
w.Write([]byte("Hello, World!"))
}
func main() {
http.Handle("/metrics", promhttp.Handler().ServeHTTP)
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Logrotate:
sudo apt-get install logrotate
sudo nano /etc/logrotate.conf
Rsyslog:
sudo apt-get install rsyslog
sudo nano /etc/rsyslog.conf
Grafana:
sudo apt-get install grafana
sudo nano /etc/grafana/grafana.ini
通过以上工具和策略,可以在Ubuntu上实现高效的Golang日志记录与性能监控,确保系统的稳定性和可维护性。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: Ubuntu中vsftpd性能优化技巧