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

news/2024/9/25 5:23:22

简述

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.3container_name: influxdbhostname: influxdbrestart: alwaysports:- "20000:8086"                                     #外部端口自定义volumes:- ./data:/var/lib/influxdbenvironment:- 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 = truemetric_batch_size = 1000metric_buffer_limit = 10000collection_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 = falsecontainer_name_include = []container_name_exclude = []timeout = "5s"docker_label_include = []docker_label_exclude = []perdevice = truetotal = false[inputs.docker.tags]env = "kehu-admin"               #定义收集上来的环境信息。 方便后面grafana查看,基本每收集一个都要写, 可增加变量。我这里定义(客户名-服务名)#以下收集的硬件数据,如果没有收集你想要的, 可以百度执行搜下 或官方找下
[[inputs.cpu]]                                     #收集cpu数据## Whether to report per-cpu stats or notpercpu = true## Whether to report total system cpu stats or nottotalcpu = true## Comment this line if you want the raw CPU time metricsfielddrop = ["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: telegrafcontainer_name: telegrafrestart: alwaysenvironment:HOST_PROC: /rootfs/procHOST_SYS: /rootfs/sysHOST_ETC: /rootfs/etcuser: 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:rodeploy:resources:limits:cpus: '0.5'memory: 512M

 

 

四、部署grafana

1.准备compose文件

#web界grafana:image: grafana/grafana:9.5.18restart: "always"ports:- 10000:3000container_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设置的变量

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/30847.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

软件安装过程中autogen.sh文件的作用

001、软件安装过程中autogen.sh文件的作用(base) [root@pc1 vcftools-0.1.16]# ls ## 原始解压后的文件, 有autogen.sh autogen.sh configure.ac LICENSE README.md vcftools-0.1.16.tar.gz build-aux examples Makefile.am src (base) [root@pc1 vcf…

传统FTP弊端显现 国产ftp要如何选择?

FTP(File Transfer Protocol)是一个用于在网络上的计算机之间传输文件的协议。它属于网络协议组的应用层,主要用于文件的上传、下载和文件管理操作,是一种比较通用、操作也比较简单的传输方式。不过随着国产化大浪潮的推进,很多组织机构都需要替换成国产FTP了。使用国产FT…

Mybatis之动态SQL使用讲解

目录1 动态SQL1.1 引言1.2 数据准备1.3 if 标签1.3.1 在 WHERE 条件中使用 if 标签1.3.2 在 UPDATE 更新列中使用 if 标签1.3.3 在 INSERT 动态插入中使用 if 标签1.4 choose 标签1.5 trim(set、where)1.5.1 where1.5.2 set1.5.3 trim1.5.3.1 trim 来表示 where1.5.3.2 trim 来…

axios无法加载响应数据:no data found for resource with given identifier

做一个demo,springboot写好了接口,postman请求也没问题,如下:但是axios请求时,却发生了问题:查了一圈,没发现啥问题,又想起来看下控制台信息跨域的问题?网上也有这么说的,抱着试试的态度在controller上增加了跨域的注解@CrossOrigin 重新运行,页面刷新,ok~

设计模式04----原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,在软件工程中用来创建对象的副本,从而避免新建对象时的性能开销。此模式利用已存在的对象实例作为原型,通过克隆(Clone)机制来创建新的对象,新对象与原型对象具有相同的属性和状态,但彼此独立,修改一个对象不会影响…

DLP数据防泄密产品选型时 要注意哪些要素?

DLP(Data Loss Prevention,数据丢失防护)产品是一套用于防止敏感数据泄露的技术解决方案。它们通过监控、检测和阻止敏感数据的传输来保护企业的信息资产。所以很多企业会选择DLP数据防泄密产品来保护数据安全。DLP数据防泄密产品的核心功能通常包括: 1、数据发现:DLP产品…

靶场合集

1.vulnhub很多安全竞赛都有在这里面出题,系列非常之多,不仅仅有web方面的,也有系统方面的渗透。 网上也有很多writeup,环境直接下载虚拟机压缩包,解压即可使用。新手朋友建议下载先自行测试,然后再看writeup解题 https://vulhub.org/(在线版) https://github.com/vulhu…

STM32Cube-10 | 使用ADC读取气体传感器数据(MQ-2)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外设,读取MQ-2气体传感器的数据并通过串口发送 本质就是ADC采集 MQ-2的原理图如下: 生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器:搜索并选中芯片STM32L431RCT6:配置时钟源如果选择使用外部高速时钟…