grafana+influxdb+python实现监控cpu、内存

grafana和influxdb下载rpm然后yum install *.rpm
influxdb有个web管理界面,不会操作的可以通过这个界面管理数据库,这个web的端口是8083
influxdb:
create database grafana
CREATE USER “grafana” WITH PASSWORD ‘grafana’
grafana:
数据源这部分的配置成功就可以产生图像
数据库地址:http://ip:8086(这个是influxdb的后端端口)
点击panel Title有个Edit可以为这个Panel Title配置一个数据源
数据源可以配置tags和fields,field配置出来显示的就是图形(注意:有些数据要选择合适selectors,不然不显示)
alias是上面线条的名字
python:
安装psutil和influxdb的模块
yum install python-pip -y
yum install gcc python-devel zlib-devel openssl-devel -y#这些安装完了pip install不会报错
pip install psutil
pip install influxdb
python获取信息的脚本

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import thread
import time
import socket
import psutil
from influxdb import InfluxDBClient

client=InfluxDBClient('localhost',8086,'root',',','grafana')
#获取本机IP
def get_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        # doesn't even have to be reachable
        s.connect(('10.255.255.255', 0))
        IP = s.getsockname()[0]
    except:
        IP = '127.0.0.1'
    finally:
        s.close()
    return IP
ip = get_ip()
#获取cpu信息
def get_cpu(sec):
    while True:
        time.sleep(sec)
        info=psutil.cpu_percent(0)
        text=[
            {
                "measurement":"cpu_info",
                "tags":{
                           "host":ip
                },
                "fields":{
                            "percent":info
                }
            }
        ]

        client.write_points(text)
def get_memory(sec):
    while True:
        time.sleep(sec)
        info=psutil.virtual_memory()
        text=[
            {
                "measurement":"memory_info",
                    "tags":{
                           "host":ip
                },
                "fields":{
                            "mem_percent":info.percent,
                            "mem_used":info.used,
                            "mem_free":info.free,
                }
            }
        ]
        client.write_points(text)

def get_disk(sec):
    while True:
        time.sleep(sec)
        info=psutil.disk_usage('/')
        text=[
            {
                "measurement":"disk_info",
                "tags":{
                           "host":ip
                },
                "fields":{
                            "disk_used":info.used,
                            "disk_free":info.free,
                            "disk_percent":info.percent,
                }
            }
        ]
        client.write_points(text)


def get_network(sec):
    while True:
        time.sleep(sec)
        info = psutil.net_io_counters(pernic=True)['ens192']
        text=[
            {
                "measurement":"network_info",
                "tags":{
                           "host":ip
                },
                "fields":{
                            "bytes_sent":info.bytes_sent,
                            "bytes_recv":info.bytes_recv,
                }
             }
        ]
        client.write_points(text)
   try:
    thread.start_new_thread( get_cpu,(1,))
except:
    print "ERROR:cpu unable to start thread"
try:
    thread.start_new_thread( get_memory, (1,))
except:
    print "ERROR:mem_ory unable to start thread"
try:
    thread.start_new_thread( get_disk, (1,))
except:
    print "ERROR:disk unable to start thread"
try:
    thread.start_new_thread( get_network,(1,))
except:
    print "ERROR:net unable to start thread"
while 1:
    pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值