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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...