Docker监控方案实践telegraf+influxdb+Grafana

1. telegraf+influxdb+grafana介绍

  1. telegraf Google开源的用于监控基础设施应用的工具,可以零配置运行在docker主机上来监控Docker主机以及Docker容器。其为单节点监控,只能监控一个主机, 作为docker服务的监控数据收集器,提供给influxdb

  2. influxdb InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖、提供管理界面。提供基于时间序列,基于事件的可度量的实时计算功能。

  3. grafana Grafana可视化大型测量数据的开源程序,有灵活丰富的图形化选项,可以混合多种风格,多个数据源例如Graphite、zabbix、InfluxDB、Prometheus、mysql和OpenTSDB 详见配置页面。作为数据分析的可视化展示,与influxdb配合实现监控目的。

2.架构图

在这里插入图片描述
数据流向: docker主机+docker容器–>telegraf–>influxdb–>granfana–>web页面

3.搭建

1)环境准备

– 安装docker以及docker compose(目前武汉SQA所使用的CentOS测试机都已经装好),如果没有网上有很多资料教你怎么在CentOS安装Docker以及docker-compose

2)创建虚拟网卡(为了网络环境隔离)

docker network create monitor
#为docker主机创建一个网卡名为monitor

[root@localhost ~]# docker network create monitor
185165a2caf09d9055cd69e780ef09e430edb24555ffe97d123e2c788d4da895

docker network inspect monitor
#查看创建的虚拟网卡

[root@localhost ~]# docker network inspect monitor
[
    {
        "Name": "monitor",
        "Id": "185165a2caf09d9055cd69e780ef09e430edb24555ffe97d123e2c788d4da895",
        "Created": "2019-01-24T11:23:12.935020586-05:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.20.0.0/16",
                    "Gateway": "172.20.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

3)部署influxdb

3.1)方式一:创建并启动influxdb容器,手动创建数据库用户名和密码

#命令:
docker run -d --name influxdb --net monitor -p 38083:8083 -p 38086:8086 tutum/influxdb:latest

[root@localhost ~]# docker run -d --name influxdb --net monitor -p 38083:8083 -p 38086:8086 tutum/influxdb:latest
d16f017a54a1a8658ab0a9f707a7698ec9c272cf2ebc7aa1fcd9b9d3bf867f3d

备注:-d: 守护线程运行
–name:容器名influxdb
–net:加入到网络monitor
-p: 主机端口(自己分配):容器端口 8083为infuxdb后台控制端口,8086是infuxdb的数据端口
tutum/influxdb:默认会在docker官方仓库pull下来influxdb镜像

容器创建完毕后docker ps –a查看容器是否是up状态。打开http://{ipaddr}:38083就会显示以下页面:
在这里插入图片描述
添加管理员账户和数据库:
在Query输入框依次输入以下两个命令,按enter执行。
##创建管理员角色 root 密码 123456 供使用

CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES

##创建数据库 telegraf用于接收telegraf的监控数据

CREATE DATABASE "telegraf" 

3.2)方式二:创建并启动influxdb容器的同时自动创建数据库用户名和密码

##命令:

docker run -d --name influxdb --privileged=true --net monitor -p 38083:8083 -p 38086:8086 -e ADMIN_USER=root -e INFLUXDB_INIT_PWD=root -e  PRE_CREATE_DB=telegraf tutum/influxdb

##执行效果:

[root@CNWH-CentOS timezone]# docker run -d --name influxdb --privileged=true --net monitor -p 38083:8083 -p 38086:8086 -e ADMIN_USER=root -e INFLUXDB_INIT_PWD=root -e  PRE_CREATE_DB=telegraf docker.io/tutum/influxdb
Unable to find image 'tutum/influxdb:latest' locally
latest: Pulling from tutum/influxdb
a3ed95caeb02: Pull complete 
23efb549476f: Pull complete 
aa2f8df21433: Pull complete 
ef072d3c9b41: Pull complete 
c9f371853f28: Pull complete 
a248b0871c3c: Pull complete 
749db6d368d0: Pull complete 
db2492acfcc3: Pull complete 
b7e7d2e12d53: Pull complete 
4272a53eef10: Pull complete 
9b2fefdb5321: Pull complete 
Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b
Status: Downloaded newer image for tutum/influxdb:latest
da70d0cbc27659306fa2625b3eefb4b945b4a3729606fa01dbb5442bdeaebd07

