基於Prometheus+Grafana搭建可視化監控服務 (三) Grafana可視化
前兩篇
基於Prometheus+Grafana搭建可視化監控服務 (一) Prometheus監控
基於Prometheus+Grafana搭建可視化監控服務 (二) AlertManager告警
一、概述
Grafana官網:https://grafana.com
二、安裝Grafana
下載地址:https://grafana.com/grafana/download
2.1.下載安裝
[root@server ~]# cd /usr/local/src
[root@server src]# wget https://dl.grafana.com/oss/release/grafana-8.0.6-1.x86_64.rpm
[root@server src]# yum install grafana-8.0.6-1.x86_64.rpm
2.2.使用MySQL作為存儲數據庫(可選)
Grafana默認配置是sqlite3數據庫(/var/lib/grafana/grafana.db)
這里修改為MySQL
create database grafana DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
grafana默認配置文件為/etc/grafana/grafana.ini,找到[database]部分,修改grafana存儲信息
[root@server src]# vi /etc/grafana/grafana.ini
[database]
type = mysql
host = 192.168.1.100:3306
name = grafana
user = root
password = 1234@Test
也可過url進行定義database信息,參考如下:
url = mysql://USER:PASSWORD@IPADDRESS:3306/DATABASE_NAME
2.3.配置server(可選)
為了能外網訪問grafana(如果不配置,則告警郵件中鏈接無法訪問)
需修改配置文件grafana.ini,找到[server]部分,修改grafana服務地址信息
[root@server src]# vi /etc/grafana/grafana.ini
[server]
protocol = http
http_port = 80
domain = monitor.domain.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/
2.4.啟用插件(可選)
2.4.1.安裝餅圖插件(可選)
旨在解決部分圖表涉及餅圖不能正確顯示問題
[root@server src]# grafana-cli plugins install grafana-piechart-panel
2.4.2.安裝截圖插件(可選)
旨在解決告警郵件中的圖形截圖沒有正確顯示問題
[root@server src]# grafana-cli plugins install grafana-image-renderer
[root@server src]# yum -y install libXcomposite libatk-bridge* libXss* libgtk*
如果仍不能正確顯示,通過查看/var/log/message日志信息進行排查解決
2.5.安裝字體(可選)
旨在解決告警郵件中的中文亂碼問題
從本地電腦拷貝或互聯網下載simsun.ttc(宋體)
把文件放到 /usr/share/fonts/simsun.ttc
依次執行如下命令
[root@server src]# mkfontdir
[root@server src]# mkfontscale
[root@server src]# fc-cache -fv
修改rendering_language值為zh
[root@server src]# vi /etc/grafana/grafana.ini
rendering_language = zh
2.6.配置告警媒介(可選)
這里配置郵件告警
[root@server src]# vi /etc/grafana/grafana.ini
#################################### SMTP / Emailing ##########################
[smtp]
enabled = true
host = mail.domain.com:25
user = devops.domain.com
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = xxxxx
;cert_file =
;key_file =
skip_verify = true
from_address = devops@domain.com
from_name = XXX運維監控
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')
;startTLS_policy = NoStartTLS
[emails]
;welcome_email_on_sign_up = false
;templates_pattern = emails/*.html
2.7.啟動grafana服務
[root@server src]# systemctl start grafana-server
#查看啟動狀態
[root@server src]# systemctl status grafana-server
#配置為開機啟動
[root@server src]# systemctl enable grafana-server
2.8.訪問Grafana
默認地址:http://ip:3000/
根據配置的server地址訪問:http://monitor.domain.com
默認賬號密碼都為admin
2.9.Grafana通過Yum安裝默認配置信息
二進制文件: /usr/sbin/grafana-server
init.d 腳本: /etc/init.d/grafana-server
環境變量文件: /etc/sysconfig/grafana-server
配置文件: /etc/grafana/grafana.ini
啟動項: grafana-server.service
日志文件:/var/log/grafana/grafana.log
默認配置的sqlite3數據庫:/var/lib/grafana/grafana.db
前端靜態文件目錄:/usr/share/grafana/public
三、配置看板數據源
功能路徑:Configuration->datasources
把Prometheus配置作為默認數據源
如果期望可視化關系型數據庫中數據,則可相應加上對應數據源配置
四、配置看板
官網Dashboard搜索https://grafana.com/grafana/dashboards?dataSource=prometheus&search=redis
4.1.根據ID導入
-
可視化node_exporter, 8919
-
可視化mysql_exporter, 7362
-
可視化rabbitmq_exporter, 10991
-
可視化redis_exporter, 763
-
可視化doris_exporter, 9734
-
可視化blackbox_exporter, 9965或13659
4.2.MySQL看板涉Buffer Pool Size of Total RAM圖表值顯示No data問題解決
把當前的 (mysql_global_variables_innodb_buffer_pool_size{instance="$host"} * 100) / on (instance) node_memory_MemTotal_bytes{instance="$host"}
改為
(label_replace(mysql_global_variables_innodb_buffer_pool_size{instance="$host"}, "nodename", "$1", "instance", "(.*):.*") * 100) / on(nodename) (label_replace(node_memory_MemTotal_bytes, "nodename", "$1", "instance", "(.*):.*"))
4.3.Redis看板涉Memory Usage顯示N/A問題解決
Memory Usage圖表一直是N/A。是因為redis_memory_max_bytes 獲取的值為0
導致 redis_memory_used_bytes / redis_memory_max_bytes 結果不正常。
解決辦法:將redis_memory_max_bytes 改為服務器的真實內存大小。
例如:redis_memory_used_bytes{instance=~"$instance"} / 65807920
五、數據源切換方法
如果grafana數據已經初始化為sqlite3存儲格式,想切換為MySQL
方法如下:
5.1.先停止grafana
[root@server src]# systemctl stop grafana-server
5.2.導出grafana的sqlite數據庫為mysql格式
[root@server src]# cd /var/lib/grafana/
[root@server grafana]# vi export_sqlite.sh
#!/bin/bash
DB=$1
TABLES=$(sqlite3 $DB .tables | sed -r 's/(\S+)\s+(\S)/\1\n\2/g' | grep -v migration_log)
for t in $TABLES; do
echo "TRUNCATE TABLE $t;"
done
for t in $TABLES; do
echo -e ".mode insert $t\nselect * from $t;"
done | sqlite3 $DB
執行導出命令:
[root@server grafana]# chmod +x export_sqlite.sh
[root@server grafana]# ./export_sqlite.sh grafana.db > grafana.sql
5.3.更改grafana配置文件
grafana默認配置文件為/etc/grafana/grafana.ini,找到[database]部分,修改grafana存儲信息
[root@server src]# vi /etc/grafana/grafana.ini
[database]
type = mysql
host = 192.168.1.100:3306
name = grafana
user = root
password = 1234@Test
也可過url進行定義database信息,參考如下:
url = mysql://USER:PASSWORD@IPADDRESS:3306/DATABASE_NAME
5.4.數據庫導入到MySQL
[root@server grafana]# mysql -uroot -p -D grafana < grafana.sql
5.5.啟動grafana
[root@server grafana]# systemctl start grafana-server