首页 > 其他分享 >docker快速部署 influxdb+telegraf+grafana 推送主机及docker容器监控数据 并展示图形化

docker快速部署 influxdb+telegraf+grafana 推送主机及docker容器监控数据 并展示图形化

时间:2024-05-13 09:40:56浏览次数:14  
标签:inputs telegraf ## influxdb grafana docker 图形化

简述

1、InfluxDB

InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

 

2、Telegraf

Telegraf是一个插件驱动的服务器代理,用于收集和报告指标,并且是TICK Stack的第一部分。

Telegraf插件可以直接从它运行的系统中获取各种指标,从第三方API中提取指标,甚至通过statsd和Kafka消费者服务监听指标。它还具有输出插件,可将指标发送到各种其他数据存储、服务和消息队列,包括InfluxDB、Graphite、OpenTSDB、Datadog、Librato、Kafka、MQTT、NSQ等。

 

3、Grafana

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。

 

 

 

简单架构

 

以下部署可以跨主机 。比如telegraf 部署在客户机器, influxdb部署在自己公司外网(开放白名单只允许tekegraf的服务器访问)。  grafana去收集influxdb。

一、环境准备

1. 准备docker、docker-compose  此处网上一大堆 跳过

2.创建环境需要目录,(以下每次部署去相关目录操作)

mkdir influxdb  telegraf grafana

 

 

 

二、 部署influxdb 

1.准备compose文件

version: "3.3"
services:
  influxdb:
    image: influxdb:1.6.3
    container_name: influxdb
    hostname: influxdb
    restart: always
    ports:
        - "20000:8086"                                     #外部端口自定义
    volumes:
        - ./data:/var/lib/influxdb
    environment:
      - TZ=Asia/Shanghai
      - INFLUXDB_HTTP_AUTH_ENABLED=true                    #开启账号密码登录数据库
      - INFLUXDB_DB=telegraf                               #定义数据库名
      - INFLUXDB_ADMIN_USER=admin                          #定义数据库账号
      - INFLUXDB_ADMIN_PASSWORD=aaaa1111                   #定义数据库密码
    deploy:
      resources:
        limits:
          memory: 4g

 

三、部署telegraf

1.准备配置文件telegraf.conf

[global_tags]
  instance="10.10.10.10"  #本机ip
[agent]
  interval = "60s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  precision = ""
  hostname = "10.10.10.10"    #本机ip 。会显示在grafana中
  omit_hostname = false

#[[outputs.http]]             #此参数推送到prometheus数据库中,但下载是用的influxdb 所以注释
#  url = "http://10.10.10.10:9090/api/v1/write"  
#  data_format = "prometheusremotewrite"
#  [outputs.http.headers]
#     Content-Type = "application/x-protobuf"
#     Content-Encoding = "snappy"
#     X-Prometheus-Remote-Write-Version = "0.1.0"

[[outputs.influxdb]]                                               #推送到数据库 
  urls = ["http://111.111.111.111:20000"]                          #数据库的ip加端口。 跨网络需要指定influxdb公网ip端口
  database = "telegraf"           #数据库名
  ## Retention policy to write to. Empty string writes to the default rp.
  retention_policy = ""
  ## Write consistency (clusters only), can be: "any", "one", "quorum", "all"
  write_consistency = "any"
  ## Write timeout (for the InfluxDB client), formatted as a string.
  ## If not provided, will default to 5s. 0s means no timeout (not recommended).
  timeout = "5s"
  username = "admin"             #influxdb的账号
  password = "aaaa1111"          #密码
  ## Set the user agent for HTTP POSTs (can be useful for log differentiation)
  # user_agent = "telegraf"  
  ## Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
  # udp_payload = 512

[[inputs.docker]]                                        #收集docker数据
  endpoint = "unix:///var/run/docker.sock"
  gather_services = false
  container_name_include = []
  container_name_exclude = []
  timeout = "5s"
  docker_label_include = []
  docker_label_exclude = []
  perdevice = true
  total = false
  [inputs.docker.tags]
    env = "kehu-admin"               #定义收集上来的环境信息。 方便后面grafana查看,基本每收集一个都要写, 可增加变量。我这里定义(客户名-服务名)


