厦门知名网站建设,广东平台网站建设哪家好,网站建设术语名词,如何做阿里巴巴的网站目录
前言
服务介绍
Grafana#xff1a;数据可视化和展示
Prometheus#xff1a;时序数据监控
Loki#xff1a;日志管理
工具使用
安装
配置 Grafana 数据源编辑
Go Web 项目上报数据
Prometheus 指标上报
Loki 日志上报
数据查看 前言
随着微服务的盛行数据可视化和展示
Prometheus时序数据监控
Loki日志管理
工具使用
安装
配置 Grafana 数据源编辑
Go Web 项目上报数据
Prometheus 指标上报
Loki 日志上报
数据查看 前言
随着微服务的盛行微服务的监控也变得更加困难这里介绍一个微服务常用的监控工具GrafanaGrafana 官网Grafana: The open and composable observability platform | Grafana Labs是一个开源的数据可视化和监控工具能够通过美观的仪表盘展示来自多种数据源如 Prometheus、InfluxDB、Elasticsearch 等的数据。 Grafana是一个开源的数据可视化和监控工具可以集成多种数据源的数据对数据源进行整合并且做可视化展示Grafana提供了很多美观的仪表盘和友好的用户使用界面。Grafana必须配合数据源进行使用而数据源就是我们业务项目所要监控的数据项目监控主要有两种方向业务日志和业务指标这里主要介绍下Grafana这两种数据源Prometheus和Loki。
服务介绍
不管是Grafana还是它提供的数据源都是一个监控服务业务项目往数据源服务发送告警Grafana集成数据源进行界面的展示。 Grafana数据可视化和展示
Grafana 是一个开源的数据可视化和监控工具能够通过美观的仪表盘展示来自多种数据源如 Prometheus、InfluxDB、Elasticsearch 等的数据。其主要特点包括
数据可视化 Grafana 提供了强大的可视化功能支持多种图表类型如折线图、柱状图、饼图、热图等可以将 Prometheus 中的时序数据以多种形式展示帮助用户快速了解系统的健康状态、性能指标等。数据源整合 Grafana 支持多种数据源最常用的就是 Prometheus此外还支持如 InfluxDB、Elasticsearch、MySQL 等其他存储系统。 仪表盘和报警 Grafana 提供了灵活的仪表盘功能用户可以根据自己的需求创建和定制不同的监控视图。此外Grafana 还可以设置报警规则在某些条件下发送通知。用户友好的界面 Grafana 提供一个用户友好的 Web 界面方便用户查看监控数据、调整图表和仪表盘进行数据分析。
Prometheus时序数据监控
Prometheus 是一个开源的监控和报警工具主要用于收集、存储和查询时间序列数据即带时间戳的度量数据。它的工作方式通常是 拉取式pull通过周期性地向配置的目标例如服务、容器、主机等发送 HTTP 请求获取指标数据Prometheus有以下特点 时序数据存储 Prometheus 内置了时序数据库TSDB专门用于存储和查询时间序列数据。它将每个数据点视为一个时间戳和一组标签label的组合。 PromQL Prometheus 提供了强大的查询语言 PromQLPrometheus Query Language使得用户能够高效地从存储的指标数据中进行聚合、查询和分析。 拉取式收集 Prometheus 通过定期向服务端点发起 HTTP 请求拉取数据。它也支持向外部发送指标数据推送。 报警规则 Prometheus 支持自定义报警规则能够根据查询结果触发报警例如系统负载过高或某个服务宕机。
使用场景
系统性能监控如 CPU 使用率、内存使用、请求数、响应时间等。容器和服务监控如 Kubernetes、Docker 等环境。集成应用程序的指标例如数据库查询时间、API 请求量等。
Loki日志管理
Loki 是一个开源的日志聚合系统专门用于收集、存储和查询日志数据。它的设计理念是与 Prometheus 紧密集成并且尽量降低资源消耗使日志查询与时间序列数据监控的体验一致。Loki有哦以下特点
日志聚合和存储 Loki 专注于从分布式系统收集日志数据。与传统的日志管理工具不同Loki 设计简化了存储和查询结构通常将日志数据存储在简单的对象存储系统如 S3、GCS中。标签化日志 类似于 PrometheusLoki 使用标签labels来对日志进行标识和分类。每条日志都有与其相关的标签而不是全文索引这使得 Loki 在存储上更加高效。与Prometheus集成 Loki 的查询语言LogQL与 PromQL 类似允许用户基于时间和标签来查询日志数据。Loki 本身不存储日志的全文而是将日志条目与时间和标签一起存储因此可以高效地进行聚合和查询。易于扩展 Loki 可以与现有的日志代理如 Fluentd、Promtail 等配合使用方便地收集来自各个源的日志数据并将其发送到 Loki。
使用场景
日志聚合收集和存储来自多个应用程序和服务的日志数据。故障排查结合 Prometheus 的监控数据Loki 可以帮助开发和运维人员通过日志追踪问题和异常。集群日志管理适用于云原生环境如 Kubernetes集中式地收集和管理所有服务的日志。 工具使用
安装
微服务和监控工具现在都是部署在Kubernetest环境中这里我们就用Helm来完成监控工具的部署有关Helm的使用可以参考Kubernetes# Helm工具使用-CSDN博客
添加Helm仓库 首先添加 Loki 和 Prometheus 的官方 Helm 仓库 helm repo add grafana https://grafana.github.io/helm-charts
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update 部署Prometheus 执行以下命令部署 Prometheus helm install prometheus prometheus-community/prometheus \--namespace monitoring \--create-namespace \--set server.service.typeNodePort \--set server.service.nodePort30900 这会在 monitoring 命名空间下部署 Prometheus并将服务暴露在 NodePort: 30900。 部署Loki 执行以下命令部署 Loki helm install loki grafana/loki-stack \--namespace logging \--create-namespace \--set grafana.enabledfalse \--set prometheus.enabledfalse 此命令会部署 Loki 及其相关组件默认情况下 Loki 使用 3100 端口。 部署Grafana 执行以下命令部署 Grafana helm install grafana grafana/grafana \--namespace grafana \--create-namespace \--set service.typeNodePort \--set service.nodePort30000 \--set adminUseradmin \--set adminPasswordadmin 这会将 Grafana 暴露在 NodePort: 30000。
配置 Grafana 数据源
Grafana 启动后访问 http://Node-IP:30000登录用户名和密码为 admin / admin。 配置 Prometheus 数据源 1、在 Grafana 左侧菜单中选择 Configuration Data Sources。 2、添加新数据源选择 Prometheus。 3、填写 http://Prometheus-Service-Cluster-IP:9090 或 http://Node-IP:30900。 配置 Loki 数据源 1、添加新数据源选择 Loki。 2、填写 http://Loki-Service-Cluster-IP:3100。
Go Web 项目上报数据
Prometheus 指标上报
安装 Prometheus 的 Go SDK 在代码中引入prometheus的客户端sdk包在项目中用这个client进行数据上报
go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promhttp
在项目中添加上报示例代码
package mainimport (net/httpgithub.com/prometheus/client_golang/prometheusgithub.com/prometheus/client_golang/prometheus/promhttp
)var (httpRequests prometheus.NewCounterVec(prometheus.CounterOpts{Name: http_requests_total,Help: Number of HTTP requests received,},[]string{method, endpoint},)
)func init() {prometheus.MustRegister(httpRequests)
}func handler(w http.ResponseWriter, r *http.Request) {httpRequests.WithLabelValues(r.Method, r.URL.Path).Inc()w.Write([]byte(Hello, Prometheus!))
}func main() {http.Handle(/metrics, promhttp.Handler())http.HandleFunc(/, handler)http.ListenAndServe(:8080, nil)
}
运行服务后访问 http://Go-Service-IP:8080/metrics可查看 Prometheus 指标。
Loki 日志上报
安装 Loki 的 Go 客户端
go get github.com/grafana/loki-client-go/loki
在项目中添加日志上报代码
package mainimport (logtimegithub.com/grafana/loki-client-go/loki
)func main() {cfg : loki.Config{URL: http://Loki-Service-Cluster-IP:3100/api/prom/push,}client, err : loki.New(cfg)if err ! nil {log.Fatalf(Failed to create Loki client: %v, err)}defer client.Stop()for {err : client.Handle(app_logs, map[string]string{job: my-go-app,}, time.Now(), This is a test log from Go app!)if err ! nil {log.Printf(Failed to send log to Loki: %v, err)}time.Sleep(5 * time.Second)}
}
运行后Loki 将接收到日志Grafana 可通过 Loki 数据源查看。
数据查看
上报数据之后我们可以在Grafana上看统计的数据在统计的界面我们可以选择查看Prometheus和Loki的数据
查看Prometheus指标 查看Loki指标