grafana官方使用文档_使用 Loki 采集微服务日志

heml快速生效方法
wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
tar -zxvf helm-v3.2.1-linux-amd64.tar.gz
cd linux-amd64/
cp helm /usr/local/bin
chmod a+x /usr/local/bin/helm


在 Kubernetes 上使用FluentBit+Loki +Grafana查看微服务日志

安装 Loki 和 FluentBit

开始安装 Loki ,使用 Helm 来快速安装,首先添加 Chart 仓库:

# Add the loki helm chart
helm repo add loki https://grafana.github.io/helm-charts
helm repo update

Chart 仓库配置完成后就可以直接进行安装了:

# Create the namespace to install loki
$ kubectl create ns loki
# Apply the loki helm chart
$ helm upgrade --install loki --namespace=loki loki/loki  --set fluent-bit.enabled=true,promtail.enabled=false,grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=true,prometheus.server.persistentVolume.enabled=true
Release "loki" does not exist. Installing it now.
NAME: loki
LAST DEPLOYED: Thu Nov 19 11:48:00 2020
NAMESPACE: loki
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Verify the application is working by running these commands:
  kubectl --namespace loki port-forward service/loki 3100
  curl http://127.0.0.1:3100/api/prom/label

安装的时候要注意设置 fluent-bit.enabled=true,这样就可以使用 FluentBit 作为日志转发器了;

安装 FluentBit:

$ helm upgrade --install fluent-bit --namespace=loki loki/fluent-bit --set loki.serviceName=loki.loki.svc.cluster.local
Release "fluent-bit" does not exist. Installing it now.
NAME: fluent-bit
LAST DEPLOYED: Thu Nov 19 11:51:12 2020
NAMESPACE: loki
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Verify the application is working by running these commands:
  kubectl --namespace loki port-forward daemonset/fluent-bit-fluent-bit-loki 2020
  curl http://127.0.0.1:2020/api/v1/metrics/prometheus

安装完成后我们可以使用用 kubectl -n loki get pods 命令查看 loki 命名空间中正在运行的 pod。

kubectl get pods -n loki

image.png

安装 Grafana ,使用 Loki 进行一些日志查询

helm upgrade --install my-release --namespace=loki loki/grafana
安装完成后查看 Pod 的状态:
kubectl get pods -n loki

image.png

配置 Loki

这里我们直接使用 port-forward 来访问 Grafana 服务:
kubectl --namespace loki port-forward $POD_NAME 3000

Navigate to http://localhost:8080 in the browser

在在浏览器中打开网址 http://localhost:8080 即可访问,初次登录需要输入用户名和密码,用户名为 admin,对应的密码可以用下面的命令获取:

kubectl get secret --namespace loki my-release-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
# The password for the admin user

查看loki命名空间中的service
kubectl get svc -n loki

image.png

这里因为要让k8s集群外能访问到所以将ClusterIP 修改为NodePort类型,具体修改后内容如下
kubectl edit svc my-release-grafana -n loki

spec:
  clusterIP: 10.100.87.199
  externalTrafficPolicy: Cluster
  ports:
  - name: service
    nodePort: 30060
    port: 80
    protocol: TCP
    targetPort: 3000

修改好以后保存即可。
生效之后就可以在192.168.100.203:30060访问grafana了。

登录完成后,我们就可以添加 Loki 作为数据源了,从左侧面板,选择配置 -> 数据源:

image.png

在数据源视图中,点击添加数据源,然后选择 Loki。

给数据源起一个名字,然后设置一个 Grafana 实例可以访问的 Loki URL。我们这里由于 Loki 和 Grafana 都在相同的命名空间中运行,不需要使用任何验证方案,因此不需要其他配置,单击 "保存和测试"。您应该会看到一条确认消息 Data source connected and labels found.。

image.png

http://loki.loki.svc.cluster.local:3100/

日志查询

现在 Grafana 已经连接到 Loki 了,接下来我们可以查询部署到 demo 命名空间的示例应用的日志,我们可以查找错误,通过 trace id 查找事务等等。

在 Grafana 页面中,从侧面板中选择 "探索",选择上一步中添加的 Loki数据源,在查询框中,输入{namespace="default"},然后点击 "运行查询",正常我们就可以看到日志返回了。

image.png

此外我们还可以添加更多的过滤器和标签,来缩小我们想要查询的日志范围。要查看来自 default 命名空间的 shida-getaway 的日志,可以使用语句 {namespace="default",container="shida-getaway"} 进行查询,我们也可以查找那些非正常的状态码的 http 请求 {namespace="default"} |= "http.resp.status"!= "200"。

我们还可以对来自日志的数据进行一些聚合分析。比如这里面汇总过去5分钟内 default 命名空间的 http 状态码,查询语句为:sum(count_over_time({namespace="default"} |= "http.resp.status" | json [5m])) by (http_resp_status)

上面的绿线代表 302 状态码,黄线代表 200 状态码,过去5分钟内没有其他状态码。关于 Loki 的查询语言 LogQL 还有很多高级的操作,我们可以通过官方文档查看更多。

此外查询历史记录还会被保存下来,这样我们就可以在将来重新访问一个查询历史了,查询检查器还可以报告有关查询执行的指标。

<main>

<article class="baidu_pl">

日志过滤器,更多参考官网

编写日志流选择器后,您可以通过编写搜索表达式来进一步过滤结果。搜索表达式可以只是文本或正则表达式。
查询示例:

{job="mysql"} |= "error"
{name="kafka"} |~ "tsdb-ops.*io:2003"
{instance=~"kafka-[23]",name="kafka"} != kafka.server:type=ReplicaManager

过滤器运算符可以被链接,并将顺序过滤表达式-结果日志行将满足每个过滤器。例如:

{job="mysql"} |= "error" != "timeout"

已实现以下过滤器类型:

  • |= 行包含字符串。
  • != 行不包含字符串。
  • |~ 行匹配正则表达式。
  • !~ 行与正则表达式不匹配。
    regex表达式接受RE2语法。默认情况下,匹配项区分大小写,并且可以将regex切换为不区分大小写的前缀(?i)。

参考资料:https://blog.csdn.net/weixin_39765280/article/details/111248445


作者:前浪浪奔浪流
链接:https://www.jianshu.com/p/786b7f99c520

相关资源:

Redis数据的导出和导入 - Dcsdn 

GitOps 初探 - Dcsdn 

redis哨兵配置文件 - Dcsdn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值