Grafana Cloud搭建轻量级日志收集系统PLG

1. PLG是什么

PLG=Promtail+Loki+Grafana

Promtail: 代理,负责收集日志并将其发送给 loki
Loki: 日志记录引擎,负责存储日志和处理查询
Grafana: UI 界面

Loki 和常用的 EFK(Elasticsearch + Filebeat + Kibana)日志采集方案类似,基本架构都是在应用节点有代理进程(Promtail)收集日志,传输到集中化的服务(Loki)存储和索引,最后通过图形化界面(Grafana)统一查询。

2. 搭建步骤

创建一个Grafana Cloud账号

  1. 创建一个免费的账号需要用到Google,Github等平台的信息
  2. 创建完成后的,页面应该是如下图所示:
    在这里插入图片描述
  3. 可以看到,我们有Grafana的实例,有Prometheus实例,有Loki实例在远程服务器上面了。我们就可以在本地k8s集群部署Promtail代理进行日志收集,并且转发到远程Loki实例上面了。

部署Promtail在本地k8s上,进行收集logs。

  1. 点击上面图中的Grafana的Launch按钮,然后进入到一个网页,依次点击Custom data–>Hosted logs–>xxx from a k8s cluster–>创建一个token即可;最后复制curl命令到本地集群执行。如下图:
  2. 我在本地有一个Ubuntu的k8s集群。
curl -fsS https://raw.githubusercontent.com/grafana/loki/master/tools/promtail.sh | sh -s 7xxxx4 glc_eyJvIjoiOTc3NDY0IiwibiI6InN0YWNrLTc3NjA4OC1pbnRlZ3JhdGlvbi1sb2tpLWNsb3VkIiwiayI6Ing4NzdSemo3Z1o4NGQxbnowMmdkVGc5UiIsIm0iOnsiciI6InByb2QtYXAtc291dGhlYXN0LTdisdX0= logs-prod-020.grafana.net default | kubectl apply --namespace=default -f  -

执行过后,就会有资源,由于我是第二次使用这条curl命令了,因此你可以看到有些资源我是unchanged的。另外kubectl get pods可以看到创建在namespace=default中的名字为promtail-xxx的pod。

young@young-hp:~$ curl -fsS https://raw.githubusercontent.com/grafana/loki/master/tools/promtail.sh | sh -s 7xxxx4 glc_eyJvIjoiOTc3NDY0IiwibiI6InN0YWNrLTc3NjA4OC1pbnRlZ3JhdGlvbi1sb2tpLWNsb3VkIiwiayI6Ing4NzdSemo3Z1o4NGQxbnowMmdkVGc5UiIsIm0iOnsiciI6InByb2QtYXAtc291dGhlYXN0LTdisdX0= logs-prod-020.grafana.net default | kubectl apply --namespace=default -f  -
configmap/promtail unchanged
daemonset.apps/promtail configured
serviceaccount/promtail unchanged
clusterrole.rbac.authorization.k8s.io/promtail unchanged
clusterrolebinding.rbac.authorization.k8s.io/promtail unchanged
young@young-hp:~$ kubectl get pods
NAME                                        READY   STATUS    RESTARTS   AGE
hostpath-csi-k8s-io-0                       9/9     Running   0          16d
6548ae1c1d40f288180fda2b-76876cc7c8-844p9   1/1     Running   0          47h
promtail-57t8d                              1/1     Running   0          13m
promtail-9k4zz                              1/1     Running   0          13m

解析

  1. Promtail其实是以Daemonset的形式部署在k8s集群上面的
  2. promtail-configmap.yaml文件就是在上面的那个curl命令后面的那个链接里面,里面主要是记录了像Prometheus那样的抓取log的规则。
  3. 例如下面的配置
scrape_configs:
  - job_name: kubernetes-pods
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_label_collect] #这里的relabel_configs 部分将过滤具有 collect=true 标签的 Pod
        regex: true
        action: keep

这里详细可以参考下,https://grafana.com/docs/loki/latest/send-data/promtail/scraping/,这里面讲述了每一项都是什么意思。

3. Grafana展示数据

上面那个图上,Launch–>Connecting Data。然后点击左上方的,Data Sources,select grafanacloud-yourAccountName-logs 那个。
就来到如下图所示,点击Test蓝色按钮。
在这里插入图片描述
在这里插入图片描述
点击Explore view之后,展示如下,再次点击,这个箭头,就会出现下拉框。

在这里插入图片描述

后面的那个select label也是一样的,下面是我的一个LokiQL,点击第二步那里,可以选择code模式,即可以输入LokiQL。然后右上方Run Query

{namespace="default", container_name="promtail"} |= `Successfully`

4.总结

  1. 本文总结了如何利用Grafana Cloud搭建一个轻量级收集日志的系统,并且教你如何查询显示log。
  2. 参考:Promtail的抓取配置
  3. 另外还有Loki的Rotation,即免费的Grafana账号提供了50GB的内存存储,如果你的应用logs超过了这个数量,你想怎么处理?一般都是删除离现在最久远的log。将在另外一篇讲。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值