InfulxDb+grafana監控Windows運行狀態

来源:https://www.cnblogs.com/kanadeblisst/archive/2020/05/19/12918729.html
-Advertisement-
Play Games

看一下效果圖: InfulxDb 官方網站:https://portal.influxdata.com/downloads/ docker 安裝influxdb資料庫 chronograf可視化工具(非必要,只是可以web訪問,類似PHPMySQL) 啟動influxdb,其中 v參數表示將dock ...


看一下效果圖:
在這裡插入圖片描述

InfulxDb

官方網站:https://portal.influxdata.com/downloads/

docker

docker pull influxdb 安裝influxdb資料庫
docker pull quay.io/influxdb/chronograf:1.8.4 chronograf可視化工具(非必要,只是可以web訪問,類似PHPMySQL)

docker run -d -p 8086:8086 -v /var/lib/influxdb:/var/lib/influxdb --name influxdb influxdb啟動influxdb,其中-v參數表示將docker內的文件夾映射到本地,冒號前為本地路徑,冒號後為docker內路徑。-p表示映射埠,建議不使用預設的8086埠,比如-p 2222:8086

Windows

chronograf Windows可執行文件下載地址
influxdb Windows可執行文件下載地址

Windows運行很簡單:influxd.exe -config influxdb.conf(註意不是少打了一個b)
當然運行之前可以修改influxdb.conf配置文件,主要修改欄位:

bind-address = "0.0.0.0:8088" 
[meta]
  dir = "G:/Grafana/influxdb/meta"

[data]
  dir = "G:/Grafana/influxdb/data"
  wal-dir = "G:/Grafana/influxdb/wal"
[http]
  auth-enabled = true # 開啟http密碼驗證

不過linux還是建議docker安裝,Windows可以選擇可執行文件,也可以docker,就看你是不是Windows10專業版了(因為Windows10專業版安裝docker很簡單)。

創建管理員用戶

啟動influxdb後,運行influxdb(windows先在cmd下cd到下載的influx.exe所在目錄然後輸入influx.exe)命令,輸入一下命令即可
create user admin with password ‘admin’ with all privileges
註意修改admin賬號和密碼兩個的值, 如果不是管理員無法操作資料庫,不知道怎麼處理,那就直接使用管理員吧

開啟http auth驗證

只需要按上面的配置文件修改就行,這裡說一下如何修改docker內的文件,直接看命令( 命令中的influxdb:為docker啟動時-name指定的名稱,也可以是容器ID):
docker cp ./influxdb.conf influxdb:/etc/influxdb/influxdb.conf
當然這個命令也支持將docker內的文件拷貝出來
docker cp influxdb:/etc/influxdb/influxdb.conf ./influxdb.conf

python influxdb

influxdb的語句其實和MySQL的差不多。而且python庫也封裝了一些常用的命令,只需調用函數即可執行相應的功能,當然查詢語句還是要自己寫的。

具體方法請參考官方文檔:https://influxdb-python.readthedocs.io/en/latest/include-readme.html

grafana

安裝

如果是Windows,直接下載可執行文件安裝即可(我沒試過就不詳細說了),下載地址:https://grafana.com/grafana/download?platform=windows

docker運行:
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana
命令中grafana-storage為本地文件夾路徑:比如也放在/var/lib/grafana

docker更新grafana:

docker pull grafana/grafana   #重新pull最新版本
docker stop my-grafana-container   # 停止已運行容器
docker rm my-grafana-container   # 刪除舊容器

使用

瀏覽器訪問IP:埠進入登錄頁面,IP看你運行在哪了,埠預設3000。用戶名密碼都是admin,第一次登錄會提示修改密碼。

進入頁面後預設大概是這樣的:(開始是沒有添加data source)
在這裡插入圖片描述
我們先添加一下data source(數據來源),點擊左邊像設置(Configuration)一樣按鈕,然後點擊data sources,之後點擊add data source。選擇influxdb之後進入:
在這裡插入圖片描述

name任意,主要看http的URL是influxdb的IP和埠,然後是InfluxDB Details這一欄,需要填寫database(資料庫),User(用戶名),password(密碼),http method任意,get和post都行,我選的是post。然後點擊save & test,如果顯示綠色的提示說明保存測試成功,如果是紅色的則資料庫連接有誤。

添加數據

grafana的準備工作就做完了,接著就需要往資料庫中保存數據了。現成的工具有telegraf、collectd等。telegraf有exe可執行文件,用起來感覺還不錯。而collectd主要是Linux用的,Windows雖然有可執行文件,但體驗不怎麼樣,需要付費升級商業版。

官方下載地址:https://portal.influxdata.com/downloads/
如果訪問慢的地址:https://lanzous.com/icdvnhg

