乐趣区

关于devops:容器云环境你们如何监控应用运行情况-JFrog-云原生应用监控实践

引言

自从 2018 年从 Cloud Native Computing Foundation(CNCF)呈现以来,您可能曾经在应用 K8 操作系统,随着容器云技术大倒退以及落地,进步了企业运维的效率和品质,并且升高了企业经营老本,但同时带来的问题是运维的复杂度和难度,举个例子????:因为容器的生命周期短,随时可能飘移到其余物理资源上运行,因而日志的采集和运行的监控很难像传统形式登录到服务器上查看,而经营团队须要理解有价值的数据来进行问题定位以及经营数据分析。

为了更宽泛地提供这种可察看性,咱们须要提供满足云原生环境下的监控能力。

JFrog 通过应用 Elasticsearch 和 Kibana 套件,以及 Prometheus 和 Grafana 套件来监控 Artifactory 制品库以及 Xray 破绽扫描工具的运行状况,上面咱们一起理解 JFrog 如何在云原生环境进行利用运维。

日志剖析

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

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

上面咱们将向您展现如何利用同类最佳的开源日志剖析技术:Elastic,Fluentd 和 Kibana 为经营团队提供 100%收费的开源日志剖析平台

首先应用 Fluentd,咱们提供了与开源数据收集器 Fluentd 的 JFrog 日志剖析集成配置,该集成可随 JFrog Platform 部署的每个产品实例装置。Fluentd 在 JFrog 平台中为每个产品执行日志输出,字段提取和记录转换,从而将该数据的输入标准化为 JSON。

因为所有日志数据均以这种通用格局提供,因而 Fluentd 将通过 Fluentd 的可插入体系结构将其传送到您的 Elasticsearch 剖析工具。

装置 FluentD

装置 FluentD,每个 JPD(JFrog Platfrom Deployment)节点都须要装置 Fluentd 日志记录代理。该代理将负责为新的日志行增加各种 JPD 日志文件以解析到字段中,利用相应的记录转换,而后发送到 Fluentd 的相干输入插件。

例如,对于运行 Red Hat UBI Linux 的节点,td-agent 必须装置 Fluentd 代理。对于基于 root 的程序包管理器(须要 root 拜访):

$ curl -L https://toolbelt.treasuredata… | SH

配置 FluentD

依据咱们是刚刚实现基于根的装置还是基于非根的装置,可能须要将 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

对于非 root 的装置,咱们能够将 td-agent.conf 文件存储在咱们具备写许可权的任何地位。运行 td-agent 时,能够应用该 - c 标记将 fluentd 指向该文件地位。

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

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

  • Artifactory 7.x
  • Xray 3.x
  • Artifactory 6.x

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

咱们将须要应用 match 指令更新此配置文件,该指令指定指向咱们的 Elasticsearch 实例的主机和端口:

ELASTIC OUTPUT

@type elasticsearch

@id elasticsearch

host elasticsearch

port 9200

index_name unified-artifactory

include_tag_key true

type_name fluentd

logstash_format false

END ELASTIC OUTPUT

此处的主机是咱们的外部 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 Product 相干 Scripted Field。

这是因为咱们要将 request_content_length 和 response_content_length 转换为 GB。您能够在“Discover”局部中查看正在生成的日志。

最初,让咱们查看仪表板,该仪表板当初蕴含在数据小部件(Wedgets)中显示的信息,以使您能够实时察看 JFrog Unified Platform 的日志数据,蕴含以下数据,如下图:

⭐ 日志卷,能够按类型过滤

⭐ 服务谬误

⭐ HTTP 响应码

⭐ 存取储存库

⭐ 以 GB 为单位的数据传输,用于上传 / 下载

⭐ 上传 / 下载的 top 10 的 IP

⭐ 通过用户名审核操作

⭐ IP 和用户名回绝的操作和登录

⭐ 按用户名的上传操作

利用监控

云原生环境自身会提供根底的资源监控,然而短少足够的利用外部监控用于更好的进行经营决策,为了加强您监控能力,咱们应用 Promethus 和 Grafana 套件进行监控,并提供了相应的集成配置手册:JFrog log analytics solution for Prometheus and Grafana.

通过此集成,能够收集 JFrog Platform 日志数据并转化为相应的监控指标(Promethus metrics),以应用可视化工具 Grafana 取得利用内视。

监控原理以及数据流如下图:

装置 FluentD

