引言

自从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...**