成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

運維高手十分鐘寫了一個內存監控系統

系統 系統運維
本文的目的在于盡可能用簡單的代碼,讓大家了解內存監控的原理及思想,更容易去理解Nagios、Zabbix、Ganglia監控原理。文章按照具體實現的脈絡進行呈現,最后還有視頻教程哦!從零敲出來的全過程。

   本文的目的在于,盡可能用簡單的代碼,讓大家了解內存監控的原理及思想,更容易去理解Nagios、Zabbix、Ganglia監控原理。文章***還有視頻教程哦!從零敲出來的全過程。

  思路分為下面幾塊:

  1.獲取內存監控信息

  2.存儲監控信息

  3.數據展現

  4.后續擴展

    a.加主機名,monitor部署在多臺機器,不直接插入數據庫

    b.增加CPU,Disk監控

    c.通過HTTP請求的方式,啟用一個單獨的Flask專門存儲monitor數據

  思路圖:  

 

  ***步:獲取內存信息

  我們通過讀取 /proc/meminfo獲取監控數據MemTotal、MemFree、Buffers、Cached,咱們常用free -m 其實也是讀取的/pro/meminfo的數據,順便說一下。

  對于操作系統來說,Buffers、Cached是已經被使用的。

  MemFree=total-used

  對于應用程序來說:

  MemFree=buffers+cached+free

  監控物理內存使用:

  內存使用=MemTotal-MemFree-Buffers-Cached

  開擼:monitor.py獲取監控數據。

  1. def getMem(): 
  2. with open('/proc/meminfo'as f: 
  3. total = int(f.readline().split()[1]) 
  4. free = int(f.readline().split()[1]) 
  5. buffers = int(f.readline().split()[1]) 
  6. cache = int(f.readline().split()[1]) 
  7. mem_use = total-free-buffers-cache 
  8. print mem_use/1024 
  9. while True
  10. time.sleep(1) 
  11. getMem() 

  測試:每秒打印一條數據。

  1. [www.51reboot.com@teach memory]$ python mointor.py 2920 
  2.  2919 
  3.  2919 
  4.  2919 
  5.  2919 

  希望內存多變好一些,寫了一個很挫的測試代碼。

  1. # test.py 
  2. s = 'www.51reboot.com'*1000000 
  3. for i in s: 
  4. for j in s: 
  5. s.count(j) 

  執行python test.py,會發現內存占用多了幾M,說明咱們的代碼是OK的。

  第二步:存儲監控信息(我們用MySQL)

  我們需要兩個字段,內存和時間 sql呼之欲出,簡單粗暴!

  1. create database memory; 
  2. create memory(memory int,time int

  接下來,我們把monitor.py的數據存儲到數據庫中,這用到了Python MySQLdb模塊。

  1. import time 
  2. import MySQLdb as mysql 
  3. db = mysql.connect(user="reboot",passwd="reboot123",db="memory",host="localhost"
  4. db.autocommit(True
  5. cur = db.cursor() 
  6. def getMem(): 
  7. with open('/proc/meminfo'as f: 
  8. total = int(f.readline().split()[1]) 
  9. free = int(f.readline().split()[1]) 
  10. buffers = int(f.readline().split()[1]) 
  11. cache = int(f.readline().split()[1]) 
  12. mem_use = total-free-buffers-cache 
  13. t = int(time.time()) 
  14. sql = 'insert into memory (memory,time) value (%s,%s)'%(mem_use/1024,t) 
  15. cur.execute(sql) 
  16. print mem_use/1024 
  17. while True
  18. time.sleep(1) 
  19. getMem() 

  暫時告一段落。

  第三步:數據展現(Flask框架)

  代碼結構:

  ├── flask_web.py web后端代碼

  ├── mointor.py 監控數據獲取

  ├── static 靜態文件,第三方圖表庫

    │ ├── exporting.js

    │ ├── highstock.js

    │ └── jquery.js

  ├── templates

    │ └── index.html 展示前端頁面

  └── test.py 占用內存的測試代碼

  flask_web.py的代碼如下:

  提供兩個路由。

      ◆根目錄渲染文件index.html。

           ◆/data路由去數據庫查數據,返回json,供畫圖使用。

  1. from flask import Flask,render_template,request 
  2. import MySQLdb as mysql 
  3. con = mysql.connect(user='reboot',passwd='reboot123',host='localhost',db='memory'
  4. con.autocommit(True
  5. cur = con.cursor() 
  6. app = Flask(__name__) 
  7. import json 
  8. @app.route('/'
  9. def index(): 
  10. return render_template('index.html'
  11. @app.route('/data'
  12. def data(): 
  13. sql = 'select * from memory' 
  14. cur.execute(sql) 
  15. arr = [] 
  16. for i in cur.fetchall(): 
  17. arr.append([i[1]*1000,i[0]]) 
  18. return json.dumps(arr) 
  19. if __name__=='__main__'
  20. app.run(host='0.0.0.0',port=9092,debug=True

  #p#

前端index.html

  1. <div id="container" style="height: 400px; min-width: 310px"></div> 
  2. <script> 
  3. $(function () { 
  4. // 使用當前時區,否則東八區會差八個小時 
  5. Highcharts.setOptions({ 
  6. global: { 
  7. useUTC: false 
  8. }); 
  9. $.getJSON('/data'function (data) { 
  10. // Create the chart 
  11. $('#container').highcharts('StockChart', { 
  12. rangeSelector : { 
  13. selected : 1 
  14. }, 
  15. title : { 
  16. text : '內存數據' 
  17. }, 
  18. series : [{ 
  19. name : '本機內存'
  20. data : data, 
  21. tooltip: { 
  22. valueDecimals: 2 
  23. }] 
  24. }); 
  25. }); 
  26. }); 
  27. </script> 

  執行python flask_web.py,瀏覽器看數據www.51reboot.com:9092,出圖了。

 

  我們并不僅限于此,如果想實時的看到內存,應該怎么搞?

  1.查詢數據時候增加一個時間戳當限制條件,只返回兩次查詢之間的增量數據。

  2.前端動態添加增量結點數據到圖表中。

  修改flask_web.py。

  1. tmp_time = 0 
  2. @app.route('/data'
  3. def data(): 
  4. global tmp_time 
  5. if tmp_time>0: 
  6. sql = 'select * from memory where time>%s' % (tmp_time/1000) 
  7. else
  8. sql = 'select * from memory' 
  9. cur.execute(sql) 
  10. arr = [] 
  11. for i in cur.fetchall(): 
  12. arr.append([i[1]*1000,i[0]]) 
  13. if len(arr)>0: 
  14. tmp_time = arr[-1][0] 
  15. return json.dumps(arr) 

  前端,3秒查一次增量數據,根據自己需求調整,修改index.html。

  1. $.getJSON('/data'function (data) { 
  2. // Create the chart 
  3. $('#container').highcharts('StockChart', { 
  4. chart:{ 
  5. events:{ 
  6. load:function(){ 
  7. var series = this.series[0] 
  8. setInterval(function(){ 
  9. $.getJSON('/data',function(res){ 
  10. $.each(res,function(i,v){ 
  11. series.addPoint(v) 
  12. }) 
  13. }) 
  14. },3000) 
  15. }, 
  16. rangeSelector : { 
  17. selected : 1 
  18. }, 
  19. title : { 
  20. text : 'AAPL Stock Price' 
  21. }, 
  22. series : [{ 
  23. name : 'AAPL'
  24. data : data, 
  25. tooltip: { 
  26. valueDecimals: 2 
  27. }] 
  28. }); 
  29. }); 

  done!兩個文件都搞定,double kill!效果。

 

  后邊改了這么多,大家可能糊涂了,現在給出完整代碼:

  完整代碼大家可以從Github下載

  https://github.com/shengxinjing/my_blog/issues/1

  視頻下載地址:http://pan.baidu.com/s/1i4acpP7

  錄屏的時候網出問題了,所以錄了兩個:

  在線視頻1

  在線視頻2

責任編輯:武曉燕 來源: Reboot運維開發
相關推薦

2022-04-13 22:01:44

錯誤監控系統

2020-12-17 06:48:21

SQLkafkaMySQL

2019-04-01 14:59:56

負載均衡服務器網絡

2022-10-12 23:02:49

Calcite異構數據框架

2024-06-19 09:58:29

2022-06-16 07:31:41

Web組件封裝HTML 標簽

2021-09-07 09:40:20

Spark大數據引擎

2023-04-12 11:18:51

甘特圖前端

2012-07-10 01:22:32

PythonPython教程

2024-05-13 09:28:43

Flink SQL大數據

2015-09-06 09:22:24

框架搭建快速高效app

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫

2024-01-29 00:20:00

GolangGo代碼

2025-03-18 12:20:00

編程

2023-12-28 08:01:17

SpringAPI數據

2009-04-29 17:35:47

LinuxWebMail系統

2021-03-30 17:51:25

機器人系統聊天

2019-09-16 09:14:51

2009-10-09 14:45:29

VB程序

2022-08-26 09:01:07

CSSFlex 布局
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线精品一区二区 | 日韩免费视频一区二区 | 国产成人99久久亚洲综合精品 | 亚洲一区 中文字幕 | 国产福利在线播放 | 91精品久久 | 一区精品在线观看 | 日韩在线不卡视频 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 国产91久久久久蜜臀青青天草二 | 欧美国产日韩在线观看 | 男人天堂99 | 毛片免费观看 | 国产日韩欧美二区 | 国产三级在线观看播放 | 一区二区三区欧美 | 一区在线观看 | 国产午夜精品一区二区三区在线观看 | 奇米影视在线 | 超碰成人免费 | www日本在线 | 99精品在线| 国产精品毛片一区二区三区 | 国产伦精品一区二区三区照片91 | 最新中文字幕一区 | 妞干网av| 午夜丁香视频在线观看 | 男人的天堂久久 | 九九爱这里只有精品 | 欧美一区二区三区在线播放 | 亚洲综合无码一区二区 | 日本成人在线免费视频 | 羞羞视频一区二区 | 免费在线观看一区二区三区 | 久久免费大片 | 日本不卡视频在线播放 | 97国产精品| 日本人做爰大片免费观看一老师 | 美女黄网站视频免费 | 久久精品一区二区 | 亚洲人成一区二区三区性色 |