1.python监控内存并入influxdb(/data/influxdb/virtual_memory.py)
把下面的代码添加到/data/influxdb/virtual_memory.py文件中。
from influxdb import InfluxDBClient
import psutil
virtual_memory = psutil.virtual_memory()
client = InfluxDBClient('127.0.0.1', 8086, 'tuoyuxin', '123456', 'tuoyuxin')
data_list = [{'measurement': 'memory', 'tags': {'item': 'total'}, 'fields': {'value': float(virtual_memory.total)}}]
client.write_points(data_list)
data_list = [{'measurement': 'memory', 'tags': {'item': 'available'}, 'fields': {'value': float(virtual_memory.available)}}]
client.write_points(data_list)
data_list = [{'measurement': 'memory', 'tags': {'item': 'used'}, 'fields': {'value': float(virtual_memory.used)}}]
client.write_points(data_list)
具体操作如下:
然后修改/etc/crontab文件,数据一分钟写入一次。
添加到linux的crontab任务,然后图表展示观察:
添加* * * * * root python /data/influxdb/virtual_memory.py >/dev/null 2>/dev/null
新建一个dashboard,命名为“内存监控”,放在tuoyuxin文件夹中。
数据源选择memory,
内存的换算一般都是用的1024的比例,Grafana上两个单位
data(iec) 这个是按照1024比例来算的
data(metric) 这个是按照1000比例来算的
2.python监控磁盘并入influxdb(/data/influxdb/disk.py) / /data /boot
from influxdb import InfluxDBClient
import psutil
client = InfluxDBClient('127.0.0.1', 8086, 'tuoyuxin', '123456', 'tuoyuxin')
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任务,然后图表展示观察
向/etc/crontab中添加* * * * * root python /data/influxdb/disk.py >/dev/null 2>/dev/null
3.python监控流量并入influxdb(/data/influxdb/traffic.py)
from influxdb import InfluxDBClient
import psutil
client = InfluxDBClient('127.0.0.1', 8086, 'tuoyuxin', '123456', 'tuoyuxin')
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}}]
client.write_points(data_list)
data_list = [{'measurement': 'traffic', 'tags': {'item': 'bytes_recv.%s' % netname}, 'fields': {'value': bytes_recv}}]
client.write_points(data_list)
添加到linux的crontab任务,然后图表展示观察
向/etc/crontab中添加* * * * * root python /data/influxdb/traffic.py >/dev/null 2>/dev/null
流量单位说明(每秒的流量,无负数)
non_negative_derivative(mean(“value”), 1s)
通过psutil收集到的是bytes,流量单位一般bit,所以说还乘以8
说明
influxdb+grafana的组合监控硬件并不是好选择,如果熟悉Zabbix的话,推荐Zabbix来监控硬件。
influxdb+grafana的组合用来监控业务数据是非常好用的。