Influxdb

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的组合来监控业务数据是很是好用的

相关文章
相关标签/搜索