近期在使用python寫一套模擬API請求的監(jiān)控項目,考慮數(shù)據(jù)可視化這方面就采用grafana來呈現(xiàn),下面來看看怎么弄。
站在用戶的角度思考問題,與客戶深入溝通,找到秦州網(wǎng)站設(shè)計與秦州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋秦州地區(qū)。
首先安裝好mysql,將監(jiān)控的日志數(shù)據(jù)寫入到mysql之中。如下圖:
好了,這里就已經(jīng)準(zhǔn)備好了相關(guān)的測試模擬數(shù)據(jù)。那么下面就使用Grafana來配置圖表看看。
如果有不清楚Grafana怎么安裝的朋友,可以點(diǎn)擊 這里 查看如何安裝部署。
按照腳本我已經(jīng)設(shè)置好了 admin 的密碼為 newpwd 了。
輸入用戶名 admin 和 密碼 newpwd ,點(diǎn)擊 Log In 登錄系統(tǒng)。
在登陸系統(tǒng)后的首頁,就可以進(jìn)行數(shù)據(jù)源的添加了。
訪問不了 localhost:3306 的原因是因為Grafana是使用docker容器啟動的,而容器當(dāng)然沒有部署mysql。
所以,修改mysql訪問配置如下:
好了,數(shù)據(jù)源mysql已經(jīng)配置好了。下一步就是配置圖表的呈現(xiàn)了。
下面來編寫一個SQL查詢來看看。
從上圖看出,從mysql中查詢的結(jié)果直接就可以從Grafana表格呈現(xiàn)了。
好了,基本上table表格已經(jīng)呈現(xiàn),但是單純這樣的一個表格滿足不了我的胃口。
那么下面就來再整一個曲線圖來看看。
我不是想單獨(dú)增加一個新的面板,而是想在剛剛創(chuàng)建的table上面創(chuàng)建一個曲線圖,那么該怎么做呢?
從上這個圖表的配置我一開始也沒太理解清楚,配置過后,看著圖表呈現(xiàn)就更加好的理解了。
根據(jù)圖表的內(nèi)容,我查詢的分析如上圖。
當(dāng)然還可以呈現(xiàn)更加多的圖表,這里就基本介紹到這里啦。
public class CategoryItemChart {
public static String generateBarChart(HttpSession session, PrintWriter pw,int w, int h,ArrayList list) {
String filename = null;
try {
CategoryDataset dataset = createDataset(list);
JFreeChart chart = ChartFactory.createBarChart(
"",//圖表標(biāo)題
"",//X軸標(biāo)題
"",//Y軸標(biāo)題
dataset,//數(shù)據(jù)集合
PlotOrientation.VERTICAL,//圖表顯示方向(水平、垂直)
true,//是否使用圖例
true,//是否使用工具提示
false//是否為圖表增加URL
);
/*------------配置圖表屬性--------------*/
chart.setBackgroundPaint(Color.white); // 1,設(shè)置整個圖表背景顏色
CategoryPlot plot = chart.getCategoryPlot(); /*------------設(shè)定Plot參數(shù)-------------*/
plot.setBackgroundPaint(Color.white); // 2,設(shè)置詳細(xì)圖表的顯示細(xì)節(jié)部分的背景顏色
plot.setDomainGridlinePaint(Color.black); // 3,設(shè)置垂直網(wǎng)格線顏色
plot.setDomainGridlinesVisible(false); // 4,設(shè)置是否顯示垂直網(wǎng)格線
plot.setRangeGridlinePaint(Color.yellow); // 5,設(shè)置水平網(wǎng)格線顏色
plot.setRangeGridlinesVisible(false); //6,設(shè)置是否顯示水平網(wǎng)格線
/*---------將所有數(shù)據(jù)轉(zhuǎn)換為整數(shù)形式---------*/
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
/*---------設(shè)置是否在柱圖的狀態(tài)條上顯示邊框----*/
CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();
BarRenderer render = (BarRenderer) plot.getRenderer();
// render.setItemMargin(0.0);
// render.setMinimumBarLength(0.0);
/*---------設(shè)置狀態(tài)條顏色的深淺漸變-----------*/
GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, new Color(255,200, 80), 0.0f, 0.0f, new Color(255, 255, 40));
GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, new Color(50,255, 50), 0.0f, 0.0f, new Color(100, 255, 100));
GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f,0.0f, new Color(255, 100, 100));
GradientPaint gp3 = new GradientPaint(0.0f, 0.0f, new Color(108,108, 255), 0.0f, 0.0f, new Color(150, 150, 200));
renderer.setSeriesPaint(0, gp0);
renderer.setSeriesPaint(1, gp1);
renderer.setSeriesPaint(2, gp2);
renderer.setSeriesPaint(3, gp3);
/*
*
* 解決柱狀體與圖片邊框的間距問題
*
*
* */
/*------設(shè)置X軸標(biāo)題的傾斜程度----*/
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.E / 6.0));
/*------設(shè)置柱狀體與圖片邊框的左右間距--*/
domainAxis.setLowerMargin(0.06);
domainAxis.setUpperMargin(0.06);
/*------設(shè)置柱狀體與圖片邊框的上下間距---*/
ValueAxis rAxis = plot.getRangeAxis();
rAxis.setUpperMargin(0.3);
rAxis.setLowerMargin(0.3);
/*---------設(shè)置每一組柱狀體之間的間隔---------*/
render.setItemMargin(0.01);
/*
*
* 解決柱狀體與圖片邊框的間距問題
*
*
* */
/*
*
*
* 解決JFREECHART的中文顯示問題
*
*
* */
/*----------設(shè)置消除字體的鋸齒渲染(解決中文問題)--------------*/
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
/*----------設(shè)置標(biāo)題字體--------------------------*/
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑體", Font.PLAIN, 20));
/*------設(shè)置X軸坐標(biāo)上的文字-----------*/
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
/*------設(shè)置X軸的標(biāo)題文字------------*/
domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));
/*------設(shè)置Y軸坐標(biāo)上的文字-----------*/
rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 14));
/*------設(shè)置Y軸的標(biāo)題文字------------*/
rAxis.setLabelFont(new Font("黑體", Font.PLAIN, 12));
/*---------設(shè)置柱狀體上的顯示的字體---------*/
renderer.setBaseItemLabelFont(new Font("宋體", Font.PLAIN, 12));
renderer.setBaseItemLabelGenerator(new LabelGenerator(0.0));
renderer.setBaseItemLabelsVisible(true);
/*
*
*
* 解決JFREECHART的中文顯示問題
*
*
* */
/*------得到chart的保存路徑----*/
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session);
/*------使用printWriter將文件寫出----*/
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (Exception e) {
System.out.println("Exception - " + e.toString());
e.printStackTrace(System.out);
filename = "public_error_500x300.png";
}
return filename;
}
/*-------------設(shè)置柱狀體頂端的數(shù)據(jù)顯示--------------*/
static class LabelGenerator implements CategoryItemLabelGenerator {
private double threshold;
public LabelGenerator(double threshold) {
this.threshold = threshold;
}
public String generateLabel(CategoryDataset dataset, int row, int column) {
String result = null;
final Number value = dataset.getValue(row, column);
if (value != null) {
final double v = value.doubleValue();
if (v this.threshold) {
result = value.toString();
}
}
return result;
}
public String generateRowLabel(CategoryDataset dataset, int row) {
return null;
}
public String generateColumnLabel(CategoryDataset dataset, int column) {
return null;
}
}
/*-----------數(shù)據(jù)封裝-------------*/
private static CategoryDataset createDataset(ArrayList list) {
String s1 = "1";
String s2 = "2";
String c1 = "1";
String c2 = "2";
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(44, s1, c1);
dataset.setValue(48, s2, c2);
return dataset;
}
}
比較完整的一個得到柱圖的代碼,保存路徑是臨時文件,怎么從數(shù)據(jù)庫取值應(yīng)該會吧。把dataset處理一下就可以了。
Navicat 提供三種在主窗口查看對象的類型,即列表、詳細(xì)信息、ER圖表。在默認(rèn)情況下,Navicat 在對象列表使用“列表 ”查看,它只顯示對象的名字,你可以從主菜單選擇 查看 - 列表 。注意:Navicat 生成ER圖表只限于完整版本。只有表提供 ER 圖表查看。其他數(shù)據(jù)庫對象只提供列表和詳細(xì)信息查看。
navicat 怎么生成ER圖表的方法:從主菜單選擇查看 - ER 圖表,如果已選擇的數(shù)據(jù)庫或模式包含表,將自動創(chuàng)建 ER 圖表。
Navicat for MySQL 功能簡介
發(fā)布時間:2015-09-22
Navicat for MySQL 是一套管理和開發(fā) MySQL 或 MariaDB 的理想解決方案,支持單一程序,可同時連接到 MySQL和MariaDB。這個功能齊備的前端軟件為數(shù)據(jù)庫管理、開發(fā)和維護(hù)提供了直觀而強(qiáng)大的圖形界面,給 MySQL 或 MariaDB 新手以及專業(yè)人士提供了一組全面的工具。
Navicat for MySQL 可連接到任何本機(jī)或遠(yuǎn)程 MySQL 和 MariaDB 服務(wù)器。它可以用于 MySQL 數(shù)據(jù)庫服務(wù)器版本3.21或以上和 MariaDB 5.1或以上,與Drizzle、OurDelta 和 Percona Server 兼容,并支持大部分最新功能,包括表、視圖、函數(shù)或過程、事件等。
主要功能包括 SQL 創(chuàng)建工具或編輯器、數(shù)據(jù)模型工具、數(shù)據(jù)傳輸、導(dǎo)入或?qū)С?、?shù)據(jù)或結(jié)構(gòu)同步、報表、以及更多。
Navicat for MySQL主要功能如下:
Navicat Cloud
Navicat for MySQL 提供 Navicat Cloud 服務(wù)給用戶,同步連接設(shè)置、模型、查詢和虛擬組到云。這樣就能隨時隨地實時訪問。有了 Navicat Cloud,便可以善用一天中的每分每秒,最大限度提高工作效率。
安全連接
Navicat 可通過 SSH 通道創(chuàng)建安全的 SSH 階段作業(yè),確保兩臺主機(jī)之間的連接受到強(qiáng)大驗證和安全加密的保護(hù),驗證方式可使用密碼、公鑰、私鑰。Navicat 也支持 HTTP 通道,直接連接互聯(lián)網(wǎng)服務(wù)供應(yīng)商。
對象設(shè)計器
Navicat for MySQL對象設(shè)計器
使用專業(yè)的對象設(shè)計器創(chuàng)建、修改和設(shè)計所有數(shù)據(jù)庫對象,例如:表、視圖、觸發(fā)器和索引。無需編寫復(fù)雜的 SQL 來創(chuàng)建和編輯對象。
表查看器
Navicat for MySQL查看網(wǎng)格或表單
查看網(wǎng)格或表單:使用網(wǎng)格查看添加、修改和刪除記錄。用類似數(shù)據(jù)表的功能瀏覽網(wǎng)格查看,例如排序和隱藏數(shù)據(jù)組,使用 Navicat for MySQL 助理編輯器:備注、十六進(jìn)制、圖像或更多,也可以用表單查看操作記錄,清楚顯示記錄的欄位名和其值,不必?fù)?dān)心誤解數(shù)據(jù)。
Navicat for MySQL選擇外鍵數(shù)據(jù)
選擇外鍵數(shù)據(jù):使用外鍵關(guān)系選定參考查找表,并自動建立下拉列表。無需持續(xù)對照參考主表,簡化工作流程和提高效率。
SQL 創(chuàng)建工具或編輯器
Navicat SQL 創(chuàng)建工具
SQL 創(chuàng)建工具:視覺化 SQL 創(chuàng)建工具創(chuàng)建和編輯查詢或視圖,不必?fù)?dān)心語法和正確命令的用法。選擇需要在表中執(zhí)行的操作,自動編寫 SQL 語句。
Navicat for MySQL自動完成代碼
自動完成代碼:使用自動完成代碼功能,能快速地在 SQL 編輯器中創(chuàng)建 SQL 語句。無論選擇數(shù)據(jù)庫對象的屬性或 SQL 關(guān)鍵字,只需從下拉列表中選擇。
數(shù)據(jù)庫設(shè)計器
Navicat for MySQL逆向工程
逆向工程:使用 Navicat for MySQL逆向工程,可從一個現(xiàn)有的數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫模型,可視化地顯現(xiàn)和編輯數(shù)據(jù)庫結(jié)構(gòu)或創(chuàng)建一個圖形模型,并由模型生成一個數(shù)據(jù)庫。
Navicat for MySQL正向工程和生成腳本
正向工程和生成腳本:同步到數(shù)據(jù)庫功能可充分了解所有數(shù)據(jù)庫的差異,生成必要的同步腳本來更新目標(biāo)數(shù)據(jù)庫,并使其與模型相同。導(dǎo)出 SQL 有機(jī)會全面控制最終的 SQL 腳本,生成參照完整性規(guī)則,生成模型的獨(dú)立部份、注釋、字符集等,可大大節(jié)省工作時間。
數(shù)據(jù)處理工具
導(dǎo)入或?qū)С鱿驅(qū)В簭牟煌袷降奈募?dǎo)入數(shù)據(jù)到表,例如 Access、Excel、XML、TXT、CSV、JSON 及更多。而且在設(shè)置數(shù)據(jù)源連接后,可以從 ODBC 導(dǎo)入數(shù)據(jù)。只需簡單地選擇需要導(dǎo)入的表,或使用添加查詢按鈕指定查詢。同樣可以將數(shù)據(jù)導(dǎo)出到各種格式,如 Excel、TXT、CSV、DBF、XML 等。
Navicat for MySQL數(shù)據(jù)傳輸
數(shù)據(jù)傳輸:在多個數(shù)據(jù)庫間輕松地傳輸數(shù)據(jù),可以選擇指定的 SQL 格式和編碼導(dǎo)出數(shù)據(jù)為 SQL 文件,這個功能可大大的簡化遷移數(shù)據(jù)的進(jìn)程。
Navicat 數(shù)據(jù)或結(jié)構(gòu)同步
數(shù)據(jù)或結(jié)構(gòu)同步:從一個數(shù)據(jù)庫中詳細(xì)的分析進(jìn)程傳輸數(shù)據(jù)到另外一個數(shù)據(jù)庫,同樣可以對比并修改表的結(jié)構(gòu)。在數(shù)據(jù)和結(jié)構(gòu)同步中,目標(biāo)數(shù)據(jù)庫可以在源服務(wù)器,也可以在其他的服務(wù)器。
Navicat for MySQL備份或還原
備份或還原:定期備份數(shù)據(jù)庫對用戶淶水相當(dāng)重要,備份或還原全部表、記錄、視圖等。如果數(shù)據(jù)損壞,不用再重做,高枕無憂。
Navicat for MySQL批處理作業(yè)
計劃:不同數(shù)據(jù)庫的設(shè)置文件可以創(chuàng)建在單一批處理作業(yè),這樣就可以設(shè)置計劃并在指定的時間運(yùn)行。批處理作業(yè)可以創(chuàng)建的對象包括打印報表、查詢、數(shù)據(jù)傳輸、數(shù)據(jù) 同步、導(dǎo)入和導(dǎo)出。而且可傳送電子郵件通知給指定的收件人,獲取最新的計劃信息。此外導(dǎo)出的文件或打印的報表可以添加到批處理作業(yè)作為電子郵件附件,輕易與其他人共享數(shù)據(jù)。
報表創(chuàng)建工具或查看器 只限于 Windows 版本
Navicat for MySQL 報表創(chuàng)建工具
使用用戶友好 GUI 報表創(chuàng)建工具創(chuàng)建各種不同類型的報表,設(shè)計發(fā)票、統(tǒng)計、郵寄標(biāo)簽及更多其他報表。輸出報表到多種格式,如 text、PDF、Lotus、Excel、Graphic、Html 及更多。Navicat Report Viewer 可瀏覽由報表創(chuàng)建工具設(shè)計的報表,最酷的是可以與沒有安裝 Navicat 但安裝了 Navicat Report Viewer 的計算機(jī)共享報表。
實用工具
Navicat for MySQLER 圖表
ER 圖表:ER 圖表能通過圖形格式顯示數(shù)據(jù)庫結(jié)構(gòu),幫助用戶了解數(shù)據(jù)庫,看到數(shù)據(jù)庫中表之間的關(guān)聯(lián)。
Navicat for MySQL連接顏色或虛擬組
連接顏色或虛擬組:連接顏色功能可立刻知道連接到哪個服務(wù)器,顯示在子窗口工具欄的顏色指示,用于識別連接和它們的數(shù)據(jù)庫對象。虛擬組工具可將對象分類到不用的組,令對象和連接有一個更好的組織。
Navicat for MySQL樹或?qū)ο蠛Y選功能
樹或?qū)ο蠛Y選:使用樹或?qū)ο蠛Y選功能可設(shè)計顯示數(shù)據(jù)對象的列表,簡單地需輸入文本,就只顯示符合指定字符串的數(shù)據(jù)庫對象。
收藏夾
Navicat for MySQL可幫助用戶容易地回到經(jīng)常訪問的數(shù)據(jù)庫對象,通過添加路徑到收藏列表,只需一次點(diǎn)擊就可以打開這些數(shù)據(jù)庫對象。
詳細(xì)的圖文教程可以參考: