Giter Club home page Giter Club logo

blink's Introduction

简介

通常,服务器监控系统分为客户端服务器端两部分,客户端负责对服务器的各种指标进行数据采样并发送给服务器端服务器端接收客户端发送来的数据,存入数据库等用于展示分析。

但如果你只有一台服务器,或者对于创业公司来说,不想在监控系统上花太多精力和money,那么常见的监控系统就不太适用,可能blink正是你所需要的。

监控系统按照不同的层面和方面分为很多种:进程监控/管理、服务器性能指标(如CPU、内存等)监控/告警、服务器可用性监控、业务数据监控等

blink解决的是服务器性能指标(如CPU、内存等)监控/告警

原理

对于CPU、内存,blink会定期(固定时间间隔interval)采样使用率数据,存入sqlite数据库中。每次得到采样数据后,会判断是否有连续N次使用率 超过了设定的阈值,如果是,则会发送告警邮件。

对于磁盘,blink会有一个进程定期检测各个挂载点/分区的使用率,如果某些挂载点的使用率超过了阈值,则会发送告警邮件。

另一个进程会定期从sqlite数据库中查询到CPU、内存使用率数据,如果配置的邮件类型email_typebasic,则对CPU、内存分别 取最大的n个数据点(包含采样时的时间),发送概要邮件;

如果邮件类型为advanced,则将CPU、内存使用率分别根据时间绘制成图,并发送概要邮件。

概要邮件中除了CPU、内存使用率的信息,还包含服务器的基本信息,如开机时间(通过开机时间可以判断服务器是否曾经自动重启过);此外还包含磁盘的使用率数据。


CPU、内存使用率数据绘图过程是先通过vincent将图形的数据存入一个json文件中,然后使用vega提供的工具vg2png生成png图片。

配置说明

config = {
    # 概要邮件内容类型,basic代表邮件内容中CPU、内存使用率的信息只包含最大的n个数据点,advanced则表示将使用率数据绘制成图,然后通过邮件发送图片
    'email_type': 'basic',  # or advanced
    # 当前服务器的外网ip,概要邮件中用到
    'host_ip': '',
    # cpu指标监控相关配置
    'cpu': {
        # 采样间隔
        'interval': 1,
        # CPU使用率的最大阈值
        'threshold': 90,
    },
    # cpu指标监控相关配置
    'mem': {
        'interval': 1,
        'threshold': 90,
    },
    # cpu指标监控相关配置
    'disk': {
        # 由于磁盘的使用率变化很慢,所以interval可以设置成大些
        'interval': 10,
        'threshold': 90,
    },
    # 概要邮件进程相关的配置信息
    'email': {
        # 发送概要邮件的时间间隔,通常为12小时一次、24小时一次等
        'interval': 300,
        # 邮件服务器的相关信息
        'server': {
            'host': '',
            'port': 465,
            'username': '',
            'password': '',
        },
        # 邮件发送者
        'from': '',
        # 邮件接收者,注意可以有多个
        'to': [''],
    }
}

依赖

可选依赖:

依赖安装
  • pip install psutil jinja2

如果配置文件中email_type一项设置为“advanced”,即表示选择图表形式的邮件内容,则需要额外安装

  • pip install pandas vincent
  • 安装nodejs、npm
  • 如果是Debian系的Linux发行版,执行sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++,其他操作系统需要的操作见这里
  • 在blink根目录下执行git clone https://github.com/trifacta/vega.git
  • cd vega && npm install

blink's People

Contributors

dependabot[bot] avatar kitelife avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.