Istio采集指标prometheus+grafana方案

[TOC]

Istio采集指标prometheus+grafana方案

Istio的prometheus支持

prometheus在Istio中的现状

prometheus这个后端组件涉及到数据存储问题(levleDB,代码里面添加SDK,直接存储在本地磁盘),而且我们有自己的prometheus集群,因此不太建议直接使用官方自带的镜像,而是采用自己的prometheus集群。

先看看原理,mixer组件中遥测相关的对外提供的Kubernetes的Service的服务名是istio-telemetry,mixer对外开放的exporter的数据查询接口是/metrics;istio-telemetry开放了42422端口,用来采集istio-mesh指标,开放了9093端口,用来采集mixer本身的指标。查看istio-telemetry这个Service,可以看到如下配置:

  - name: http-monitoring
    port: 9093
  - name: prometheus
    port: 42422

另外就是还有一个envoy的指标,是通过statsd 转换为 prometheus 的,关于statsd exporter的更多信息查看这里,大体流程如下:

+----------+                         +-------------------+                        +--------------+
|  StatsD  |---(UDP/TCP repeater)--->|  statsd_exporter  |<---(scrape /metrics)---|  Prometheus  |
+----------+                         +-------------------+                        +--------------+

在Istio中,这个对外提供的服务名是Istio-statsd-prom-bridge,通过9102端口对外提供服务,通过kubectl get svc -n istio-system istio-statsd-prom-bridge可以查看到详细信息:

apiVersion: v1
kind: Service
metadata:
  name: Istio-statsd-prom-bridge
  namespace: Istio-system
  labels:
    chart: mixer-1.0.0
    release: RELEASE-NAME
    Istio: statsd-prom-bridge
spec:
  ports:
  - name: statsd-prom
    port: 9102
  - name: statsd-udp
    port: 9125
    protocol: UDP
  selector:
    Istio: statsd-prom-bridge

这里,如果修改istio-statsd-prom-bridge这个服务的Service type类型,则可能导致ingressgateway失败,因为istio-statsd-prom-bridge的IP失效异常了。查看ingressgateway的日志可以发现:

 error initializing configuration '/etc/istio/proxy/envoy-rev0.json': malformed IP address: istio-statsd-prom-bridge

这个时候,可以通过删除ingressgateway这个pod,重启即可生效

Istio默认的metric监控指标

默认监控指标指的是使用初始配置时,Istio 收集的监控指标(metrics)的详细信息,可以通过更改配置来添加和删除指标,具体配置指标可以查看config.yaml配置文件中的kind: metric,这些指标都是通过metric 模板来定义的。

接入外部prometheus集群的方案

prometheus需要采用自己的服务,因此需要禁用,然后配置好相应的,注意服务要打通,可以采用NodePort方式,也可以采用ClusterIP(prometheus的Server端要打通网络),最优的姿势当然就是服务发现。需要将自己的prometheus集群里面的配置(scrape_config)的数据采集配置上mixer的地址和采集的端口(共三个端口),然后接口API是/metrics,这样自己的集群就能够采集到mixer的数据了:

  • istio-mesh (istio-mixer.istio-system:42422): 所有 Mixer 生成的网格指标

    • 如果不要Mixer组件,则可以不进行监控,也没有这样的数据
    • 这个是istio-telemetry组件提供的功能
  • mixer (istio-mixer.istio-system:9093): 所有特定于 Mixer 的指标, 用于监控 Mixer 本身

    • 这个是istio-policy 组件提供的功能
  • envoy (istio-mixer.istio-system:9102): envoy 生成的原始统计数据(并从 statsd 转换为 prometheus )

    • 这个是istio-statsd-prom-bridge组件提供的服务

pre环境验证中可以将istio-telemetry和istio-statsd-prom-bridge的Service的Type的类型改为NodePort,然后通过端口映射查看;需要注意的是如果修改istio-statsd-prom-bridge的Service的Type的类型改为NodePort,则会导致ingressgateway失败,需要删除ingressgateway的pod进行重启生效。

然后可以通过各自的 /metrics 接口查看数据

如何处理prometheus服务发现

上述的方案都是通过NodePort的方式,这样的话,需要手动配置要采集的目标地址(ip:port/URI),但是线上应用应该要采用prometheus的服务发现功能,自动发现节点并采集,后面这个需要和运维同学沟通,如何实现自动发现服务

prometheus的服务发现类别可以参考

新增Istio的prometheus采集指标

新增Istio组件的采集指标,需要做相关配置,可以详见收集指标和日志

现有Istio默认的监控指标有这些

接入外部的grafana系统

Istio默认有grafana服务,并且已经有相关面板配置ok,只需要查看,但是因为我们公司自己已有一套成熟的prometheus+grafana方案,运维配套、权限管理、组织管理等比较成熟,并且运维还需要兼顾容器内的服务和容器外的服务,因此Istio中,更适合采用外部已有的grafana服务。

只是我们需要将现有Istio提供的这些面板都通过模板方式转移到运维的grafana中

实战部署外部自有系统

1. Mac安装部署prometheus + grafana

两个服务都采用二进制安装部署

  • 启动prometheus:./prometheus;访问prometheus

  • 启动grafana:/grafana-server ; 访问grafana

    • 【默认密码:admin:admin】
    • 【new密码:admin:123456】
    • 添加数据源,添加prometheus的数据源

2. 配置prometheus的scrape_configs

配置prometheus的scrape_configs,新增Istio相关的采集

  - job_name: 'Istio'
    metrics_path: '/metrics'
    static_configs:
      - targets: ['172.31.2.2:32398']
        labels:
          group: 'Istio-mesh'
      - targets: ['172.31.2.2:32697']
        labels:
          group: 'mixer'
      - targets: ['172.31.2.2:32744']
        labels:
          group: 'envoy'

然后重启prometheus,通过http://172.31.36.68:9090/config查看

然后查看采集指标,搜索isito,发现有了数据

3. 配置grafana的DataSource

先add data source,设置默认的数据源,在setting中的type中选择prometheus,url选择地址http://172.31.2.2:9090,然后save and test

3. 配置grafana

在原有grafana系统中,Share dashboard,然后Export到文件,然后再在新的grafana中import Json file,然后选定prometheus即可。这样默认得到是DashBoard是无法编辑的,如下两个方式可以调整为可编辑状态:

  • 导出的Json File,需要修改editable为true,否则不能修改只能查看

  • 或者新版可以通过admin账号来Make dashboard editable

    • Setting -> General -> Make Editable

问题 & TODO

  1. 如何动态的处理prometheus的服务发现

【"欢迎关注我的微信公众号:Linux 服务端系统研发,后面会大力通过微信公众号发送优质文章"】

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容