容器云环境,你们如何监控应用运行情况?

2022-12-18 1658阅读

温馨提示:这篇文章已超过607天没有更新,请注意相关的内容是否还可用!

关注全球领先的DevOps平台JFrog

介绍

自 2018 年云原生计算基金会(CNCF)出现以来,你可能一直在使用 K8 操作系统。随着容器云技术的大发展和落地,提升了企业运维效率和质量,降低了企业运营成本。但同时,问题是运维的复杂性和难度。例如:由于容器的生命周期短,随时可能漂移到其他物理资源上运行,因此很难用传统方式登录和监控运行情况。去服务器查看,运维团队需要了解有价值的数据,用于问题定位和运维数据分析。

为了更广泛地提供这种可观察性,我们需要提供满足云原生环境的监控能力。

JFrog使用Elasticsearch和Kibana套件,以及Prometheus和Grafana套件来监控Artifactory产品库和Xray漏洞扫描工具的运行。下面我们来了解一下JFrog是如何在云原生环境下进行应用运维的。

日志分析

Elasticsearch 是一个分布式和可扩展的搜索引擎,可用于搜索全文、结构化文本和分析。它通常用于搜索大量数据和搜索不同类型的文档。

Kibana 是 Elasticsearch 最常用的可视化和仪表板。Kibana 使您能够通过用于构建可视化和仪表板的 Web UI 探索 Elasticsearch 日志数据。

下面我们将向您展示如何利用一流的开源日志分析技术:Elastic、Fluentd 和 Kibana 为运营团队提供 100% 免费的开源日志分析平台

首先使用 Fluentd,我们提供了 JFrog 日志分析与开源数据收集器 Fluentd 集成的配置,它可以与部署在 JFrog 平台上的每个产品实例一起安装。Fluentd 对 JFrog 平台中的每个产品进行日志输入、字段提取和记录转换,并将该数据的输出规范化为 JSON。

由于所有日志数据都以这种通用格式提供,因此 Fluentd 将通过 Fluentd 的可插拔架构将其传送到您的 Elasticsearch 分析工具。

安装 FluentD

要安装 FluentD免费容器云,每个 JPD(JFrog Platfrom Deployment)节点都需要安装 Fluentd 日志代理。该代理将负责为新日志行添加各种 JPD 日志文件以解析到字段中,应用适当的记录转换,然后发送到 Fluentd 的相关输出插件。

例如,对于运行 Red Hat UBI Linux 的节点,td-agent 必须安装 Fluentd 代理。对于基于 root 的包管理器(需要 root 访问权限):

$卷曲-L | 上海

配置 FluentD

根据我们刚刚完成的是基于 root 的安装还是非基于 root 的安装,Fluentd 配置文件可能需要放在不同的位置。

默认情况下,对于包管理器根安装,td-agent.conf 文件位于 /etc/td-agent/。

$ ls -al /etc/td-agent/td-agent.conf

-rw-r--r-- 1 root 8017 May 11 18:09 /etc/td-agent/td-agent.conf

对于非根安装,我们可以将 td-agent.conf 文件存储在我们具有写入权限的任何位置。运行 td-agent 时,您可以使用 -c 标志将 fluentd 指向此文件位置。

此配置文件必须替换为从 JFrog 日志分析 Github 存储库派生的配置文件。

在此存储库中,flex 文件夹包含配置文件模板。使用与节点中运行的 JFrog 应用程序相匹配的模板:

以Artifactory为例,添加采集日志配置如下:

我们需要使用 match 指令更新此配置文件,该指令指定指向我们的 Elasticsearch 实例的主机和端口:

#弹性输出

@type 弹性搜索

@id弹性搜索

主机弹性搜索

端口 9200

index_name 统一人工制品

include_tag_keytrue

type_name 流利的

logstash_format 错误

#END 弹性输出

这里的主机是我们内部的K8s集群主机。如果以不同方式配置 Elasticsearch 和 Kibana,也可以将其设置为外部 IP 地址。

运行 FluentD

现在我们有了新的配置文件,我们可以在登录容器后将 td-agent 作为容器上的服务启动:

$ systemctl 启动 td-agent

要么

$ td-agent -c td-agent.conf

这将启动 Fluentd 日志摄取代理,它将跟踪 JPD 日志并将它们全部发送到 Elasticsearch。

您必须对所有运行 Artifactory 和 Xray 的 Kubernetes Pod 重复此过程,当然您也可以将 Side Car 容器添加到 Artifactory 和 Xray 组件。

使用 Elasticsearch 和 Kibana

如果您还没有安装和配置 Elasticsearch 以及设置 Kibana免费容器云,我们提供了一些必要的引导程序和相应的 YAML 文件,用于将 Elasticsearch 和 Kibana 部署到 Kubernetes。

通过Kibana,在各个Artifactory和Xray Pod中安装Fluentd并运行td-agent时,可以在Kibana索引管理页面看到生成的索引,如下图所示:

同时,JFrog集成提供了一个NDJSON文件,定义了索引模式和可视化配置。该文件可以通过 Kibana 保存的对象页面导入。单击“导入”按钮导入文件。

导入后,您应该能够看到索引架构、可视化、仪表板、小部件,如下图所示:

在索引模式下,您可以看到我们有 2 个与 JFrog 产品相关的脚本化字段。

