Influxdb的安装配置启动python
influxdb简介mysql
一、influxdb使用GO语言开发,是一种时序序列数据库linux
二、influxdb的查询语句相似于mysql的select * from mysql.usersql
三、schemaless(无模式),结构型数据库相似mysql须要先定义列,influxdb无需预先定义,无结构的shell
四、数据库 -->measurement(相似于表)-->points(数据,每一条数据就是一个point)数据库
五、它有三大特性:
1. Time Series (时间序列):你能够使用与时间有关的相关函数(如最大,最小,求和等);
2. Metrics(度量):你能够实时对大量数据进行计算;
3. Eevents(事件):它支持任意的事件数据。json
influxdb的points数听说明c#
一、time,默认存储数据会有时间,时间无需关心,会帮助咱们自动插入centos
二、tags:用来存储数据标识,各类有索引的属性安全
三、fields:用于存储数据,没有索引
influxdb的下载和安装
centos下载链接:https://dl.influxdata.com/influxdb/releases/influxdb-1.6.0.x86_64.rpm
Ubantu下载链接:https://dl.influxdata.com/influxdb/releases/influxdb_1.6.0_amd64.deb
经过wget命令下载:wget 下载链接
centos安装:yum localinstall influxdb-1.6.0.x86_64.rpm
Ubantu安装:dpkg -i influxdb_1.6.0_amd64.deb
安装完成后默认会有一个influxdb用户
root@xdl-gj:/etc# cat /etc/passwd | grep influxdb
influxdb:x:999:999::/var/lib/influxdb:/bin/false
influxdb的配置:/etc/influxdb/influxdb.conf
[meta]
dir = "/usr/local/influxdb/meta"
[data]
dir = "/usr/local/influxdb/data"
wal-dir = "/usr/local/influxdb/wal"
[coordinator]
[retention]
[shard-precreation]
[monitor]
[http]
enable = true
bind-address = "127.0.0.1:8086"
[ifql]
[logging]
[subscriber]
[[graphite]]
[[collectd]]
[[opentsdb]]
[[udp]]
[continuous_queries]
配置说明:
data:存放最终存储的数据,文件以.tsm结尾
meta:存放数据库元数据
wal:存放预写日志文件
建立目录更新权限
mkdir -pv /usr/local/influxdb,说明:-p表示递归建立目录,-v表示建立新目录显示信息
root@xdl-gj:/etc/influxdb# mkdir -pv /usr/local/influxdb
mkdir: 已建立目录 '/usr/local/influxdb'
chown -R influxdb:influxdb /usr/local/influxdb/
influxdb的启动和开机自启动
systemctl restart influxdb
systemctl enable influxdb
systemctl status influxdb #查看状态
systemctl stop influxdb #中止influxdb服务
观察进程和监听端口
ps auxf
root@xdl-gj:/etc/influxdb# ps auxf | grep influxdb
influxdb 24525 0.1 0.5 738072 20792 ? Ssl 22:51 0:00 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
netstat -tulnp
root@xdl-gj:/etc/influxdb# netstat -tulnp | grep influxd
tcp 0 0 127.0.0.1:8086 0.0.0.0:* LISTEN 24525/influxd
tcp 0 0 127.0.0.1:8088 0.0.0.0:* LISTEN 24525/influxd
influxdb开启登陆认证
操做influxdb数据库准备开启认证
influxdb --help :查询influx客户端的使用帮助
influx :默认链接到localhost:8086
show users:查看全部用户,默认没有
create user "xudonglin" with password '123456' with all privileges:建立xudonglin用户,密码为123456 并具备管理员权限
influxdb增长auth配置以下,并重启influxd(systemctl restart influxd)
只须要在influxdb.conf配置文件中[http]下面添加:auth-enabled = true
使用用户名密码登陆:
一、influx -username xudonglin -password 123456:能够直接登陆
二、influx -username xudonglin -password '' :执行这个命令以后再输入密码
三、influx 先进行链接,以后输入auth命令,进行用户登陆
root@xdl-gj:~# influx
Connected to http://localhost:8086 version 1.6.0
InfluxDB shell version: 1.6.0
> auth
username: xudonglin
password:
安全性强度
本地 > 内网 > 公网
influxdb数据库的简单操做
数据库(database)操做
show databases :查询全部的数据库
create database xudonglin :建立数据库
drop database xudonglin :删除数据库
数据表(measurement)操做
use xudonglin:操做xudongln数据库
show measurements :查询当前数据库下全部的数据表
insert cpuinfo,item=xudonglin_192.168.0.105_cpu.idle value=80 1564217916148774054 :无需建立measurement,可直接插入数据
插入数据的格式:insert 数据表,tags fileds time
说明:time不写会默认插入当前的时间,中间不要出现多余的空格
select * from cpuinfo :查询全部cpuinfo的数据
drop measurement cpuinfo :删除数据表
influxdb经常使用查询操做
select * from cpuinfo
select * from cpuinfo limit 2 :若是数据量太大,使用limit,限制输出的行数
delete from cpuinfo where time=1564217916148674054:删除一条数据,可是influxdb通常不会手动删除数据,主要根据策略自动删除
influxdb数据保留事件设置
show retention policies on xudonglin :查看xudongln数据库表中数据保存的事件,duration为0s时表示永久有效
create retention policy rp_xudonglin on xudonglin duration 30d replication 1 default
说明:建立一个名字为rp_xudonglin的保存策略,保存时间为30天
若是表中有多个策略,能够经过select * from 策略名.表名,这张表这个策略下的数据
alter retention policy rp_xudonglin on xudonglin duration 2d replication 1 defalut:修改策略
drop retention policy re_xudonglin on xudonglin:删除策略,删除后这个策略的数据也将被删除,因此通常不要删除
influxdb使用易看的事件格式
一、使用precision rfc339
二、链接时指定:influx -host 192.168.0.105 -username xudonglin -password '123456' -precision rfc3339
influxdb自带函数查询
influxdb提供了一些内置函数,这些函数方便grafana拉取数据
查询非空的数量
select count(value) from cpuinfo
查询惟一值
select distinct(value) from cpuinfo
查询平均值
select mean(value) from cpuinfo
查询总和
select sum(value) from cpuinfo
查询最大的N个值
select bottom(value,0) from cpuinfo
查询最小的N个值
select bottom(value,1) from cpuinfo
Grafana的安装和influxdb数据源配置
grafana介绍
grafana是一个可视化面板,有着很是漂亮的图表,布局方便
数据源能够使用zabbix、influxdb等
grafana的下载和安装
Ubantu:
wget https://dl.grafana.com/oss/release/grafana_6.2.5_amd64.deb
dpkg -i grafana_6.2.5_amd64.deb
centos:
wget https://dl.grafana.com/oss/release/grafana-6.2.5-1.x86_64.rpm
yum localinstall grafana-6.2.5-1.x86_64.rpm
grafana的启动和开机自启动
systemctl restart granfana-server
systemctl enable grafanna-server
systemctl status grafana-server
访问grafana测试
http://ip:3000
grafana配置influxdb数据源
grafana的默认用户名密码都是admin,第一次登陆会要求更改密码
配置influxdb的数据源(Data Source),用户名和密码
Grafana+infludb绘图基础
Grafana配置图形展示
流程:先建立dashboard,而后才能建立图像
建立dashboard
修改dashboard
删除dashboard
建立Graph Panel(值为整形、浮点型的能够建立图形)
手动插入数据观察
先开启Grafana自动刷新
插入数据
图形设置
设置图形标题
配置透明度
显示当前值、最大、最小、平均值
左y轴的单位能够指定
把每一个值的point都显示出来
布局能够随意拖拉
能够复制图形的配置
能够把值表格展示(表格能够排序)
influxdb+grafana监控cpu
监控思路
一、采集数据(使用python脚本进行采集)
二、入库(python脚本采集完插入influxdb数据库)
三、展现(Grafana读取influxd数据进行展现)
首先了解一下/proc/loadavg文件
系统平均负载个字段的含义
xdl@xdl-gj:~/python$ cat /proc/loadavg
0.17 0.16 0.10 2/957 19900
前三个分别表示一、 五、 15分钟内的平均进程数
第四个分子表示正在运行的进程数,分母表示进程总数
最后一个表示最近运行的进程ID
from influxdb import InfluxDBClient import os # 链接influxdb数据(host, port, username, password, database) client = InfluxDBClient("192.168.0.105", 8086, 'xudonglin', '123456', 'xudonglin') # 获取一、 五、 15 分钟内的平均进程数 loadavg1 = os.popen("cat /proc/loadavg | awk '{print $1}'").read() loadavg5 = os.popen("cat /proc/loadavg | awk '{print $2}'").read() loadavg15 = os.popen("cat /proc/loadavg | awk '{print $3}'").read() data_json = [ {'measurement': 'loadavg', 'tags': { 'item': 'xudonglin_192.168.0.105_loadavg1' } , 'fields': { 'value': float(loadavg1) }, }, {'measurement': 'loadavg', 'tags': { 'item': 'xudonglin_192.168.0.105_loadavg5' } , 'fields': { 'value': float(loadavg5) }, }, {'measurement': 'loadavg', 'tags': { 'item': 'xudonglin_192.168.0.105_loadavg15' } , 'fields': { 'value': float(loadavg15) }, }, ] client.write_points(data_json)
将脚本添加到linux的crontab任务,而后图表展现(/etc/crontab)
* * * * * xdl python3 /data/loadavg.py >/dev/null 2>/dev/null
python监控cpu时间并存入influxdb
from influxdb import InfluxDBClient import psutil # 链接influxdb数据(host, port, username, password, database) client = InfluxDBClient("192.168.0.105", 8086, 'xudonglin', '123456', 'xudonglin') cpu_times_percent = psutil.cpu_times_percent(interval=1) user = cpu_times_percent.user system = cpu_times_percent.system iowait = cpu_times_percent.iowait idle = cpu_times_percent.idle data_json = [ {'measurement': 'cpu_times_percent', 'tags': { 'item': 'xudonglin_192.168.0.105_user' } , 'fields': { 'value': user }, }, {'measurement': 'cpu_times_percent', 'tags': { 'item': 'xudonglin_192.168.0.105_system' } , 'fields': { 'value': system }, }, {'measurement': 'cpu_times_percent', 'tags': { 'item': 'xudonglin_192.168.0.105_iowait' } , 'fields': { 'value': iowait }, }, {'measurement': 'cpu_times_percent', 'tags': { 'item': 'xudonglin_192.168.0.105_idle' } , 'fields': { 'value': idle }, }, ] client.write_points(data_json)
添加到linux的crontab任务,而后图表展现观察
* * * * * xdl python3 /data/cpu_times_percent.py >/dev/null 2>/dev/null
influxdb+Granfana监控内存磁盘流量
python监控内存并入influxdb
from influxdb import InfluxDBClient import psutil # 链接influxdb数据(host, port, username, password, database) client = InfluxDBClient("192.168.0.105", 8086, 'xudonglin', '123456', 'xudonglin') virtual_memory = psutil.virtual_memory() total = virtual_memory.total available = virtual_memory.available used = virtual_memory.used data_json = [ {'measurement': 'memory', 'tags': { 'item': 'total' } , 'fields': { 'value': total }, }, {'measurement': 'memory', 'tags': { 'item': 'available' } , 'fields': { 'value': available }, }, {'measurement': 'memory', 'tags': { 'item': 'used' } , 'fields': { 'value': used }, }, ] client.write_points(data_json)
添加到linux的crontab任务,而后图标展现观察
* * * * * xdl python3 /data/memory.py >/dev/null 2>/dev/null
内存的换算通常是用的1024的比例,Grafana上有两个单位
一、data(iec)这个是按照1024的比例换算的
二、data(metric)这个是按照1000比来换算的
python监控磁盘并存入infludb
from influxdb import InfluxDBClient import psutil # 链接influxdb数据(host, port, username, password, database) client = InfluxDBClient("192.168.0.105", 8086, 'xudonglin', '123456', 'xudonglin') # 获取全部磁盘 for one_disk in psutil.disk_partitions(): mountpoint = one_disk.mountpoint diskused = psutil.disk_usage(mountpoint).percent data_list = [ {'measurement': 'disk', 'tags': { 'item': 'diskused.%s' % mountpoint }, 'fields': { 'value': float(diskused) } } ] client.write_points(data_list)
添加到linux的crontab任务,而后图标展现观察
* 1 * * * xdl python3 /data/disk.py >/dev/null 2>/dev/null #每小时采集一次
python监控流量并存入influxdb
from influxdb import InfluxDBClient import psutil # 链接influxdb数据(host, port, username, password, database) client = InfluxDBClient("192.168.0.105", 8086, 'xudonglin', '123456', 'xudonglin') # 监控每一个网卡的发送流量和接收流量 for netname, netinfo in psutil.net_io_counters(pernic=True).items(): bytes_sent = netinfo.bytes_sent bytes_recv = netinfo.bytes_recv data_list = [ {'measurement': 'traffic', 'tags': { 'item': 'bytes_sent.%s' % netname }, 'fields': { 'value': bytes_sent } }, {'measurement': 'traffic', 'tags': { 'item': 'bytes_recv.%s' % netname }, 'fields': { 'value': bytes_recv } } ] client.write_points(data_list)
添加定时任务
* * * * * xdl python3 /data/traffic.py >/dev/null 2>/dev/null
流量单位说明(每秒的流量,无负数)
non_negative_derivative(mean('value'), 1s)
经过psutil收集到的是bytes,流量单位通常是bit,因此须要乘以8
说明:
influxdb+grafana的组合监控硬件并非好选择,若是熟悉Zabbix的话,推荐Zabbix来监控硬件
influxdb+grafana的组合来监控业务数据是很是好用的