炫酷监控系列:Telegraf+InfluxDB+Grafana 搭建服务器监控平台

2022-01-17 11:17:43 浏览数 (1)

需求

近期需要搭建一套服务器性能数据监控平台,所以本次考虑基于Telegraf作为采集数据源的工具,集成使用influxdb存储数据,最后Grafana展示图表的方式,来建立这个监控平台。

监控平台拓扑

安装influxdb

  • docker的安装说明:Centos7 下 InfluxDB 从安装开始到入门
  • 宿主机直接安装说明:
代码语言:javascript复制
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6.x86_64.rpm
sudo yum localinstall influxdb-1.7.6.x86_64.rpm -y
service influxdb start
service influxdb status

安装Grafana

  • docker的安装说明:Grafana使用docker安装运行
  • 宿主机直接安装说明:
代码语言:javascript复制
wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
sudo yum localinstall grafana-5.4.2-1.x86_64.rpm -y
service grafana-server start
service grafana-server status

我前面写过关于安装influxdb、grafana的文章,如果不清楚可以访问上面的两个篇章。下面主要就是讲解Telegraf的安装以及配置。

安装Telegraf

参考文献

Telegraf 1.9文档

介绍

Telegraf是一个插件驱动的服务器代理,用于收集和报告指标,是TICK堆栈的第一部分。Telegraf具有直接从其运行的系统中提取各种指标的插件,从第三方API提取指标,甚至通过statsd和Kafka消费者服务监听指标。它还具有输出插件,可将指标发送到各种其他数据存储,服务和消息队列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。

主要特点

以下是Telegraf目前支持的一些功能,使其成为指标收集的绝佳选择。

  • 使用GO语言编写,编译成单个二进制文件,没有外部依赖项。
  • 极小的内存占用
  • 插件系统允许轻松添加新的输入和输出。
  • 众所周知的服务和API存在于许多流行服务的插件中。
安装介绍

Telegraf支持很多系统进行安装,本篇章主要介绍以centos7系统进行部署安装。

主要使用yum的安装方式,简单便捷。

配置yum源

要使用yum安装,首先根据官网文档的介绍,配置一下yum源先吧,配置如下:

代码语言:javascript复制
[root@server02 yum.repos.d]# pwd
/etc/yum.repos.d
[root@server02 yum.repos.d]#
[root@server02 yum.repos.d]# cat influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
[root@server02 yum.repos.d]#

配置完了yum源之后,执行一下yum makecache更新一下yum的缓存。 ”

好了,下一步就开始使用yum来安装看看。

执行使用yum进行安装以及启动服务

sudo yum install -y telegrafsudo service telegraf start

其实使用yum源下来rpm的网速,我个人感觉不是很快,下载一个69M的rpm文件要五六分钟。个人习惯将其rpm提前下载,然后在本地安装,如下:

代码语言:javascript复制
# 下载rpm安装包
yum install telegraf -y --downloadonly --downloaddir=/opt

# 进入下载的目录进行安装
cd /opt/

# 根据下载好的rpm包进行本地化yum安装
yum localinstall telegraf-1.12.5-1.x86_64.rpm -y

启动服务systemctl start telegraf

代码语言:javascript复制
[root@server02 opt]# systemctl start telegraf
[root@server02 opt]# systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
   Loaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-11-18 14:09:26 CST; 5s ago
     Docs: https://github.com/influxdata/telegraf
 Main PID: 10963 (telegraf)
   CGroup: /system.slice/telegraf.service
           └─10963 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Nov 18 14:09:26 server02 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