啟動:telegraf.exe -config telegraf.conf
註意啟動之前修改配置文件,看一些主要修改欄位:

[[outputs.influxdb]]
	urls = ["http://127.0.0.1:8086"]  # influxdb的鏈接
	database = "telegraf"    # 資料庫名,不存在的話預設會自動創建
 	username = "" # influxdb配置的用戶名和密碼
    password = ""

運行之後可以使用chronograf來看一下資料庫裡面有沒有數據,也可以直接命令行進入資料庫。(chronograf很簡單就不多贅述了)

進入資料庫的命令:influx -host 127.0.0.1 -port 8086 -username admin -password admin(註意修改後面的參數值),Windows需要下載可執行文件influx.exe,下載路徑:https://portal.influxdata.com/downloads/。

添加grafana圖表

既然資料庫里有數據了,那麼接下來我們通過grafana展示一下數據。
圖表就不自己建了,我們也使用現成的(後面提一下怎麼自己構建圖表)。公開的圖表下載地址:
https://grafana.com/grafana/dashboards?collector=Telegraf&dataSource=influxdb&direction=asc&orderBy=name&search=Windows

如果需要其他圖表可以自己更改篩選條件,在網頁的左邊就有選項

這裡面有幾個現成的圖表,我們隨便選擇一個複製鏈接,比如第二個:https://grafana.com/grafana/dashboards/1902

接著打開grafana的網頁端,點擊左邊的+好後點擊import:
在這裡插入圖片描述
Grafana.com Dashboard這一欄中填剛纔複製的地址,第二欄空著不管他,點擊導入,
在這裡插入圖片描述
folder應該只有一個選項,選擇他就行,telegraf選擇開始添加的資料庫。

接著就可以看到telegraf保存的系統狀態了,不過有很多圖表可能沒數據,原因就需要你自己一個一個看了,可能是圖表查詢語句錯了,也可能telegraf沒有保存相應的數據。

自建圖表

還是點擊左邊的加號,創建dashboard,
在這裡插入圖片描述
左邊的add query是使用預設的Graph面板(panel),而右邊則是選擇面板。面板有很多,具體參考官方文檔。更簡單的做法是參考你前面導入的圖表,看一下他們的查詢語句和一些配置就知道該怎麼做了,如果裡面有一些選項不知道是乾什麼用的,點一下看看有什麼變化可能就明白了。

我們直接點擊add query,進入:
在這裡插入圖片描述

1、Query

填寫查詢語句的,Query後面是資料庫的名稱(也就是前面添加的data source)。下麵的就是查詢語句了,簡單說一下:

FROM default select measurement WHERE default預設就行,當然你選擇另外一個autogen也一樣,這是由於influxdb資料庫的原因,influxdb直接查詢資料庫下的某個measurement需要這樣寫:select * from 資料庫名.autogen.measurement名。當然更常用的是使用如下語句查詢, 這樣就可以省略autogen:

use 資料庫名
select * from measurement名

其中measurement類似於表一樣,如果資料庫配置正確的話,點擊select measurement 應該會出現所有的表。

第二行的SELECT很明顯就是選擇欄位了,第二個是選擇聚合函數,值得註意的是,如果不選擇聚合函數,即使資料庫里有數據,圖表也不會顯示。GROUP BY一般預設即可,當然也可以自己修改,FORMAT AS也是預設的,ALIAS BY表示取別名,當你添加了兩個以上的查詢語句時,用於顯示Legend來區分。

2、Visualization

圖表的一些設置,這個不好細說,另外我也剛接觸只會皮毛就不獻醜了。如果不知道某個選項什麼作用,點一下看看有什麼變化吧。也可以參考公開的圖表怎麼設置的。

3、General

修改標題和描述用的

4、Alert

告警,應該是監控值有沒有異常,如果有則發送郵件到指定郵箱(需提前配置發件郵箱),當然不一定是郵件還有其他類型。沒用過,不知道怎麼發送。而且使用了變數的圖表還無法使用這個功能,會出現Template variables are not supported in alert queries,只有Graph面板能使用這個功能。
在這裡插入圖片描述
圖片來自:https://www.jianshu.com/p/2b230390f37e

其他我就不介紹了,因為我也不會。最後說一點:頁面右上角有一個刷新的圖表,可以刷新數據,也可以選擇自動刷新的時間間隔。

自建數據