#以下收集的硬件数据,如果没有收集你想要的, 可以百度执行搜下 或官方找下
[[inputs.cpu]]                                     #收集cpu数据
  ## Whether to report per-cpu stats or not
  percpu = true
  ## Whether to report total system cpu stats or not
  totalcpu = true
  ## Comment this line if you want the raw CPU time metrics
  fielddrop = ["time_*"]
  [inputs.cpu.tags]
    env = "kehu-admin"           


# Read metrics about disk usage by mount point
[[inputs.disk]]                             
  ## By default, telegraf gather stats for all mountpoints.
  ## Setting mountpoints will restrict the stats to the specified mountpoints.
  # mount_points = ["/"]
  ## Ignore some mountpoints by filesystem type. For example (dev)tmpfs (usually
  ## present on /run, /var/run, /dev/shm or /dev).
  ignore_fs = ["tmpfs", "devtmpfs"]
  [inputs.disk.tags]
    env = "kehu-admin"

# Read metrics about disk IO by device
[[inputs.diskio]]
  [inputs.diskio.tags]
    env = "kehu-admin"
  ## By default, telegraf will gather stats for all devices including
  ## disk partitions.
  ## Setting devices will restrict the stats to the specified devices.
  # devices = ["sda", "sdb"]
  ## Uncomment the following line if you need disk serial numbers.
  # skip_serial_number = false

# Get kernel statistics from /proc/stat
[[inputs.kernel]]
  [inputs.kernel.tags]
    env = "kehu-admin"

# Read metrics about memory usage
[[inputs.mem]]
  [inputs.mem.tags]
    env = "kehu-admin"

# Get the number of processes and group them by status
[[inputs.processes]]
  [inputs.processes.tags]
    env = "kehu-admin"

# Read metrics about swap memory usage
[[inputs.swap]]
  [inputs.swap.tags]
    env = "kehu-admin"

# Read metrics about system load & uptime
[[inputs.system]]
  [inputs.system.tags]
    env = "kehu-admin"


# Read metrics about network interface usage
[[inputs.nstat]]
  [inputs.nstat.tags]
    env = "kehu-admin"
  # collect data only about specific interfaces
  # interfaces = ["eth0"]

[[inputs.netstat]]
  [inputs.netstat.tags]
    env = "kehu-admin"

[[inputs.interrupts]]
  [inputs.interrupts.tags]
    env = "kehu-admin"

[[inputs.linux_sysctl_fs]]
  [inputs.linux_sysctl_fs.tags]
    env = "kehu-admin"

 

2.准备compose文件

version: "3.3"
services:
  telegraf:
    image: telegraf
    container_name: telegraf
    restart: always
    environment:
      HOST_PROC: /rootfs/proc
      HOST_SYS: /rootfs/sys
      HOST_ETC: /rootfs/etc
    user: telegraf:994     #/etc/group 看下docker组的id ,需要修改
    volumes:
     - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro    #指定上面的配置文件
     - /var/run/docker.sock:/var/run/docker.sock         #收集docker 下面收集系统
     - /sys:/rootfs/sys:ro
     - /proc:/rootfs/proc:ro
     - /etc:/rootfs/etc:ro
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

 

 

四、部署grafana

1.准备compose文件

#web界
  grafana:
    image: grafana/grafana:9.5.18
    restart: "always"
    ports:
      - 10000:3000
    container_name: "grafana"
    volumes:
      - "./grafana/grafana.ini:/etc/grafana/grafana.ini"              #配置文件自行拷贝出来。通过docker run启动个grafana  然后docker cp拷贝到外部,杀掉run启动的容器
      - "./grafana/grafana-storage:/var/lib/grafana"
      - "/etc/localtime:/etc/localtime:ro"

 

 

五、启动服务

docker-compose -f *****.yml up -d    #指定各个yml文件

 

六、设置grafana

1. 浏览器打开grafana 10.10.10.10:10000    上面写的什么端口就什么端口

