概念介绍
- grafana:
Grafana 是一个开源的度量分析和可视化套件,常用于监控和展示时间序列数据。以下是Grafana的一些核心概念:
Dashboard:
仪表板(Dashboard) 是Grafana的核心组成部分,它是一个可视化的界面,由多个面板(Panels)组成,用于展示从数据源中获取的指标数据。用户可以创建和定制仪表板来满足特定的监控和分析需求。
Panel:
面板(Panel) 是构成仪表板的基本元素,每个面板可以显示一个特定的图形或数据视图,如折线图、饼图、表格等。面板可以显示单个查询的结果,也可以组合多个查询结果。
Data Source:
数据源(Data Source) 是Grafana连接到的外部数据存储,可以是时序数据库(如InfluxDB、Prometheus)、关系型数据库(如MySQL)或其他API。Grafana支持多种数据源,允许用户选择最适合他们数据存储的类型。
Query Editor:
查询编辑器(Query Editor) 是针对每个数据源定制的,用于构建查询语句,以从数据源中提取数据。编辑器提供了特定于数据源的语法和选项。
Visualization:
可视化(Visualization) 是面板呈现数据的方式,Grafana提供了多种图形化选项,如线条图、柱状图、热力图等,以适应不同的数据和分析需求。
Alerting:
告警(Alerting) 功能允许用户基于数据源中的指标设置阈值,当条件满足时触发通知,可以发送邮件、短信或集成到其他系统。
Plugins:
插件(Plugins) 扩展了Grafana的功能,包括新的数据源、面板类型、可视化和仪表板小部件等。
Templating:
模板化(Templating) 允许用户在仪表板中使用变量,这些变量可以从数据源动态获取值,使得仪表板更加灵活,可以用于展示不同环境或实例的数据。
Time Series:
时间序列(Time Series) 数据是Grafana处理的主要数据类型,它包含随时间变化的数值数据,通常用于监控和性能分析。
通过这些概念,Grafana能够帮助用户收集、分析和可视化来自多个数据源的实时或历史数据,以实现高效监控、故障排查和性能优化。
- loki
Loki是Prometheus Labs开发的一个开源的日志聚合系统,设计用于大规模分布式系统的日志收集、存储和查询。Loki采用了类似Prometheus的时间序列数据库架构,但专为日志数据设计,以提供高效、可扩展和低成本的解决方案。以下是Loki的一些关键特点:
标签为基础的索引:
与Prometheus相似,Loki使用标签(labels)来标识和组织日志条目,这使得日志查询非常灵活和高效。
水平扩展:
Loki设计为水平扩展,可以通过增加更多的服务器节点来处理更大的日志流量和存储需求。
轻量级客户端:
客户端库(如Promtail)负责收集日志,它们轻量级且易于集成到各种应用程序和服务中。
流式处理:
Loki采用流式处理模型,日志数据在被接收后立即被索引和存储,无需批量处理或归档。
压缩和切片:
为了节省存储空间,Loki对日志数据进行压缩,并将它们切片存储,每个切片都有一定的生命周期,过期后自动删除。
强大的查询语言:
Loki使用LogQL(Log Query Language),这是一种类似于Prometheus查询语言PromQL的语法,用于查询和过滤日志数据。
多租户支持:
Loki支持多租户,可以为不同的团队、服务或应用分配独立的存储配额和查询权限。
低成本存储:
通过优化的存储和索引策略,Loki旨在以较低的成本提供高可用的日志存储。
与其他Prometheus生态系统的集成:
由于Loki和Prometheus都属于相同的技术栈,它们可以无缝集成,使日志数据可以与监控指标一起分析。
Loki通常与Grafana一起使用,Grafana提供了直观的界面来查询、可视化和报警Loki中的日志数据。这种组合为现代云原生环境提供了强大的日志管理和分析能力。
- promtail
Promtail是Loki项目的一部分,它是一个轻量级的日志代理,用于从应用程序和系统中收集日志并将其发送到Loki。Promtail简化了日志采集过程,使其易于集成到各种环境中。以下是Promtail的一些关键功能和特点:
简单集成:
Promtail易于配置,可以轻松地在各种操作系统和应用程序中部署,它支持多种日志文件格式和位置。
动态配置:
通过使用Prometheus Server的配置API,Promtail可以动态地更新其配置,添加或删除日志源,无需重启。
标签和筛选:
Promtail允许你为收集的日志添加标签,这些标签在Loki中用于查询和组织日志数据。它还可以通过正则表达式过滤不需要的日志行。
日志采集:
Promtail可以监听日志文件的变化,收集新写入的日志行,也可以轮询文件以收集历史日志。
资源效率:
作为轻量级代理,Promtail设计得尽可能高效,以减少对宿主机资源的影响。
安全传输:
收集的日志通过HTTPS发送到Loki,确保数据在传输过程中的安全性。
多平台支持:
Promtail支持多种操作系统,包括Linux、Windows和容器环境(如Docker和Kubernetes)。
自定义日志路径:
你可以为Promtail配置自定义的日志路径,使其能够从任何指定的目录或文件收集日志。
日志格式识别:
Promtail可以识别并处理不同格式的日志,如JSON、CSV或自定义格式。
通过Promtail,你可以轻松地将日志数据集成到Loki中,从而利用Loki的高效存储、查询和可视化能力。Promtail和Loki的组合为云原生环境提供了一种强大的日志管理和分析解决方案。
部署
promtail配置文件
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push #推送loki服务地址
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log #日志收集地址,此地址必须挂载到promtail容器内部
dockercompose
services:
loki:
image: grafana/loki:latest
ports:
- "3100:3100"
promtail:
image: grafana/promtail:latest
volumes:
- /var/log:/var/log #采集宿主机/var/log目录下日志
- ./promtail-config:/etc/promtail #promtail配置文件目录/promtail-config/config.yml
command: -config.file=/etc/promtail/config.yml
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin #登录grafana密码
查询日志
登录:localhost:3000
添加数据源:
以上为glp最简单配置的启动方式。