阿里云容器服务Kubernetes(简称ACK)支持一键部署Istio,能够参考文档在ACK上部署使用Isito。Istio on ACK提供了丰富的监控能力,为网格中的服务收集遥测数据,其中Mixer是负责提供策略控制和遥测收集的Istio组件。使用Prometheus进行监控是Istio提供的监控能力之一。Prometheus是一个开源的监控和报警系统,Prometheus依赖少,功能齐全,普遍用于Kubernetes集群的监控系统中。Istio自0.8版本开始默认将Prometheus包含在内,Mixer支持对接到Prometheus监控设施的Adapter。用户能够经过查询service或pod看到Prometheus的运行状态和地址。也能够经过简洁明了的Prometheus的UI界面查看监测数据。html
Prometheus的本地存储设计能够减小其自身运维和管理的复杂度,可以知足大部分用户监控规模的需求,可是本地存储也意味着Prometheus没法持久化数据,没法存储大量历史数据,同时也没法灵活扩展。Prometheus自己没有尝试解决以上问题,而是经过定义一组remote storage adapter标准接口,让用户能够基于这组标准接口自主决定将Promthues中的监控样本数据存储至第三方的远端存储服务中,来解决本地存储带来的问题。数据库
TSDB for Prometheus是一种高性能,低成本,稳定可靠的在线时序数据库服务,经过内置实现的Prometheus的remote storage adapter,自然原生支持做为Promtheus的第三方在线远端存储服务。json
相较于其余第三方远端存储而言,TSDB for Prometheus具备集成程度高,同时支持读写等优点。浏览器
TSDB for Prometheus在服务端内置实现的Prometheus remote storage adapter,只需在Prometheus的配置文件prometheus.yaml中修改下远程读写配置,便可原生支持Prometheus直接读写TSDB,集成程度高,无需额外单独部署adapter,极大地下降了adapter的单点故障风险和运维成本。安全
时序时空数据库(Time Series & Spatial Temporal Database,简称 TSDB)是一种高性能、低成本、稳定可靠的在线时序时空数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务。TSDB 具有秒级写入百万级时序数据的性能,提供高压缩比低成本存储、预降采样、插值、多维聚合计算、可视化查询结果等功能。bash
TSDB for Prometheus是阿里云时序时空数据库TSDB为Prometheus提供的一种高性能、低成本、稳定可靠的在线远端存储服务,具有如下能力:app
TSDB for Prometheus的使用要求具体能够参见使用要求运维
阿里云提供的不一样规格的TSDB实例,设置了不一样的最大写入TPS,避免过大TPS致使TSDB示例不可用,保护TSDB实例正常运行。当写入TPS超过TSDB实例容许的最大TPS时,将触发TSDB实例限流保护规则,会形成写入失败异常。所以须要根据TSDB实例规格来调整Prometheus的remote_write配置,从而实现平稳可靠的将Prometheus采集到的指标写入TSDB中。微服务
关于Remote Write配置,除了参考Prometheus官方提供的Remote Write配置说明以外,还能够参考Prometheus对接阿里云TSDB时的写入配置最佳实践。性能
建立一个TSDB实例很是简单,登陆TSDB 控制台,参照建立实例文档便可建立。
获取开通的TSDB实例的地址,能够参考TSDB官方文档快速入门
确认Prometheus所在机器可以正常访问TSDB实例。直接使用http访问TSDB实例的地址,若是可以获得包含”Welcome to use the TSDB”的字符串,表示Prometheus所在机器可以正常访问TSDB实例。
设TSDB实例的公网地址为: ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242,在启用了Prometheus的Istio所在Kubernetes集群下,执行命令:kubectl exec -it -n istio-system $(kubectl get pods -n istio-system -l app=prometheus -o jsonpath='{.items[0].metadata.name}') sh
进入到Prometheus容器以后,执行命令wget -S ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242
,能够获得以下结果:
Connecting to ts-bp1839ak5uf20igcw.hitsdb.rds.aliyuncs.com:3242 (101.37.143.44:3242)
HTTP/1.1 200 OK
Content-Type: Content-Type
index.html 100% |*****************************************************************************************| 361 0:00:00 ETA复制代码
而后执行命令 cat index.html,能够获得以下结果:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv=content-type content="text/html;charset=utf-8"><title>TSDB</title>
<style><!--
body{font-family:arial,sans-serif;margin-left:2em}A.l:link{color:#6f6f6f}A.u:link{color:green}.fwf{font-family:monospace;white-space:pre-wrap}//--></style><div>Welcome to use the TSDB!</div>复制代码
阿里云容器服务Kubernetes(简称ACK)支持一键部署Istio,能够参考文档在ACK上部署Isito。
若是是第一次部署使用Isito,能够直接按照文档步骤进行部署。
注意,勾选启用Prometheus 度量日志收集选项,默认状况下启用,并勾选持久化存储,提示须要提供能够访问的TSDB地址。此处填写在上述步骤中已经验证可使用的TSDB实例的地址,例如ts-xxxxxxxxxxxx.hitsdb.rds.aliyuncs.com:3242。
而后单击部署 Istio,启动部署。部署成功以后,Prometheus的监控数据将持久化到对应的TSDB实例中。
若是以前已经部署过Istio,但没有启用Prometheus的持久化存储,则能够按照以下步骤进行配置。
配置说明enabledtrue或者false,表示是否启用Prometheus 收集度量日志。默认状况下启用,即值为true。replicaCountprometheus容器组的副本数,默认值为1。persisttrue或者false,表示是否启用持久化存储。设置为true时,必须指定TSDB实例地址。tsdbEndpointTSDB实例地址,启用持久化存储时必须指定。retention默认的数据保留时间,8760h0m0s即为24*365小时,即1年scrapeInterval全局默认抓取时间间隔,默认为15s
登陆容器服务管理控制台,单击左侧导航栏中的应用配置下的配置项,进入配置项列表页面。点击名称为prometheus的配置项,进入配置项明细页面,以下图所示,能够看到对应的TSDB实例的地址:
能够简单的经过TSDB实例的管理控制台界面的“实例监控”界面,观察写入的TPS是否有所变化来验证。通常刚开始没有任何数据写入时,写入的TPS为0;若TPS开始从0变为正数时,则说明Prometheus已经将数据上报到了TSDB中,以下图所示。
在启用了Prometheus的Istio所在Kubernetes集群下,执行命令:kubectl port-forward -n istio-system svc/prometheus 9090:9090
打开浏览器,输入地址http://localhost:9090,进入Prometheus控制台页面。
Istio提供了一系列的默认监控指标,以Prometheus采集到Istio的一个监控指标istio_request_bytes_count为例进行查询认证,结果以下图所示。
至此,一个完整集成TSDB到Istio可观性Prometheus服务的过程已经结束。
在阿里云Kubernetes容器服务基础之上,快速搭建一套用于链接、管理以及安全化微服务的开放平台Istio,为应用引入和配置多个相关服务。使用Prometheus进行监控是Istio提供的监控能力之一,经过集成TSDB有效地解决持久化存储的问题。
本文为云栖社区原创内容,未经容许不得转载。