博客/社区

使用Istio和Grafana Cloud将应用程序日志转换为指标

2022年2月11日6分钟

安东尼奥·伯本是一名现场工程师solo.ioGloo网(使用Istio)和Gloo边缘(代表)。他是Kubernetes的狂热爱好者,他最喜欢的一句话是:“我愿意去任何地方,只要它是向前的。”你可以找到安东尼奥,跟着他走推特

Kim Uyttebrouck是一位经验丰富的领导者,在职业和个人生活中都有与成功团队合作的良好记录。他是一位来自比利时鲁汶的DevOps爱好者,喜欢学习新技术。在他的空闲时间,他训练短距离铁人三项。

你真的知道你的客户在寻找什么吗?

发现新的商业机会的一种方法是分析您的系统,收集您真正需要的东西,并通过一个全面的图表将其可视化!

日志跟踪是一个很好的开始,因为它们通常包含关于客户兴趣的有用信息。你只需要变换它们。

这篇博文将向您展示如何将Promtail收集的Istio访问日志中的原始数据转换为可视化的有价值的指标Grafana云

的场景

你的电子商务平台销售不同的袜子。客户可以根据个人兴趣筛选袜子目录。你想知道哪双袜子被“正式”和“极客”过滤得最多。

你的架构看起来是这样的:

实际设置!

先决条件:

  • Kubernetes集群-例如。种类
  • Istioctl(本例使用1.12.1版本)
  • Grafana云免费帐户

首先,让我们设置你的Grafana云堆栈:

  • 创建一个免费Grafana云帐户如果你还没有的话。
  • 使用现有凭证(谷歌,Github等)注册,创建您的帐户,并在Grafana云门户上获得自己的堆栈。
  • 您还需要创建一个Grafana云API密钥参数推送权限
  • 点击Prometheus旁边的“Send Metrics”,导航到Grafana Cloud的Prometheus配置页面。
  • 滚动以找到密码/API密钥部分。
  • 点击蓝色文本“Generate now”。在新窗口中,确保在创建API密钥时从下拉角色列表中选择“MetricsPublisher”。
  • 重要提示:Grafana Cloud的Prometheus配置页面还包含以下必需的信息,以便能够将Prometheus度量发送到Grafana Cloud:

    • 远程写端点
    • 用户名/实例ID
  • 导航回Grafana云传送门,点击Loki旁边的“发送日志”。

在“Using Grafana with Logs”页面,滚动找到Grafana Data Source设置。部署Promtail时需要User值。

现在,在Kubernetes集群上安装Helm存储库。

Helm repo添加grafana https://grafana.github.io/helm-charts Helm repo添加bitnami https://charts.bitnami.com/bitnami Helm repo更新

安装Istio操作符。

itioctl操作符init kubectl apply -f - <

等待Istio启动并运行。

安装socks -shop应用程序。您可以阅读有关应用程序设计的更多信息在这里

Kubectl create ns sock-shop Kubectl label namespace sock-shop istio-injection=enabled——override Kubectl -n sock-shop apply -f https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/kubernetes/complete-demo.yaml

验证是否所有吊舱都注入了Istio。(每个微服务舱应该显示一个额外的容器,即Istio sidecar。)

Kubectl得到豆荚-n袜子店

部署Istio网关和虚拟业务。

kubectl apply -f - <

打开通往Istio入口网关(=服务网格入口点)的隧道,以访问sock-shop应用程序。

Kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80

袜子商店应用程序现在可以在http://localhost:8080上获得

使用remote_write配置安装Prometheus。

所需详情见Grafana Cloud的普罗米修斯度量文档(请参见先决条件部分)。

export GC_PROMETHEUS_USERNAME=< my-grafana-cloud-api-key> export REMOTE_WRITE_ENDPOINT=< my-grafana-cloud-api-key> kubectl create ns logging kubectl create secret generic kubepromsecret \——from-literal=username=${GC_PROMETHEUS_USERNAME} \——from-literal=password=${GC_API_KEY} \ -n logging helm upgrade——install prometheus- n logging bitnami/kube-prometheus——version 6.6.0 -f - <

安装Promtaildaemonset。

export GC_LOKI_USER= export GC_API_KEY= export GC_LOKI_URL= kubectl create secret generic kubelokisecret \——from-literal=username=${GC_LOKI_USER} \——from-literal=password=${GC_API_KEY} \ -n logging helm upgrade——install promtail -n logging grafana/promtail——version 3.8.1 -f - <极客)"—regex:表达式:^。* \ / category.html \ ?标签= (? P <过滤器>正式)"—labels: filter:—metrics: filter: prefix: 'analytics_' type: Counter description: "Total count of filtered results" source: filter config: action: inc serviceMonitor: enabled: true namespaceSelector: {} annotations: {} labels: {} interval: 10s scrapeTimeout: 5s EOF . txt

Prometheus和Promtail都可以移植。

Kubectl -n logging port-forward svc/prometheus-kube-prometheus-prometheus 9090:9090 Kubectl -n logging port-forward ds/promtail 9080:9080

Grafana仪表盘

让我们在网站上浏览目录,同时过滤,看看几双袜子。”正式的或"极客(这将创建所需的流量)。

打开浏览器http://localhost:9080/metrics以咨询Promtail指标。搜索analytics_filter相关条目。

http://localhost:9090执行时,Prometheus将在图部分中可视化度量analytics_filter.这些条目被转发到Grafana Cloud。

附注:在本文中创建设置的另一种方法是使用Grafana代理它捆绑了Prometheus发现、WAL和remote_write功能,而没有本地TSDB,还捆绑了Promtail。请查看Grafana代理快速入门指南

让我们在Grafana Cloud上查阅数据!在Grafana云门户上,您可以通过单击“登录”登录到Grafana并开始使用它。在Grafana General/Home页面上,您可以创建一个新的仪表板来可视化生成的指标。

让我们通过单击“add a new panel”向新创建的仪表板添加一个面板。

接下来,定义一个查询。从“数据源”下拉菜单选择Grafanacloud -< your-grafana-cloud-stack-name >-prom设置普罗米修斯为数据源。

几乎完成了。定义您的查询,并可能给面板一个标题。在这里你可以使用:

Sum (rate(analytics_filter[30s])) by (filter)

点击“应用”(页面右上角)。给你!

您可以添加另一个面板来可视化日志。选择Grafanacloud -< your-grafana-cloud-stack-name >-logs设置洛基为数据源。选择表格或日志作为可视化,并定义您的查询,例如{filter= " geek "}。

最终的想法

所以最后的结果可以让你了解“正装”和“极客”袜子的趋势。这些指标的可视化肯定会帮助你更好地了解客户在寻找什么,并指导你做出更好的业务决策,从而产生更多的收入。

如何用Gloo Edge和Grafana将应用程序日志转换为有用的指标是一个真正的用例故事,Promtail是由Gloo边缘来查找它的一个组件:ExtAuth上的极端情况。度量用于发出错误配置的信号并发出警报。

了解了这种方法,您就可以利用相同的设置从日志中获取指标,而不仅仅是获得某种分析,还可以更好地理解系统如何为DevOps工作。