2023-05-26
1.静态配置(static config)示例
#
尽管Promtail可能是以Prometheus服务发现代码命名的,但该代码同样适用于在虚拟机或裸机上直接追踪没有容器或容器环境的日志,并且能够很好地发挥作用。
1server:
2 http_listen_port: 9080
3 grpc_listen_port: 0
4
5positions:
6 filename: /var/log/positions.yaml # Promtail需要有对此位置的写入权限。
7
8clients:
9 - url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
10
11scrape_configs:
12 - job_name: system
13 pipeline_stages:
14 static_configs:
15 - targets:
16 - localhost
17 labels:
18 job: varlogs # `job`标签在Prometheus中非常常见,对于关联指标(metrics)和日志非常有用。
19 host: yourhost # `host`标签将有助于区分来自此机器和其他机器的日志
20 __path__: /var/log/*.log # 路径匹配使用第三方库: https://github.com/bmatcuk/doublestar
如果你在轮转日志文件,请小心使用类似*.log
的通配符模式,确保它不会匹配到已轮转的日志文件。例如,如果你每天将日志从server.log
移动到同一个目录下的server.01-01-1970.log
,那么使用通配符搜索模式*.log
的静态配置将会捕捉到这个新文件并读取它,从而导致整天的日志重新被摄取。
...
2023-05-26
1.Loki的客户端
#
Loki支持以下官方客户端来发送日志:
- Promtail: 在运行Kubernetes时,Promtail是首选的客户端,因为您可以配置它自动从在Promtail所在的同一节点上运行的Pod中抓取日志。在Kubernetes中同时运行Promtail和Prometheus可以实现强大的调试功能:如果Prometheus和Promtail使用相同的标签,用户可以使用像Grafana这样的工具根据标签集切换指标和日志。在裸机环境中,Promtail也是首选的客户端,因为可以配置它根据主机路径跟踪所有文件的日志。这是将日志从纯文本文件(例如,记录到/var/log/*.log的内容)发送到Loki的最简单方法。最后,如果您希望从日志中提取指标,例如计算特定消息的出现次数,Promtail也非常适用。
- Docker Driver: 在使用Docker而不是Kubernetes时,应使用Docker的Loki日志驱动程序,因为它会自动添加适用于正在运行的容器的标签。
- Fluentd和Fluent Bit: 当您已经部署了Fluentd并配置了解析器(Parser)和过滤器(Filter)插件时,Fluentd和Fluent Bit插件是理想的选择。当使用Fluentd的Prometheus插件时,它也非常适用于从日志中提取指标。
- Logstash: 如果您已经在使用Logstash和/或Beats,那么这将是最简单的入门方式。通过添加我们的输出插件,您可以快速尝试Loki,而无需进行大量的配置更改。
- Lambda Promtail: 这是一种将Promtail的push-api抓取配置和lambda-promtail AWS Lambda函数结合起来的工作流程,它将来自CloudWatch的日志传输到Loki。如果您希望以低占用资源的方式尝试Loki,或者希望在Loki中监视AWS Lambda日志,这是一个不错的选择。
此外,还有一些第三方客户端可用.请注意,Loki API目前尚不稳定,因此在使用或编写第三方客户端时可能会发生重大变更。
...
2023-05-25
Loki没有包含任何内置的身份验证层。运维人员需要在您的服务前面运行一个认证反向代理,例如使用基本身份验证的NGINX或OAuth2代理。
请注意,在使用多租户模式的Loki时,Loki要求将HTTP头X-Scope-OrgID
设置为标识租户的字符串;负责填充该值的责任应由认证反向代理处理。有关更多信息,请阅读有关多租户的文档。
...
2023-05-24
Helm chart允许您在Kubernetes集群中配置、安装和升级Grafana Loki。
本文使用的是Loki Helm chart的5.5.3版本,并包含以下部分:
- 配置存储
- Helm Chart组件
- Helm Chart值
- 安装Loki
- 将日志写入到Loki
- 配置Grafana使用Loki数据源
Loki的helm chart在github中地址是“Helm chart for Grafana Loki in simple, scalable mode”。
...
2023-05-23
Grafana Loki是一组组件,可以组成一个功能齐全的日志聚合系统。
Loki与其他日志系统不同是,它只会索引日志的元数据即labels
(类似Prometheus的labels),日志数据本身会被压缩并分块(chunck)存储在对象存储中,也可以存储在本地文件系统中。小的索引和高度压缩的分块简化了操作,大大降低了Loki的成本。
...
2023-01-04
kubeadm是Kubernetes官方提供的用于快速安部署Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。
...
2022-05-25
kubeadm是Kubernetes官方提供的用于快速安部署Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。
...
2022-03-20
前面我们使用Helm在Kubernetes中部署了生产可用的Pulsar集群,并将集群接入到Prometheus监控系统。
作为Pulsar集群的管理员,将这套生产可用的Pulsar集群交付给开发使用时,还需要做好租户和命名空间划分和创建,用户角色和权限配置。
本节将根据实践介绍一下Pulsar集群管理员如何做这些工作的。
...
2022-03-19
今天继续学习Go 1.18引入的泛型,每天利用几分钟的时间来学习,慢慢积累。
前两天学习了在Go中如何定义泛型函数,并学习了Go泛型中的类型约束(Type Constrant)的概念,今天通过参考Go官方的泛型技术提案文档,简单整理一下Go泛型的基本语法。
Go的泛型指的是在Go的类型声明和函数声明中增加可选的类型参数
。类型参数要受到类型约束,Go使用嵌入额外元素的接口类型来定义类型约束
,类型约束定义了一组满足约束的类型集(Type Set
)。
...
2022-03-18
今天继续学习Go 1.18引入的泛型,我们将以Go官方的泛型教程为资料,每天利用几分钟的时间来学习,慢慢积累。
昨天我们定义了一个泛型函数,代码如下:
1// SumIntsOrFloats sums the values of map m. It supports both int64 and float64
2// as types for map values.
3func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V {
4 var s V
5 for _, v := range m {
6 s += v
7 }
8 return s
9}
在定义泛型函数时,需要为泛型参数指定 类型约束(type constraint) 来限制泛型参数类型的范围。
SumIntsOrFloats
函数名称后边中括号的内容[K comparable, V int64 | float64]
就是类型约束。
...