2.设置中文

 

3.设置数据源。指定influxdb 的数据库。 grafana和influxdb服务器网络要通

 

4.导入仪表盘

#去官方下载监控模板即可 。 我用的是  10578

 插件地址:https://grafana.com/grafana/dashboards

 

 

 

 导入完后不会完全展示。 设置刚才telegraf设置的变量

 

标签:inputs,telegraf,##,influxdb,grafana,docker,图形化
From: https://www.cnblogs.com/namedgx/p/18188649

相关文章

  • zerotier-docker部署
    linux-centos-docker安装zerotier版本:centos7.9(7.7以上的版本都可用)注意事项安装zerotier需要内核版本高一点,我这里用的是5.X这里发现报错信息:FATAL:kerneltooold就是内核版本过低,需要升级具体流程查看当前内核版本uname-r我这里是5.4.273-1.el7.elrepo.x86_6......
  • 宝塔docker快速安装Halo
    宝塔docker快速安装Halo一、Docker部署Halo我们前面还是需要先在宝塔面板环境中安装Docker,一般默认时候是没有安装的。这里我们在宝塔面板中的Docker管理器应用商店中安装。我们可以看到直接等待安装成功。后面在部署程序的时候有需要用到这里界面。二、这里我们在【镜......
  • Docker 部署Redis
    1、创建Redis目录mkdirRedis目录2、创建配置文件redis.confvimRedis目录/redis.conf#当配置中需要配置内存大小时,可以使用1k,5GB,4M等类似的格式,其转换方式如下(不区分大小写)#1k=>1000bytes#1kb=>1024bytes#1m=>1000000bytes#1mb=>1024*1024byt......
  • Docker 部署MySQL
    1、创建配置目录mkdir-pMySQL目录/conf2、切换到配置目录cdMySQL目录/conf3、创建配置文件vimmy.cnf[client]#设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8mb4[mysql]#设置mysql客户端默认字符集default-character-set=ut......
  • Docker Compose 备忘清单
    DockerCompose备忘清单Docker-compsoe是一个开源项目,用于定义和运行多容器Docker应用程序的工具。由Docker社区维护。通过一个YAML文件来配置应用程序的服务,以便可以使用一个命令启动、停止和重启整个应用程序。DockerCompose开源地址DockerCompose发行地址github......
  • 以docker-compose方式部署halo
    1.安装****dockercurl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun安装完成后,使用以下命令启动dockersystemctlstartdocker接下来,使用以下命令将docker设置为开机自启;并重启服务使得更改生效systemctlenabledockersystemctlreboot可以通......
  • 使用 Docker 部署 VS Code in The Browser
    1)介绍GitHub:https://github.com/coder/code-server在日常学习工作中,Vscode已成为我们首选的代码编辑器。然而,其局限性在于当我们从家到公司移动时,难以保持连续的编码体验。针对这一痛点,虽然市面上已有如VisualStudioCodespaces、Cloudstudio和CloudIDE等在线编辑器(Web......
  • Docker容器定时备份MySQL数据库
    1.系统环境mysql8、centos7.92.创建mysql_backup.sh文件#!/bin/bash#获取容器idcontainer_id=`/usr/bin/dockerps-aqf"name=mysql-8.0"`echo"mysql的镜像IDis$container_id"#登录用户名mysql_user="xxx"#登录密码(注意如果密码包含特殊符号前面要用'......
  • Docker容器与守护进程运维 --项目四
    一、Docker容器配置进阶 1、容器的自动重启Docker提供重启策略控制容器退出时或Docker重启时是否自动启动该容器。容器默认不支持自动重启,要使用 --restart 选项指定重启策略。作用:容器自动重启;重启策略能够确保关联的多个容器按照正确的顺序启动。容器重启选项值:重启......
  • DockerFile
    DockerFile解析: 是什么: dockerfile是用来构建docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。独立于dockerbuild创建成docker镜像 官网:http://docs.docker.com/engine/reference/builder/ 构建三步骤: 1,编写dockerfile文......