自动化运维监控展示三剑客:Telegraf+Influxdb 2.4+ Grafana

1 总览

自动化运维监控展示三剑客:Telegraf+Influxdb+ Grafana。
Telegraf 收集数据:是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。内存占用小,通过插件系统可轻松添加支持其他服务的扩展。
Influxdb存储数据: 是一个开源的分布式时序、时间和指标数据库,使用 Go 语言编写,无需外部依赖。
Grafana:展示数据。

在这里插入图片描述

2 Influxdb 2.4

2.1 Influxdb存储的数据结构

infludb中存储的是时间序列数据,比如说某个时间点系统负载、服务耗时等信息,时间序列数据可以包含多个值。关于什么是时间序列数据,简单来来说就是数据是和一个时间点关联的,结合mysql中的记录与id关系来看就是时间序列数据的主键就是时间点(timestrap)。

infludb中的一条数据至少包括measurement(对应mysql中表概念)、timestamp、至少一个k-v结构的field,再加上0个或者多个k-v结构的tag。对比mysql来看,measurement就是一张表,其主键是timestamp时间戳,tag和field对应就是表中列,tag和field都是k-v接口,k对应列的名字,v对应该列存储的值,tag和field不同的是,tag是有索引的而field没有(如果查询条件为tag则会扫描所有查询到的数据),对于mysql表的有索引列和无索引列。注意mysql中的表需要提前定义结构,而influxdb中的measurement无需提前定义,其null值也不会被存储。
在这里插入图片描述

points的数据结构:
在这里插入图片描述

2.2 Windows安装

下载地址:https://docs.influxdata.com/influxdb/v2.4/install/?t=Windows
在这里插入图片描述

2.3 运行influxdb

打开cmd,切换到influxdb目录,运行,如下图
在这里插入图片描述
在这里插入图片描述

2.4 浏览器访问influxdb

http://localhost:8086/

在这里插入图片描述

输入下面初始用户名、密码、org、bucket。
在这里插入图片描述

就可以进入下面页面了。

在这里插入图片描述

2.5 Token

访问influxdb需要token,可以到如下位置找到

在这里插入图片描述
在这里插入图片描述

2.6 python写数据到influxdb

下面代码利用point写入。首先pip install influxdb-client

from datetime import datetime
import time

from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS

# You can generate an API token from the "API Tokens Tab" in the UI
token = "z-6hRtR4VeNQZCVQGmvOm5I-NHdxXC-lo4GwIDDt2fIX_vvVnZjDhZYtkJMF01BTZs_SqqunX6Tr7KXVYDyZZA=="
org = "test"
bucket = "test1"

with InfluxDBClient(url="http://localhost:8086", token=token, org=org) as client:
    write_api = client.write_api(write_options=SYNCHRONOUS)
    for i in range(30):
        point = Point("mem").tag("host", "host1").field("used_percent", 23.43234543+i).time(datetime.utcnow(), WritePrecision.NS)
        write_api.write(bucket, org, point)
        time.sleep(1)
    client.close()

2.7 查看influxdb中数据

我们在上节通过python写到influxdb的名为mem的measurement. 如下图filter中选择的men。就可以在上面看到数据了。
在这里插入图片描述

3 grafana

3.1 windows安装

下载:https://grafana.com/grafana/download?platform=windows
在这里插入图片描述

下载后直接运行安装。

默认端口号为3000,但有可能与其他端口号冲突,启动不了,可在defaults.ini中修改为其他。我改成了8087.
在这里插入图片描述

打开cmd,到安装目录:C:\Program Files\GrafanaLabs\grafana\bin,运行grafana-server.exe启动。
在这里插入图片描述

3.2 浏览器访问

我用chrome访问报错“If you’re seeing this Grafana has failed to load its application files”
在这里插入图片描述

尝试修改serve_from_sub_path=true,allow_embedding = true都不起作用。最后下载了firefox,可以使用。http://localhost:8087/

在这里插入图片描述

输入默认的账号密码:admin\admin. 重置完密码可以使用:

在这里插入图片描述

3.3 加载influxdb 2数据

选择首页的DATA SOURCES. 接着选择influxdb。
在这里插入图片描述

Influxdb 2 需要使用Flux查询语言,不是influxQL(influxdb 1使用这个,类似sql).
在这里插入图片描述

输入url:http://localhost:8086
在这里插入图片描述

输入org、token、bucket。测试成功。

在这里插入图片描述

3.4 查看数据

新建New dashboard,然后输入查询语句,展示下图。
FLux查询语句如下:

from(bucket: "test1")
    |> range(start: -1h)
    |> filter(fn: (r) => r._measurement == "mem")
    |> filter(fn: (r) => r._field == "used_percent")

在这里插入图片描述

4 Telegraf

4.1 下载与安装

在influx官网可以下载telegraf。地址:https://www.influxdata.com/get-influxdb/。

在这里插入图片描述

Windows版直接解压缩即可:

在这里插入图片描述

4.2 集成influxdb

我直接修改telegraf.conf里的influxdb_v2不行,后台报“[outputs.influxdb] Failed to write metric (will be dropped: 401 Unauthorized):”。
所以,现在influxdb里新建telegraf配置,然后覆盖telegraf.conf解决的。

第一步,loaddata选择telegraf,然后create configuration。
在这里插入图片描述

第二步,选择system。
在这里插入图片描述

第3步,给配置随便起个名字。
在这里插入图片描述

第4步,点击finish。
在这里插入图片描述

第5步,点击刚刚建立的配置。
在这里插入图片描述
全量负责下面配置
在这里插入图片描述

第6步,将上面的配置直接全量覆盖telegraf的telegraf.conf。并修改token。
在这里插入图片描述
在这里插入图片描述

4.3 启动telegraf

上面集成完influxdb后,就可以启动telegraf了。支持cmd里运行telegraf即可。

在这里插入图片描述

4.4 在influxdb里看数据

如2.7节讲的,在data explorer中可以查看
在这里插入图片描述

点击上图的SCRIPT EDITOR可以查看flux查询语言,会在grafana中使用。

在这里插入图片描述

from(bucket: "telegraf_test")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu")
  |> filter(fn: (r) => r["_field"] == "usage_system")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

4.5 Grafana展示

我尝试import现有的模板,始终不展示数据,或者顶多展示个CPU,故我直接新建dashboard了,然后采用flux语言自己查数据。
如下图新建dashboard。
在这里插入图片描述

新建一个panel
在这里插入图片描述

将上一节的flux语言copy到下图相应位置,就可以了。然后save。

在这里插入图片描述

保存后如下图。

在这里插入图片描述

类似的,可以再加个内存的。

在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI强仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值