前提条件

创建一个被监控应用,本例中创建一个 nginx 应用,参见通过镜像创建 Nginx

背景信息

容器服务提供了与第三方开源监控方案集成的能力。

说明
目前,容器服务监控集成默认只支持 InfluxDB 和 Prometheus。

下面的示例以 InfluxDB 为例介绍如何进行容器服务的第三方监控方案集成。

操作步骤

  1. 登录 容器服务管理控制台
  2. 在 Swarm 菜单下,单击左侧导航栏中的应用
  3. 选择目标集群,单击页面右上角的创建应用


  4. 填写应用的基本信息并单击使用编排模板创建
    本示例创建名为influxdb的应用。


  5. 填写下面的编排模板并单击创建并部署
    说明
    在实际生产环境中,本示例中的模板需要做一些修改,其中 influxdb 的服务定义部分不要对宿主机暴露端口。
    version: '2'
    services:   #定义 influxdb
     influxdb:
         image: tutum/influxdb:0.9
         volumes:
             - /var/lib/docker/influxdb:/data
         ports:
             - "8083:8083" #暴露 Web 界面端口
             - "8086:8086" #暴露数据 API Web 接口端口
  6. 应用创建成功后,在应用列表页面,单击本示例所创建应用的名称influxdb, 查看应用详情。单击容器列表,查看当前应用对外暴露的节点 IP 和端口号,并复制该值(本示例中,复制 8086 端口对应的节点 IP 和端口号;该信息为influxdb对外暴露的数据上报地址),如下图所示。


  7. 单击左侧导航栏中的应用,返回应用列表页面。选择准备好的 nginx 应用,单击更新配置,在现有的模板中,添加以下内容来声明 InfluxDB 和容器监控服务的集成并单击确定
    labels:
         aliyun.monitoring.addon.influxdb: "http://刚才复制的节点 IP:端口号"
         aliyun.monitoring.addon.influxdb_retention_policy: "default"
    说明
    第三方开源监控集成目前只支持 InfluxDB 和 Prometheus,label 分别为 aliyun.monitoring.addon.influxdbaliyun.monitoring.addon.prometheus。标签取值的格式必须为 schema:hostIp:port

    由于容器监控服务的 Agent 采用了 host 网络模式,容器服务无法使用 link 来识别 InfluxDB,所以您需要先创建influxdb,再将influxdb对外暴露的数据上报地址添加到应用 labels 中,来通知数据采集客户端。完成以上步骤以后,监控服务会将 nginx 应用采集到的容器运行状态数据自动写入 influxdb 中。

  8. 在应用列表页面,单击本示例所创建应用的名称influxdb 并单击容器列表。复制influxdb容器对外暴露的端口。


  9. 推荐您通过 Web 代理的方式进行访问。

    如果您想通过公网进行访问,首先需要进行公网认证,然后为 influxDB 应用所在的节点配置 8083 和 8086 的入方向安全组规则,VPC 网络的集群通过 http://EIP:8083端口进行访问。

  10. 在浏览器中访问 InfluxDB 管理页面,查看容器监控服务写入的各项指标数据。
    1. 选择telegraf,若未出现 telegraf,请先运行 CREATE DATABASE telegraf,并重新部署需要监控的应用。
    2. 单击Query Templates并在下拉菜单中单击Show Measurements
    3. 按 Enter 键。
    您可以查看数据库表,如下图所示。


    查看某个表的数据详情,如下图所示。


下一步

容器服务与 InfluxDB 集成之后,您可以根据自己的情况选择其他数据展示图表框架,比如 Grafana 等。