前面使用了telegraf來將Windows的一些狀態保存在資料庫,現在我們說一下另一個神器的使用:AIDA64,至於這個有多神我就不描述了。雖然它功能十分強大,但現在只使用它的系統監控功能,先看一下AIDA的設置:
在這裡插入圖片描述
它可以將監控信息保存在文件,也可以發送到郵箱,甚至顯示到桌面的任務欄等。當然這些我都沒用過,我使用的是它將數據實時保存在共用記憶體中(在外部程式這個選項中),我們可以將所需要的數據勾選,然後通過編程語言來將共用記憶體中的數據同步到資料庫,這裡我使用的是Python。軟體設置只需要在外部程式選項中勾選允許共用記憶體,另外可以選擇性勾選需要的數據,也可以簡單粗暴的全部勾選。

Python代碼:

import re
import time
from datetime import datetime
from influxdb import InfluxDBClient
from ctypes import windll, c_char_p, c_int

tvid = '12345678'  # 用於grafana區分機器


message = windll.kernel32.OpenFileMappingW
message.restype = c_int

client = InfluxDBClient(host='', port=8086, username='', password='', database='')

handle = message(1, False, "AIDA64_SensorValues")

if handle:
    view = windll.kernel32.MapViewOfFile
    view.restype = c_char_p
    while True:
        xml = view(handle, 1, 0, 0, 256)
        re_ = r'<id>(.*?)</id><label>(.*?)</label><value>(.*?)</value>'
        data = {}
        data['tvid'] = tvid
        for i in re.findall(re_, xml.decode()):
            try:
                data[i[0].lower()] = int(i[2])
            except ValueError:
                try:
                    data[i[0].lower()] = float(i[2])
                except ValueError:
                    data[i[0].lower()] = i[2]
        d = {
            "measurement": "windows",
            "time": datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ'),
            "tags": {
                'tvid': tvid
            },
            "fields": data
         }  
        if not client.write_points([d]):
            break
        time.sleep(4.99)
            
else:
    print(0)

其他可以預設,註意修改InfluxDBClient的參數。

查看共用記憶體有沒有數據:

from ctypes import windll, c_char_p, c_int

message = windll.kernel32.OpenFileMappingW

message.restype = c_int

handle = message(1, False, "AIDA64_SensorValues")

if handle:
    view = windll.kernel32.MapViewOfFile
    view.restype = c_char_p
    print(view(handle, 1, 0, 0, 256))
else:
    print(0)

分享一下我用的AIDA64:https://lanzous.com/icdysif

我的圖表json(可以點擊+號 import,粘貼json導入),註意修改json中DataSource,我的是InfluxDB。有點大,放文件了:https://lanzous.com/icdz81e


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文將從隊列本質、技術選型兩個方面,給大家整理下個人心得,希望能對大家有所幫助。 ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 在本文總結了大廠常見的Python面試問題附帶參考答案,希望能夠幫助你在2020年求職面試中脫穎而出,找到一份高薪工作。 1、python中is和==的區別 ①Python中 ...
  • 對於要有扎實的java基礎,集合是必須掌握的,而且精讀這部分的源碼很有用,也很有必要。而LinkedList是在java.util包下,和java.io,java.lang都是比較常用,而且比較簡單。看看它們的源碼有助於鍛煉我們看源碼的感覺,也瞭解一下大神們寫代碼的風格。看這些源碼的目的,更多是為了 ...
  • 自己在寫文章的時候,也有到處去逛一逛,漸漸發現了一些有意思的事,經常會有人用同樣的評論到處刷,不知道是為了加沒什麼用的積分,還是純粹為了表達樓主好人。那麼問題來了,這種無聊的事情當然最好能夠自動化咯,自己也來試了一把,純屬娛樂。 大家在學python的時候肯定會遇到很多難題,以及對於新技術的追求,這 ...
  • 引言 好久沒有寫博客了,近期準備把 源碼啃一遍。在這之前本想直接看源碼,但是看到後面發現其實效率不高, 有些概念還是有必要回頭再細啃的,特別是其線程模型以及 的概念。 當然在開始之前還是有務必要對 要有清晰準確的認識。 傳送門 "" 事件迴圈機制(EventLoop) Netty線程模型中一個非常重 ...
  • 主要是使用了form組件 <html lang="cn"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <me ...
  • 受人所托,需要對他們的產品進行反爬測試,所以就有了以下內容,不過,我知道,針對這方面的文章太多了,是真的多,而且好早就有了,但是目前為止,很多app的防護基本也還是用的ssl pinning檢測證書。 因為,目前的app要嘛不用ssl,要嘛用就是一般的ssl,基本就是在手機上裝個相關軟體 的代理即... ...
  • 作者:超大隻烏龜 https://segmentfault.com/a/1190000022184751 總所周知 HashMap 是面試中經常問到的一個知識點,也是判斷一個候選人基礎是否扎實的標準之一,因為通過 "HashMap" 可以引出很多知識點,比如數據結構(數組、鏈表、紅黑樹)、 "equ ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...