这是因为我们要将 request_content_length 和 response_content_length 转换为 GB。您可以在“发现”部分看到正在生成的日志。

最后我们来看一下仪表盘,现在包含了数据小部件(Wedgets)中显示的信息,可以让您实时观察JFrog统一平台的日志数据,包括以下数据,如下图所示:

容器云环境,你们如何监控应用运行情况?

应用监控

云原生环境本身提供了基本的资源监控,但缺乏足够的内部应用监控来更好地进行运营决策。为了增强您的监控能力,我们使用Promethus和Grafana套件进行监控,并提供相应的集成配置手册:JFrog Prometheus和Grafana日志分析解决方案。

通过此次整合,JFrog Platform 的日志数据可以被采集并转化为相应的监控指标(Promethus metrics),利用可视化工具Grafana 获取应用内视图。

监控原理和数据流向如下:

容器云环境,你们如何监控应用运行情况?

安装 FluentD

整体安装过程与上一章一致。与日志分析不同的是,我们在不改变业务逻辑的情况下,对外暴露指标服务,方便我们使用监控工具进行快速分析。

这里我们需要安装Prometheus FluentD插件,它将我们的logging转换为Prometheus的HTTP指标接口(Metrics)。

配置 FluentD

FluentD 使用包含输入源、过滤器和输出链的文本配置文件进行配置。Prometheus FluentD 插件提供了配置 Prometheus 指标的语法。在我们的例子中,我们将 Artifactory 和 Xray 日志事件转换为 Prometheus 指标。我们在此处设置了示例 Artifactory 和 Xray FluentD 配置。

选择合适的 fluent.conf.* 文件并启动 td-agent。

容器云环境,你们如何监控应用运行情况?

td-agent 然后在端口 24321/metrics 上公开 HTTP 指标接口。您可以转到该 URL 并查看类似以下内容。

容器云环境,你们如何监控应用运行情况?

普罗米修斯

对于我们的环境,我们使用 Prometheus Kubernetes Operator 安装了 Prometheus。如果您尚未安装 Prometheus,请单击此处获取有关如何使用 Operator 安装 Prometheus 的说明。使用 Prometheus Kubernetes Operator,我们可以配置 ServiceMonitors,它允许 Prometheus 自动检测服务的新指标接口。否则,可以按照 Prometheus 文档中的描述使用 YAML 配置文件。以下 ServiceMonitor 资源配置可以使用 Kubernetes 选择器检测任何新的指标接口。

此选择器会将我们的 Metrics 服务与标签应用程序相匹配:artifactory-ha。该服务暴露了我们在上面的 FluentD Prometheus 插件中设置的 HTTP Metrics 接口,配置如下:

api版本:monitoring.coreos.com/v1

种类:ServiceMonitor

元数据:

名称:servicemonitor-artifactory-ha-primary

标签:

指标:jfrog

规格:

选择器:

匹配标签:

应用程序:artifactory-ha-primary

端点:

- 端口:指标

间隔:15s

api版本:v1

种类:服务

元数据:

标签:

应用程序:artifactory-ha-member

名称:artifactory-member-ha-metrics

规格:

端口:

- 名称:指标

端口:24231

协议:TCP

选择器:

角色 : unified-artifactory-ha-member

我们可以进一步验证Prometheus Target列表中metrics接口服务的自动检测。这使得 Prometheus 的配置变得快速且容易,特别是对于可能有数百台服务器的大型系统。如下所示:

容器云环境,你们如何监控应用运行情况?

格拉法纳

现在 Prometheus 已经收集了指标,我们现在可以使用 Prometheus 的可视化层 Grafana 将它们可视化。使用 Prometheus 的 PromQL 查询语言,我们可以为我们的仪表板设置查询。例如,以下 PromQL 提供了请求最多的存储库。

topk(10, (repo)(jfrog_rt_req{repo !=""})) 的总和

并可以为我们提供以下条形图小部件。

容器云环境,你们如何监控应用运行情况?

我们提供的 FluentD 配置包含多个 Artifactory 和 Xray 监控指标,您可以查询和创建自己的仪表板小部件。一个很好的起点是我们的示例仪表板。此示例仪表板提供以下图形小部件,包括以下指标报告:

如下三图所示,Grafana仪表盘监控Artifactory产品库应用的内部视图。

1、按时间、按IP下载、上传数据量趋势/GB(6小时内)

容器云环境,你们如何监控应用运行情况?

2.按仓库,按用户下载文件的次数(6小时以内)

容器云环境,你们如何监控应用运行情况?

总结

在云原生环境和DevOps的背景下,我们不仅要监控基础资源(IAAS层)和中间件(PaaS层),还要关注应用层的监控,以提供更好的运维甚至运营促发展。支持。

今天和大家介绍一下JFrog的内部应用监控方案和案例。

有关详细信息,请查看 JFrog Log Analytics GitHub,您可以在其中找到更多配置选项和指标信息。

结尾

下载 JFrog Artifactory 企业版(免费试用):

下载 JFrog Artifactory 开源版(而不是 Nexus):

下载 JFrog JCR 免费版:

了解更多国内外DevOps实战案例,扫描下方二维码关注“JFrog捷蛙DevOps”公众号,后台回复“devops”,即可获取DevOPs入门精通实战视频和PPT学习材料免费。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]