大数据平台XSailboat简介_OkGogooXSailboat的博客-CSDN博客
1、服务器集群规划
主机名 | IP | 安装软件 |
XCloud150 | 192.168.0.150 | TDengine、Telegraf |
XCloud151 | 192.168.0.151 | TDengine、Telegraf |
XCloud152 | 192.168.0.152 | TDengine、Telegraf |
XCloud153 | 192.168.0.153 | TDengine、Telegraf |
XCloud154 | 192.168.0.154 | TDengine、Telegraf |
2、安装准备
- 修改服务器主机名(/etc/hostname)。
- 添加主机名与IP的映射关系(/etc/hosts)。
- 关闭防火墙。
- jdk1.8
3、安装TDengine
3.1 简介
TDengine 是一款产品开源、云原生的时序数据库(Time Series Database),具有高性能、高可靠、可伸缩、零管理、简单易学等技术特点。提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度。
在本文的场景中,我们使用 TDengine 来存储 Telegraf 采集的实时监控数据。
3.2 下载安装包
官网地址:TDengine 产品 - TDengine | 涛思数据
从官网下载TDengine的安装包,选择社区稳定版。
客户端:TDengine-client-2.4.0.0-Linux-x64.tar.gz;
服务端:TDengine-server-2.4.0.0-Linux-x64.tar.gz
3.3 服务端安装
- 将TDengine的服务端安装包拷贝到安装目录,解压。
- 解压后,进入解压目录,使用root用户,执行“./install.sh”命令,安装客户端。安装过程中,会提示输入端口和邮箱,跳过即可。端口会在后续的配置文件中配置。
- 安装后,在/etc/taos目录下,修改taos.cfg配置。
- 在服务端的taos.cfg文件中,需添加firstEp、secondEp、fqdn配置。firstEp是集群中第一个启动的服务器节点的主机名和端口;secondEp是firstEp的备用服务器节点;fqdn是当前节点的主机名。注意区分。
- 指定数据文件、日志文件位置:
配置虚拟管理节点数量(约第46行):
注意:mnode负责所有节点运行状态的监控和维护,以及节点之间的负载均衡。同时,虚拟管理节点也负责元数据(包括用户、数据库、表、静态标签等)的存储和管理,因此也称为Meta Node。mnode间采用master/slave的机制进行管理,而且采取强一致方式进行数据同步。如果不配置mnode数量,集群中默认只有一个mnode,一旦这个mnode所在节点死机,集群将不可用。
- 配置数据副本数量(约第136行):
- 在服务器集群的其它节点,重复执行以上步骤。
3.4 启动及验证
- 按配置,首先启动XCloud152节点,之后再启动其余节点。root用户启动命令:systemctl start taosd;验证命令:systemctl status taosd
- 启动后,执行“taos -h XCloud152”命令,连接第一个启动的服务器节点。
- 连接后,执行“show dnodes;”命令,查看集群中的服务器节点。此时集群中,只有第一个启动的服务器节点,其余的服务器节点需手动添加到集群,如create dnode "XCloud153"。
3.5 非root用户启动
tdengine 安装指定root用户,产品目录、启动方式都是默认的,所有者都是root。如果需要改为非root用户启动,修改方式如下:
============================root用户操作
3.5.1 关闭服务
首先使用root用户,关闭tdengine,命令如下:
systemctl stop taosadapter
systemctl stop taosd
3.5.2 删除默认数据库及日志
TDengine 默认的数据库、日志文件夹,均不在产品目录下。产品目录下,通过软连接指向数据库、日志。
注意:在安装的时候,我们通过配置文件,重新指定了数据库和日志的存放目录。换言之,此时的TDengine有两个数据库、两个日志文件,实际使用的是配置文件中的数据库和日志,但默认生成的数据库和日志依旧会对Tdengine产生影响,因此我们需要将默认的数据库和日志清理掉。
为方便管理,以及权限设置,这里直接删除TDengine的默认数据库和日志文件夹,之后按实际需要配置。
操作截图如下:
修改TDengine产品目录、配置目录、以及数据库文件夹的所有者。如下:
=============================非root用户操作
3.5.3 修改配置
安装时已修改过配置,这里重新写一遍,主要是为了强调将数据库、日志指定到非root用户方便管理的位置。
3.5.4 新建数据库软连接及log文件夹
按配置创建数据库、日志的真实文件夹,并在产品目录下,创建数据库、日志真实位置的软连接,软链接是为了方便用户访问,并不影响TDengine的运行。
3.5.5 启动服务
在bin目录下,使用非root用户启动taosd 和 taosadapter 服务。命令:
nohup ./taosd &
nohup ./taosadapter &
操作截图:
3.6 卸载及升级
升级请遵循前述安装和卸载的步骤先卸载旧版本再安装新版本。
卸载命令:rmtaos
操作截图:
3.6.1 升级具体操作
- 备份数据库,防止升级过程中,数据丢失
首先进入产品目录的bin目录下,命令:cd /usr/local/taos/bin
找到备份工具taosdump,执行命令:./taosdump -o /备份数据的存放目录 -A
-A表示备份所有数据库,
操作截图:
关闭TDengine,直接杀死进程即可
切换root用户,执行rmtaos命令卸载tdengine
卸载后,产品目录/usr/local/taos会整个删除,这个不用管;配置目录/etc/taos仍在,不用删,改个名字,后面参照它配置新版本的配置文件;数据目录仍存在,不用删,试试新版本能不能直接使用它,如果不能,再删掉重建
从上文3.3开始,重新安装新版本的TDengine,但安装完成后,不要直接启动,直接参考 3.5,改为非root用户启动,这期间,TDengine的data目录直接指向旧版的data目录
最终非root用户启动后,登录数据库,发现旧版的数据库依旧可用,因此不需要再手动恢复数据。
3.6.2 遇到的问题
- XCloud154节点不可用
查看日志提示: ” WARN NOT ordered input timestamp“,检查各节点时间,发现时间不同步。同步时间后,重新启动即可。
重新启动后,节点起来了,但是没加入到集群。
登录其余节点,执行show dnodes命令,发现154节点不在集群之中。
执行create dnode "XCloud154"命令,将154加入集群。再执行show dnodes,发现有154节点了,但连接失败。这是因为”/home/hadoop/data/taos/dnode“目录下的dnodeCfg.json文件中的集群id是旧的,而154重新加入集群,会分配一个新的id,新旧id不匹配,就无法真正加入集群。
解决办法是,关掉154上的taos进程,删掉旧的dnodeCfg.json文件,然后重新启动taos。
4、安装Telegraf
4.1 安装流程
- 下载安装包
命令:wget https://dl.influxdata.com/telegraf/releases/telegraf-1.20.4-1.x86_64.rpm
- 执行安装
切换root用户,安装命令:yum localinstall telegraf-1.20.4-1.x86_64.rpm
- 修改配置
在/etc/telegraf目录下,修改telegraf.conf配置文件。
注意:telegraf.conf 配置是安装 telegraf 的重点。在这个配置中,我们将具体指定需要采集的服务器监控指标。
配置示例:
[global_tags] [agent] interval = "10s" round_interval = true metric_batch_size = 30 metric_buffer_limit = 10000 collection_jitter = "0s" flush_interval = "10s" flush_jitter = "0s" precision = "ms" debug = true # 当前主机的主机名,与下文url中的数据库地址不一定是同一个主机 hostname = "XCloud150" omit_hostname = false [[outputs.http]] # url = "http://XCloud150:6041/influxdb/v1/write?db=udb" 这种配置,指定了单独的节点,如果该节点死机,连接将不可用 # 高可用性配置,首先在hosts文件中为tdengine集群配置域名,通过域名连接,即可自动选择局域网中的可用节点,如 : # 192.168.0.184 test # 192.168.0.185 test # 192.168.0.186 test # url = "http://test:6041/influxdb/v1/write?db=udb" url = "http://域名:6041/influxdb/v1/write?db=udb" data_format = "influx" influx_max_line_bytes = 1024 method = "POST" timeout = "5s" username = "root" password = "taosdata" # 输出到tdengine的同时,输出到本地文件 [[outputs.file]] files = ["stdout", "/xcloud/telegraf.out"] data_format = "influx" #以下是默认的采集对象,可按需配置,不需要采集的,注释掉即可 [[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_active = false [[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "iso9660", "overlay", "aufs", "squashfs"] # 忽略,不采集的分区类型 interval = "2h" # 采集间隔,覆盖agent里的全局间隔,即在同一个采集进程,使用不同的采集间隔 [[inputs.diskio]] [[inputs.kernel]] [[inputs.mem]] [[inputs.processes]] [[inputs.swap]] [[inputs.system]] [[inputs.net]] interfaces = ["enp0s3"] # 网卡接口 ignore_protocol_stats = true # 是否忽略协议指标 |
- 启动telegraf
命令:systemctl start telegraf.service
以后台方式启动:nohup telegraf --config telegraf.conf > /dev/null 2>&1 &
调试启动:如果启动报错,可按提示以 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d 命令启动,可输出详细的错误信息。
4.2 踩过的坑
容易忽视细节,容易混淆的参数项等。
- 在telegraf配置中,默认启用 [[outputs.influxdb]] ,而我们要启用的是 [[outpts.http]] ,所以配置时,要先将 [[outputs.influxdb]] 注释掉;
- 在telegraf配置中,[[outpts.http]] 默认是被注释掉的,启用时,不要忘了去掉 [[outpts.http]] 前的注释符 “#”;
- url 中的tdengine端口号,是指http模块的端口号,默认6041,不是/etc/taos/taos.cfg中firstEP 的端口号,一定不要弄错;
- 用户密码是tdengine的用户密码,默认root/taosdata,可通过taos -u root -p 登录tdengine数据库来验证;
- url中的udb是tdengine的数据库,理论上会自动创建,但没测试过,建议提前建好,命令:create databas udb;
4.3 问题记录
- 采集的数据在tdengine中显示null
解决方法:将 ”influx_max_line_bytes = 250“的值改为1024,
- disk监控,/home/hadoop/data没有采集数据
解决方法:在[[inputs.disk]]配置里,去掉 ignore_fs参数的“devfs”值。
- 原数据库删除后,重新创建同名数据库,无法连接
解决方案:重启taosadapter,命令 systemctl restart taosadapter
- disk监控,/home/hadoop/data没有采集数据,后续
在inputs.disk 配置中,添加采集的时间间隔配置(覆盖agent中的采集间隔),添加后,以“systemctl start telegraf.service”命令启动,启动后发现,/home/hadoop/data挂载的分区没有采集数据。
解决方案:测试发现,以“systemctl start telegraf.service”命令启动,不会采集/home/hadoop/data挂载的分区,而以调试命令启动,则正常采集,因此改为后台命令启动,命令如“nohup telegraf --config telegraf.conf > /dev/null 2>&1 &”。底层原因不明。为避免开机自动以“systemctl start telegraf.service”命令启动,关闭自启动“systemctl disable telegraf.service”,开启自启动“systemctl enable telegraf.service”。