4)部署telegraf

部署telegraf容器的命令如下:

docker run -d --name telegraf --privileged=true --net monitor -v /sqa/ennis/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro -v /var/run/docker.sock:/var/run/docker.sock:ro telegraf:latest

执行效果:

[root@CNWH-CentOS ennis]# docker run -d --name telegraf --privileged=true --net monitor -v /sqa/ennis/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro -v /var/run/docker.sock:/var/run/docker.sock:ro telegraf:latest
64a2cddd0a5b0e27984ae540dfb9ca3f2127c5e61dafe5793ef32be9e7682b7a

备注:
–privileged=true设置挂载目录权限为最大 否则挂载出错
–net monitor设置加入monitor网络
–volume=/:/rootfs:ro将容器/rootfs目录挂载到docker /
–d 是否后台运行容器服务
Docker ps –a 查看容器启动成功

5)部署Grafana

部署Grafana命令如下:

docker run -d --name grafana --net monitor -p 33000:3000 docker.io/grafana/grafana

执行效果:

[root@localhost ~]# docker run -d --name grafana --net monitor -p 33000:3000 docker.io/grafana/grafana
Unable to find image 'grafana/grafana:latest' locally
latest: Pulling from grafana/grafana
177e7ef0df69: Already exists 
2fef65ef6d27: Pull complete 
1853722c53f1: Pull complete 
799ba0768193: Pull complete 
1f95ab204ad8: Pull complete 
f9afb204ae74: Pull complete 
Digest: sha256:39b5b657dcba6d8628f650877c4027b672236bdfe761d6463fe05e2b97ee9eb4
Status: Downloaded newer image for grafana/grafana:latest
1a7698b2f3b39bd7f410013eba0b8dcd3767f9b0bc16dc13488b1715ad9baf7b

docker ps –a验证容器是否启动,然后打开http://{ipaddr}:33000 默认登录密码 admin/admin

4. docker-compose 搭建telegraf+influxdb+Grafana环境

1)docker-compose.yml

version: '3'

services:
  
 influxdb:
   image: tutum/influxdb
   container_name: influxdb
   networks:
    - monitor
   ports:
    - "8083:8083"
    - "8086:8086"
   environment:
    - ADMIN_USER="root"
    - INFLUXDB_INIT_PWD="root"
    - PRE_CREATE_DB="telegraf"
   restart: unless-stopped

 telegraf:
   image: telegraf
   container_name: telegraf
   networks:
      - monitor
#   depends_on:
#      - influxdb
   privileged: true
   volumes:
      - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
   restart: unless-stopped

 grafana:
   image: docker.io/grafana/grafana
   container_name: grafana
   networks:
    - monitor
   ports:
    - "33000:3000"
   restart: unless-stopped
   
networks:
  monitor:
    driver: bridge

2)shell 脚本

根据自己的情况编写shell脚本,下面脚本是一个例子

#!/bin/bash

# Launch Postgres
docker-compose up -d Postgres
sleep 15  
docker-compose up -d Rabbitmq
sleep 5
docker-compose up -d elasticsearch 
docker-compose up -d td-agent 
docker-compose up -d Runtime
sleep 5
docker-compose up -d Container

3)telegraf.conf

请观察另外一个博客

在这里插入图片描述

4)如果想销毁监控部署的环境

进入docker-compose.yml的目录下执行命令:
docker-compose down,则所有的安装文件都会被清除。

5. 数据展示

1)登录grafana
默认的登录密码为admin/admin 登录过程中可以修改密码。
2)设置数据源
打开Grafana主页http://{ipaddr}:33000,点击add data source,输入的值如下图
在这里插入图片描述

3)点击左上角的+号-> Create Dashboard->Graph,点击Panel title的下拉选择edit
在这里插入图片描述

点击General,可以修改图表的titel名称
在这里插入图片描述

点击Axes,可以修改Y轴的单位-unit,以及显示的数值范围Min/Max
在这里插入图片描述

下面提供CPU/MEM/Network/File system/System Disk监控的查询方式供大家参考:
[CPU_total_usage]
在这里插入图片描述

[MEM_usage]
在这里插入图片描述

[FS_usage]
在这里插入图片描述

[Netwok I/O]
在这里插入图片描述

[System Disk usage]
在这里插入图片描述

另外大家可以通过右上角的时间筛选框选择你想查看的时间段的资源消耗情况
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值