• 使用cAdvisor+Influxdb+Grafana监控系统


      今天准备开始研究研究当前非常流行的Grafana+Influxdb监控系统,两者都是非常轻量级的应用但是功能却异常强大,可以说Grafana在作图显示方面真的毫不逊色与Cacti。

    组件介绍

    cAdvisor

      开源软件cAdvisor(Container Advisor)是用于监控容器运行状态的利器之一,该项目主页为https://github.com/google/cadvisor,它被用于多个与docker相关的开源项目中。实际上在Kubernetes系统中,cAdvisor已经被默认集成到了kubelet组件内。cAdvisor提供了web界面可供浏览器访问,在接下来的环境中我们会部署CAdvisor来收集数据信息。

    Influxdb

      说到Grafana就不得不提到Influxdb数据库,Influxdb是用Go语言编写的一个开源的分布式时序、事件和指标数据库,不需要外部依赖,该项目的主页为https://www.influxdata.com。

    它有三大特性:

    • 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等)。
    • 度量(Metrics):对实时大量数据进行计算。
    • 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。

    同时,它还有以下几大特点:

    • schemaless(无结构),可以是任意数量的列;
    • min, max, sum, count, mean, median 一系列函数,方便统计;
    • Native HTTP API, 内置http支持,使用http读写;
    • Powerful Query Language 类似sql;
    • Built-in Explorer 自带管理工具。

    Grafana

      Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。其项目官方地址为https://grafana.com。

    环境准备

    创建Influxdb容器,并配置数据库信息。

    1.下载influxdb容器。
    docker search influxdb

    INDEX       NAME                                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/influxdb                                           InfluxDB is an open source time series dat...   481       [OK]
    docker.io   docker.io/tutum/influxdb                                     InfluxDB image - listens in port 8083 (web...   219                  [OK]
    docker.io   docker.io/telegraf                                           Telegraf is an agent for collecting metric...   156       [OK]
    docker.io   docker.io/chronograf                                         Chronograf is a visualization tool for tim...   85        [OK]
    

    docker pull docker.io/influxdb
    2.运行influxdb容器。
    docker run -d -p 8086:8086 --name influxdb docker.io/influxdb

    • -d:以后台进程的形式运行容器。
    • -p:进行端口映射。

      Influxdb在0.13版本以后就已经关闭了web管理界面,但是目前在国内查到的文档大多是时间比较久的文档,所以配置时大多存在web界面的配置,实际上在1.2以后的版本中web管理界面就已经被删除了,所以我们这里做的端口映射只做了一个。

    3.进入容器配置所需数据库以及账户信息。
    docker ps

    CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                            NAMES
    404c10bd3531        docker.io/influxdb   "/entrypoint.sh in..."   22 minutes ago      Up 21 minutes       0.0.0.0:8086->8086/tcp   influxdb
    

    docker exec -it 404 /bin/bash
    influx

    Connected to http://localhost:8086 version 1.5.3
    InfluxDB shell version: 1.5.3
    

      在我们登录到Influxdb中可以显示出我们当前Influxdb数据库的版本信息。
    create database cadvisor
    use cadvisor
    CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES
    4.退出数据库在界面进行登录测试。
    influx -username root -password 123456 -database cadvisor
      我们首先创建了为Grafana提供数据的数据库名称并为此数据库创建了一个账户及密码。

    创建cAdvisor容器。

    1.下载cAdvisor镜像。
    docker pull docker.io/google/cadvisor
    2.运行cAdvisor容器。
    运行前首先要查看influxdb的ip地址,或者直接使用本机映射的地址,以便我们启动时的连接。
    docker inspect --format '{{ .NetworkSettings.IPAddress }}' 404

    172.17.0.2
    
    sudo docker run 
      --volume=/:/rootfs:ro 
      --volume=/var/run:/var/run:rw 
      --volume=/sys:/sys:ro 
      --volume=/var/lib/docker/:/var/lib/docker:ro 
      --volume=/dev/disk/:/dev/disk:ro 
      --publish=8080:8080 
      --detach=true 
      --name=cadvisor 
      --privileged=true 
      google/cadvisor:latest 
      -storage_driver=influxdb 
      -storage_driver_db=cadvisor 
      -storage_driver_user=root 
      -storage_driver_password=123456 
      -storage_driver_host=172.17.0.2:8086 
    

      以上创建命令可以查看cAdvisor官网,需要注意的是,我们要为cAdvisor提供连接Influxdb的配置信息,使用官网提供的配置方法创建cAdvisor时会有以下报错需要注意:

    F0606 02:09:21.619637       1 cadvisor.go:156] Failed to start container manager: open /sys/fs/cgroup/cpuset: permission denied
    

    解决办法:(创建容器时添加上此选项)

    --privileged=true 
    

    3.登录web界面,查看cAdvisor展示数据。

    4.登录influxdb查看cAdvisor是否将数据推送到influxdb。
    use cadvisor
    show measurements

    name: measurements
    name
    ----
    cpu_usage_per_cpu
    cpu_usage_system
    cpu_usage_total
    cpu_usage_user
    fs_limit
    fs_usage
    load_average
    memory_usage
    memory_working_set
    rx_bytes
    rx_errors
    tx_bytes
    tx_errors
    

      至此,我们已经可以确认cAdvisor已经收集了数据并存储至Influxdb中,接下来我们就可以创建Grafana用来展示我们当前的数据了。

    创建Grafana容器并配置Grafana展示数据。

    1.下载Grafana镜像。
    docker search grafana

    INDEX       NAME                                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/grafana/grafana                                    The official Grafana docker container           761
    docker.io   docker.io/kamon/grafana_graphite                             All in one image running StatsD, Graphite ...   145
    docker.io   docker.io/monitoringartist/grafana-xxl                       Dockerized Grafana 5.x/4.x/3.x with all pr...   61                   [OK]
    docker.io   docker.io/tutum/grafana                                      Grafana dashboard for InfluxDB. Please set...   56                   [OK]
    docker.io   docker.io/samuelebistoletti/docker-statsd-influxdb-grafana   Docker Image with Telegraf (StatsD), Influ...   50
    

    docker pull docker.io/grafana/grafana
    2.创建Grafana容器。
    docker run -d --name grafana -p 3000:3000 docker.io/grafana/grafana
    3.登录web界面配置Grafana。

      Grafana默认的用户名密码为admin
    1.修改默认用户密码。

    2.将Influxdb数据源添加入Grafana。

    3.创建新的Dashbord。

    4.接下来就是更详细的配置项等待我们配置。

    数据展示:

  • 相关阅读:
    XSS攻击
    逻辑题目
    PHP性能监测的工具介绍
    PHP最简单的后门,且难查,不报毒!
    php Session存储到Redis和memcached的方法
    [sourceTree]这是一个无效的源路径
    Java 解析 Excel 工具 easyexcel
    GoldenGate 将oracle数据抓取到Redis
    JAVA调用ORACLE存储过程时间类型参数没有日期
    mongoDB 分组并对分组结果筛选类似于SQL中的(group by xxx having ) 附带Java代码
  • 原文地址:https://www.cnblogs.com/Cherry-Linux/p/9144650.html
Copyright © 2020-2023  润新知