总体装置过程与上一章节统一,和日志剖析不同的是,咱们如何不扭转业务逻辑的同时裸露指标服务,以便应用监控工具疾速剖析。

这里咱们须要装置 Prometheus FluentD 插件,该插件将咱们的日志记录转换为 Prometheus 的 HTTP 指标接口(Metrics)。

配置 FluentD

FluentD 应用文本配置文件进行配置,该文件蕴含输出源,过滤器和输入链。Prometheus FluentD 插件提供用于配置 Prometheus 指标的语法。在咱们的案例中,咱们将 Artifactory 和 Xray 日志事件转换为 Prometheus 的指标。咱们曾经在这里设置了 Artifactory 和 Xray FluentD 配置示例。

抉择适当的 fluent.conf.* 文件,而后启动 td-agent。

⭐ fluent.conf.rt – Artifactory 版本 7

⭐ fluent.conf.rt6 – Artifactory 版本 6

⭐ fluent.conf.xray – Xray

而后,td-agent 在端口 24321 / metrics 上公开 HTTP 度量接口。您能够转到该 URL,而后看到相似以下内容的内容。

Prometheus

对于咱们的环境,咱们应用 Prometheus Kubernetes Operator 装置了 Prometheus。如果您尚未装置 Prometheus,请点击此处,理解如何应用操作员装置 Prometheus 的阐明。应用 Prometheus Kubernetes Operator,咱们能够配置 ServiceMonitors,这使 Prometheus 能够自动检测服务的新指标接口。否则,能够依照 Prometheus 文档中的形容应用 YAML 配置文件。以下 ServiceMonitor 资源配置能够应用 Kubernetes 选择器检测任何新的指标接口。

该选择器将使咱们的指标服务与标签应用程序匹配:artifactory-ha. 该服务公开了咱们在下面的 FluentD Prometheus 插件中设置的 HTTP 指标 (Metrics) 接口,配置如下图:

apiVersion: monitoring.coreos.com/v1

kind: ServiceMonitor

metadata:

name: servicemonitor-artifactory-ha-primary

labels:

metrics: jfrog

spec:

selector:

matchLabels:

app: artifactory-ha-primary

endpoints:

  • port: metrics

interval: 15s

apiVersion: v1

kind: Service

metadata:

labels:

app: artifactory-ha-member

name: artifactory-member-ha-metrics

spec:

ports:

  • name: metrics

port: 24231

protocol: TCP

selector:

role : unified-artifactory-ha-member

咱们能够在 Prometheus Target 列表中进一步验证对度量标准接口服务的自动检测。这使得 Prometheus 的配置变得疾速简便,特地是对于可能具备数百台服务器的大型零碎而言。如下图

Grafana

当初 Prometheus 收集了指标,咱们当初能够应用 Prometheus 的可视化层 Grafana 对其进行可视化。应用 Prometheus 的 PromQL 查询语言,咱们能够为仪表板设置查问。例如,以下 PromQL 提供了申请次数最多的仓库。

topk(10,(repo)的和(jfrog_rt_req {repo!=“”}))

并能够为咱们提供以下条形仪表小部件。

咱们提供的 FluentD 配置蕴含了多个 Artifactory 和 Xray 监控指标,您能够查问和创立本人的仪表板小部件。一个很好的终点是应用咱们的示例仪表板。此示例仪表板提供以下图形小部件,蕴含如下指标报表:

⭐ 上传数据传输

⭐ 下载数据传输

⭐ 热门下载 IP

⭐ 热门上传 IP

⭐ 申请量最大的工件

⭐ 申请最多的仓库

⭐ 数据最多的仓库

⭐ 审核用户

⭐ Artifactory 5XX 状态码

⭐ Artifactory 谬误

⭐ Xray 5XX 状态码

⭐ Xray 谬误

⭐ 回绝登录

⭐ 按 IP 回绝操作

⭐ 按用户回绝的操作

如上面三个图例,展现了 Grafana dashboard 监控 Artifactory 制品库利用内视。

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

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

总结

在云原生环境以及 DevOps 背景下,咱们不光要对根底资源(IAAS 层),中间件(PAAS 层)进行监控,同时更应该留神应用层监控,这样能力为开发提供更好的运维甚至是经营撑持。

明天和大家一起介绍了 JFrog 外部对利用的监控计划以及案例

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

** 欢送观看 JFrog 杰蛙每周二在线课堂,点击报名:
https://www.bagevent.com/even…**

退出移动版