一、influxDB安装
1、安装教程,参考 https://docs.influxdata.com/influxdb/v2.1/install/?t=Linux
# Ubuntu/Debian
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.1.1-xxx.deb sudo dpkg -i influxdb2-2.1.1-xxx.deb
# Red Hat/CentOS/Fedora
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.1.1-xxx.rpm sudo yum localinstall influxdb2-2.1.1-xxx.rpm
# sudo service influxdb start
# sudo service influxdb status
至此,安装完influxd,配置如下:
默认8086端口,进入influxdb界面。
# amd64
wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.2.0-linux-amd64.tar.gz
# arm
wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.2.0-linux-arm64.tar.gz
# amd64
tar xvzf path/to/influxdb2-client-2.2.0-linux-amd64.tar.gz
# arm
tar xvzf path/to/influxdb2-client-2.2.0-linux-arm64.tar.gz
# amd64
sudo cp influxdb2-client-2.2.0-linux-amd64/influx /usr/local/bin/
# arm
sudo cp influxdb2-client-2.2.0-linux-arm64/influx /usr/local/bin/
至此,安装完influxdb cli,配置如下:
influx config create --config-name <config-name> \
--host-url http://localhost:8086 \
--org <your-org> \
--token <your-auth-token> \
--active
可见,配置信息写到如下文件中:
二、telegraf安装(最好参考:https://github.com/qingshanyinyin/telegraf)
# Ubuntu and Debian
wget -qO- https://repos.influxdata.com/influxdb.key | sudo tee /etc/apt/trusted.gpg.d/influxdb.asc >/dev/null
source /etc/os-release
echo "deb https://repos.influxdata.com/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install telegraf
# RHEL, CentOS
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo[influxdb]name = InfluxDB Repository - RHEL $releaseverbaseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stableenabled = 1gpgcheck = 1gpgkey = https://repos.influxdata.com/influxdb.keyEOF
sudo yum install telegraf
安装后,启动
# Generate a telegraf config file
telegraf --help
telegraf config > telegraf.conf
# Generate config with only cpu input & influxdb output plugins defined
telegraf --section-filter agent:inputs:outputs --input-filter cpu --output-filter influxdb config
# Run a single telegraf collection, outputting metrics to stdout
telegraf --config telegraf.conf --test
# Run telegraf with all plugins defined in config file
telegraf --config telegraf.conf
# Run telegraf, enabling the cpu & memory input, and influxdb output plugins
telegraf --config telegraf.conf --input-filter cpu:mem --output-filter influxdb
我们看下,服务配置路径:
由于2.1版本太新,官方文档有不少bug,回退到1.8版本。
参考:https://docs.influxdata.com/influxdb/v1.8/introduction/install/
参考:https://github.com/qingshanyinyin/telegraf/tree/v1.18.0
三、influxdb使用
# influxdb基本概念
database:数据库;
measurement:数据库中的表;
points:表里面的一行数据,Point由时间戳(time)、数据(field)和标签(tags)组成;
time:每条数据记录的时间,也是数据库自动生成的主索引;
fields:各种记录的值;
tags:各种有索引的属性;
series:所有在数据库中的数据,都需要通过图表来表示,series表示这个表里面的所有的数据可以在图标上画成几条线。
# influxdb基本操作
#创建数据库 create database testDB
#显示所有的数据库 show databases
#删除数据库 drop database testDB
#使用数据库 use testDB
#显示该数据库中所有的表 show measurements
#创建表,直接在插入数据的时候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1
#删除表 drop measurement "measurement_name"
# 增
insert test,host=127.0.0.1,monitor_name=test count=1 # 命令行
curl -i -XPOST 'http://127.0.0.1:8086/write?db=testDB' --data-binary 'test,host=127.0.0.1,monitor_name=test count=1' #api
读者看到这里可能会观察到插入的数据的格式貌似比较奇怪,这是因为influxDB存储数据采用的是 Line Protocol 格式。那么何谓Line Protoco格式?
Line Protocol格式:写入数据库的Point的固定格式,其中:
test:表名;
host=127.0.0.1,monitor_name=test:tag;
count=1:field
# 查
select * from test order by time desc #命令行
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDB" --data-urlencode "q=select * from test order by time desc" #api
# 数据保存策略
influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。
# 查看当前数据库 Retention Policies:
show retention policies on "db_name"
# 创建新的 Retention Policies
create retention policy "rp_name" on "db_name" duration 3w replication 1 default
rp_name:策略名;
db_name:具体的数据库名;
3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);
replication 1:副本个数,一般为1就可以了;
default:设置为默认策略
# 修改Retention Policies
alter retention policy "rp_name" on "db_name" duration 30d default
# 删除Retention Policies
drop retention policy "rp_name"
# 连续查询
当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
influxdb 提供了连续查询,可以做数据统计采样。
# 查看数据库的 Continous Queries
show continuous queries
# 创建新的 Continous Queries
create continuous query cq_name on testDB begin select sum(count) into test_new from test group by time(1m) end
cq_name:连续查询名字;
testDB:数据库名字;
sum(count):计算总和;
test:当前表名;
test_new:存新的数据的表名;
1m:时间间隔为1分钟
# 删除 Continous Queries
drop continous query cp_name on db_name
# 用户管理
#显示用户 show users
#创建用户 create user "username" with password 'password' #create user lmc with password '123456'
#创建管理员权限用户 create user "username" with password 'password' with all privileges
#删除用户 drop user "username"
我们在配置文件开启 http 认证后,需要密码登录
vim /etc/influxdb/influxdb.conf
# --查看所有的数据库show databases
-- 使用特定的数据库use database_name
-- 查看所有的measurementshow measurements
-- 查询10条数据select * from measurement_name limit 10
-- 数据中的时间字段默认显示的是一个纳秒时间戳,改成可读格式 precision rfc3339,之后再查询,时间就是rfc3339标准格式
-- 或可以在连接数据库的时候,直接带该参数influx -precision rfc3339
-- 查看一个measurement中所有的 tag key,show tag keys
-- 查看一个measurement中所有的 field key,show field keys
-- 查看一个measurement中所有的保存策略(可以有多个,一个标识为default),show retention policies;
四、influxdb、telegraf 连接
按照二中安装配置telegraf,由于我们的influxDB开启了登录认证,这里必须配置用户名和密码。
可用以下命令测试:
# /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
当我们不配置用户、密码或者用户密码错误时,会报认证错误(401)。
至此,我们完成了telegraf与influxDB的连接。
上面数据5秒刷新一次。