热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

heml快速生效方法 wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz tar -zxvf helm-v3.2.1-linux-amd

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

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

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

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

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

配置 Loki

这里我们直接使用 port-forward 来访问 Grafana 服务:
grafana官方使用文档_使用 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了。

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

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

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

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

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

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

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

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

日志查询

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

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

grafana官方使用文档_使用 Loki 采集微服务日志
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)

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

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

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

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

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

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

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

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

已实现以下过滤器类型:

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


推荐阅读
author-avatar
手机用户2602896463
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有