Nov 18 14:09:26 server02 systemd[1]: Starting The plugin-driven server agent for reporting metrics into InfluxDB...
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Starting Telegraf 1.12.5
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded inputs: mem processes swap system cpu disk diskio kernel
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded aggregators:
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded processors:
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded outputs: influxdb
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Tags enabled: host=server02
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"server02", Flush Interval:10s
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z W! [outputs.influxdb] when writing to [http://localhost:8086]: database "" creation failed: Post ...ion refused
Hint: Some lines were ellipsized, use -l to show in full.
[root@server02 opt]#

从status打印出来的信息:/usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d知道配置文件的路径 /etc/telegraf/telegraf.conf

那么下面来继续看看如何将telegraf采集的度量数据写入influxDB中。

查看telegraf的默认配置下,influxdb当前的写入数据

代码语言:javascript复制
# 使用curl的方式查询influxdb的数据库
[root@server02 ~]# curl -G http://localhost:8086/query --data-urlencode "q=show databases"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["telegraf"],["_internal"]]}]}]}
[root@server02 ~]#

# 登陆influxdb的客户端
[root@server02 ~]# influx
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
# 查询所有数据库
> show databases;
name: databases
name
----
telegraf
_internal
>
# 使用telegraf数据库
> use telegraf;
Using database telegraf
>

# 查看telegraf数据库的表
> show measurements;
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
>

# 查看表字段
> SHOW FIELD KEYS
name: cpu
fieldKey         fieldType
--------         ---------
usage_guest      float
usage_guest_nice float
usage_idle       float
usage_iowait     float
usage_irq        float
usage_nice       float
usage_softirq    float
usage_steal      float
usage_system     float
usage_user       float

name: disk
fieldKey     fieldType
--------     ---------
free         integer
inodes_free  integer
inodes_total integer
inodes_used  integer
total        integer
used         integer
used_percent float

# 查询cpu的使用空闲率
> SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' LIMIT 5
name: cpu
time                usage_idle
----                ----------
1574057380000000000 79.518072288706
1574057390000000000 98.49548645574282
1574057400000000000 98.69608826588123
1574057410000000000 97.8957915834375
1574057420000000000 98.50000000558794

可以从上面查看influxdb的数据得知,如果influxdb没有设置特殊的账号认证等信息,telegraf默认就可以直接将数据写入本地的influxdb中。

但是如果influxdb不是安装在本地,或者修改了端口号等配置,telegraf该怎么配置呢?

设置配置文件指定influxdb

Telegraf的配置文件在Centos7存储路径:

代码语言:javascript复制
Linux debian and RPM packages: /etc/telegraf/telegraf.conf

修改配置文件可以直接修改默认已有的配置文件,也可以直接自己创建一个配置文件,如下:

代码语言:javascript复制
telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf

本次示例只配置influxdb url、database名称,如下:

代码语言:javascript复制
vim /etc/telegraf/telegraf.conf

搜索outputs.influxdb如下:

配置完毕之后,重启Telegraf,查看influxdb的数据库是否使用了另一个?

代码语言:javascript复制
# 重启telegraf
[root@server02 telegraf.d]# service telegraf restart
# 登陆influxdb
[root@server02 telegraf.d]# influx
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query

# 查看所有数据库,可以看到增加了my_telegraf数据库了。
> show databases;
name: databases
name
----
telegraf
_internal
my_telegraf
>
> use my_telegraf;
Using database my_telegraf
>
> show measurements;
name: measurements
name
----
cpu
disk
....
>

可以安装配置已经创建了一个新的数据库示例my_telegraf,下面来使用grafana进行图表展示。

配置Grafana

初次启动,grafana会创建数据库,时间稍长,稍后即可访问http://localhost:3000打开grafana登录页面。输入默认用户名密码登录(admin/admin)。

输入admin/admin 之后,会转入设置新密码的页面。

添加influxdb数据源

点击添加数据源,按照下图配置选择influxdb添加一个influxdb数据源。

url需配置成正确的宿主机ip和端口(防火墙需放行8086),若不想暴露数据库端口,可换成influxdb容器的ip地址(需自行进入容器查看,容器重启后可能会发生变化)避免数据库暴露至公网。

InfluxDB Details需填写数据名(默认telegraf,这里我修改为my_telegraf)、用户名和密码(默认均为空)。

填写完成后,点击Save&Test按钮,若访问正常,会出现Data source is working提示,否则请检查配置内容以及网络(防火墙)。

这里我是使用默认最简单的配置,当然密码那些可以自行配置添加上。

添加仪表板

返回主页Home,点击添加仪表板按钮添加新仪表板,点击Graph创建一个Graph Panel。

点击标题展开菜单,选择Edit进入面板编辑。

选择Metrics选项卡配置面板数据。

如图示配置可显示一条CPU-total的数据曲线。

配置完成后点击上方保存按钮保存仪表板。

Grafana详细的使用方法请参考官方文档:http://docs.grafana.org/或本站其它教程。

下载官网的仪表

在上面已经说明了如何去自定义仪表的方式,下面来看看怎么使用官网提供的模板。

官方看板模板库:https://grafana.com/dashboards

选择需要下载的看板模板

下载看板模板 https://grafana.com/grafana/dashboards/79

Grafana导入模板

导入之后的呈现效果如下:

这个效果已经展示得很棒了!还有更加多的模板提供,大伙就各自去尝试吧。

最后展示其他几种模板

https://grafana.com/grafana/dashboards/10581

0 人点赞