構建狂拽炫酷屌的 MySQL 監控平臺
prometheus+grafana 對於現在這個時間點來說,相信很多同行都應該已經開始玩起來了,當仍然可能有一部分人可能還不知道prometheus+grafana 的存在,也可能還有一部分人雖然知道它的存在,但卻懶於動手,如果是這樣,那後面的內容你可得打起精神來了,因為可能你會被grafana炫酷的視覺效果驚豔到。
讓我們一起了解一下吧。
首先,簡單介紹下prometheus+grafana 這對鴛鴦到底是什麼:
prometheus 是由 SoundCloud 開發的開源監控報警系統和時序列資料庫(TSDB),prometheus是一個監控採集與資料儲存框架(監控server端),具體採集什麼資料依賴於具體的exporter(監控client端),例如:採集MySQL的資料需要使用到mysql_exporter,prometheus呼叫mysql_expoter採集到mysql的監控指標之後,把mysql_exporter採集到的資料存放到prometheus所在伺服器的磁碟資料檔案中儲存。它的各個元件基本都是用 golang 編寫,對編譯和部署十分友好.並且沒有特殊依賴,基本都是獨立工作。以下是prometheus架構圖(圖片來 源:)
grafana是一個高顏值的監控繪圖程式,也是一個視覺化皮膚(Dashboard),grafana的厲害之處除了高顏值,還支援多種資料來源(支援Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作為資料來源)、支援靈活豐富的dashboard配置選項(例如:可以把多個例項的相同採集項配置在一個展示框裡),使得相較於其他開源監控系統來說更易用性,學習成本更低。從視覺上來說,比以往的任何開源的監控系統都看起來要養眼很多,下面先看兩張監控效果圖:
相信審美還算正常的人都不會說上面兩張圖很醜吧,那麼問題來了,我們該如何玩起來呢?下面就簡單為大家介紹如何快速搭建起來!
這裡方便演示過程,我們準備瞭如下兩臺測試伺服器
-
prometheus+grafana server端主機:10.10.30.165
-
MySQL 客戶端主機:10.10.20.14
1、安裝prometheus
1.1. 下載安裝包
對於prometheus,假設我們需要監控MySQL,那麼我們需要下載至少3個元件,如下:
-
prometheus程式包
-
node_exporter:監控主機磁碟、記憶體、CPU等硬體效能指標的採集程式包
-
mysql_exporter: 監控mysql各種效能指標的採集程式包
下載連結(該頁面始終只有一個最新版本):
-
下載prometheus
-
下載node_exporter
-
下載mysqld_exporter
-
PS:如果你還需要配置監控告警,需要下載alertmanager程式包
1.2. 解壓程式包
解壓prometheus
[root@localhost ~]# mkdir /data [root@localhost ~]# tar xvf prometheus-2.1.0.linux-amd64.tar.gz -C /data/
解壓exporter:由於prometheus主機自身也需要監控,所以也至少需要解壓node_exporter包
[root@localhost ~]# tar xf node_exporter-0.15.2.linux-amd64.tar -C /root/ # 如果需要監控mysql,則繼續解壓mysql_exporter [root@localhost ~]# tar xf mysqld_exporter-0.10.0.linux-amd64.tar -C /root/
1.3. 啟動prometheus
進入prometheus的工作目錄
[root@localhost ~]# cd /data/ [root@localhost data]# mv prometheus-2.1.0.linux-amd64/ prometheus [root@localhost ~]# cd /data/prometheus
配置 prometheus.yml配置檔案
[root@localhost data]# cat prometheus.yml # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: - file_sd_configs: - files: - host.yml job_name: Host metrics_path: /metrics relabel_configs: - source_labels: [__address__] regex: (.*) target_label: instance replacement: $1 - source_labels: [__address__] regex: (.*) target_label: __address__ replacement: $1:9100 - file_sd_configs: files: - mysql.yml job_name: MySQL metrics_path: /metrics relabel_configs: - source_labels: [__address__] regex: (.*) target_label: instance replacement: $1 - source_labels: [__address__] regex: (.*) target_label: __address__ replacement: $1:9104 - job_name: prometheus static_configs: - targets: - localhost:9090
啟動prometheus程式,30d表示prometheus只保留30天以內的資料
[root@localhost prometheus]# /data/prometheus/prometheus --storage.tsdb.retention=30d &
如果是7.x系統,可以按照如下方式配置service啟動指令碼
# 修改WorkingDirectory引數為你的prometheus的工作目錄 [root@localhost prometheus]# cat /usr/lib/systemd/system/prometheus.service [Unit] Description=Prometheus instance Wants=network-online.target After=network-online.target After=postgresql.service mariadb.service mysql.service [Service] User=root Group=root Type=simple Restart=on-failure WorkingDirectory=/data/prometheus/ RuntimeDirectory=prometheus RuntimeDirectoryMode=0750 ExecStart=/data/prometheus/prometheus --storage.tsdb.retention=30d --config.file=/data/prometheus/prometheus.yml LimitNOFILE=10000 TimeoutStopSec=20 [Install] WantedBy=multi-user.target
PS:prometheus預設的web訪問埠為9090,可以使用如下地址訪問
2、安裝grafana
前面說過,grafana是一個出圖展示框架,grafana根據grafana-dashboards來進行展示,grafana-dashboards就類似於grafana的出圖配置檔案,根據在grafana-dashboards中的定義來確定在頁面中需要展示什麼指標,需要如何展示等,需要分別對這兩個元件進行下載與安裝。
2.1. 下載安裝包
對於grafana來說,需要下載一個程式包,一個grafana-dashboards包
下載連結
grafana程式包:
grafana-dashboards包:
2.2. 解壓程式包
解壓grafana
[root@localhost ~]# tar xf grafana-4.6.3.linux-x64.tar.gz -C /data/prometheus/ [root@localhost ~]# cd /data/prometheus [root@localhost prometheus]# mv grafana-4.6.3/ grafana
2.3. 啟動grafana
進入grafana工作目錄,並啟動
[root@localhost ]# cd /data/prometheus/grafana [root@localhost ]# ./bin/grafana-server
如果是7.x系統,可以按照如下方式配置service啟動指令碼
[root@localhost service]# cat /usr/lib/systemd/system/grafana-server.service [Unit] Description=Grafana instance Documentation= Wants=network-online.target After=network-online.target After=postgresql.service mariadb.service mysql.service [Service] User=root Group=root Type=simple Restart=on-failure WorkingDirectory=/data/prometheus/grafana RuntimeDirectory=grafana RuntimeDirectoryMode=0750 ExecStart=/data/prometheus/grafana/bin/grafana-server LimitNOFILE=10000 TimeoutStopSec=20 [Install] WantedBy=multi-user.target
開啟grafana頁面(預設帳號和密碼:admin/admin,預設的埠為3000,透過地址:訪問),配置資料來源。
指定prometheus地址,這裡我們把grafana裝在了同一臺機器,直接使用127.0.0.1的地址配置即可,如下圖
2.4. 在grafana中匯入grafana-dashboards
解壓grafana-dashboards包,該包中提供了大量的json格式檔案的grafana dashboards,根據需要自行選擇,我們這裡需要監控主機和MySQL,就選擇如下一些json檔案。
[root@localhost ~]# tar xvf grafana-dashboards-1.6.1.tar.gz [root@localhost ~]# cd grafana-dashboards-1.6.1 [root@localhost grafana-dashboards-1.6.1]# updatedb [root@localhost grafana-dashboards-1.6.1]# locate json |grep dashboards/ ............ /root/grafana-dashboards-1.6.1/dashboards/CPU_Utilization_Details_Cores.json /root/grafana-dashboards-1.6.1/dashboards/Disk_Performance.json /root/grafana-dashboards-1.6.1/dashboards/Disk_Space.json ............ /root/grafana-dashboards-1.6.1/dashboards/MySQL_InnoDB_Metrics.json /root/grafana-dashboards-1.6.1/dashboards/MySQL_InnoDB_Metrics_Advanced.json ............ /root/grafana-dashboards-1.6.1/dashboards/MySQL_Overview.json /root/grafana-dashboards-1.6.1/dashboards/MySQL_Performance_Schema.json ............ /root/grafana-dashboards-1.6.1/dashboards/MySQL_Replication.json /root/grafana-dashboards-1.6.1/dashboards/MySQL_Table_Statistics.json ............ /root/grafana-dashboards-1.6.1/dashboards/Summary_Dashboard.json /root/grafana-dashboards-1.6.1/dashboards/System_Overview.json ............
在grafana頁面中,匯入需要的json檔案
在彈出的視窗中選擇你需要匯入的json檔案
然後,如果你的
grafana中已經新增過主機,此時,就可以看到相應的json dashboard監控資料
至此,prometheus+grafana的基礎架構(server端)已經搭建好了,現在,你可以去給他們新增監控節點了(client端)
3、監控節點部署
3.1. 新增主機監控
以新增prometheus主機(10.10.30.165)為例進行說明
解壓exporter壓縮包
[root@localhost ~]# tar xf node_exporter-0.15.2.linux-amd64.tar [root@localhost ~]# mv node_exporter-0.15.2.linux-amd64 node_exporter
啟動node_exporter程式
[root@localhost ~]# cd node_exporter [root@localhost node_exporter]# nohup ./node_exporter &
配置prometheus主機監控配置列表檔案,由於之前主配置檔案prometheus.yml 中已經定義了監控主機的配置檔案host.yml,這裡只需要把主機IP資訊填入即可動態生效
[root@localhost node_exporter]# cat /data/prometheus/host.yml - labels: service: test targets: - 10.10.30.165
然後,在grafana頁面中就可以看到你配置的主機
PS:如果該檔案中已經配置過lables且不需要使用獨立的service標籤進行標記,則新新增的例項的IP可以直接放在同一個targets下,如下:
[root@localhost mysqld_exporter]# cat /data/prometheus/host.yml - labels: service: test targets: - 10.10.30.165 - 10.10.20.14
3.2. 新增MySQL監控
新增MySQL監控主機,這裡以新增10.10.20.14為例進行說明
解壓exporter壓縮包
[root@localhost ~]# tar xf mysqld_exporter-0.10.0.linux-amd64.tar [root@localhost ~]# mv mysqld_exporter-0.10.0.linux-amd64 mysqld_exporter
配置監控資料庫需要的主機IP、資料庫埠、資料庫賬號和密碼的環境變數(注意:該賬號需要單獨建立,需要對所有庫所有表至少具有PROCESS, REPLICATION CLIENT, SELECT許可權)
[root@luoxiaobo-01 ~]# export DATA_SOURCE_NAME='admin:password@(10.10.20.14:3306)/' [root@luoxiaobo-01 ~]# echo "export DATA_SOURCE_NAME='admin:password@(10.10.20.14:3306)/'" >> /etc/profile
啟動exporter
# 由於目前最新的版本預設關閉了大量的mysql採集項,需要顯式使用相應的選項開啟(截止到寫稿時間,最新的開發版本可以透過prometheus端的配置項讓exporter端生效,而無需再exporter中使用大量的啟動選項開啟) [root@localhost ~]# cd mysqld_exporter [root@localhost mysqld_exporter]# nohup ./mysqld_exporter --collect.info_schema.processlist --collect.info_schema.innodb_tablespaces --collect.info_schema.innodb_metrics --collect.perf_schema.tableiowaits --collect.perf_schema.indexiowaits --collect.perf_schema.tablelocks --collect.engine_innodb_status --collect.perf_schema.file_events --collect.info_schema.processlist --collect.binlog_size --collect.info_schema.clientstats --collect.perf_schema.eventswaits &
配置prometheus MySQL監控配置列表檔案,由於之前主配置檔案prometheus.yml 中已經定義了監控主機的配置檔案mysql.yml,這裡只需要把主機IP資訊填入即可動態生效
[root@localhost mysqld_exporter]# cat /data/prometheus/host.yml - labels: service: test targets: - 10.10.30.165 - 10.10.20.14
然後,在grafana頁面中就可以看到你配置的MySQL例項
PS:如果該檔案中已經配置過lables且不需要使用獨立的service標籤進行標記,則新新增的例項的IP可以直接放在同一個targets下,如下:
[root@localhost mysqld_exporter]# cat /data/prometheus/mysql.yml - labels: service: test targets: - 10.10.30.165 - 10.10.20.14
3.3. grafana頁面dashboard切換
根據需要切換監控模板
然後,就能看到你想要的資料
到這裡,本文也接近尾聲了,相信大家按照本文介紹的步驟操作一翻,已經一睹了grafana炫酷介面的芳容了,謝謝大家閱讀!
| 作者簡介
羅小波·沃趣科技高階資料庫技術專家
IT從業多年,歷任運維工程師,高階運維工程師,運維經理,資料庫工程師,曾參與版本釋出系統,輕量級監控系統,運維管理平臺,資料庫管理平臺的設計與編寫,熟悉MySQL的體系結構時,InnoDB儲存引擎,喜好專研開源技術,追求完美。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28218939/viewspace-2199495/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Telegraf+Influxdb+Grafana構建監控平臺UXGrafana
- 如何構建智慧監控預警管理平臺?
- 全新SaaS運維監控平臺構建書運維
- 那個“炫酷狂拽”的資料視覺化利器AntV 11.22版全新發布啦視覺化
- zabbix監控平臺
- 24.Flutter:使用CustomPaint構建酷炫的WidgetFlutterAI
- Zabbix監控平臺的搭建
- 酷炫大屏展示!一個完全開源的BI平臺!
- 黑炫酷的監控介面,實際上是用了什麼開源工具?開源工具
- 手把手教你搭建高逼格監控平臺,第二彈,監控mysqlMySql
- Prometheus + InfluxDB + MySQL + Grafna快速構建監控系統PrometheusUXMySql
- linux監控平臺搭建Linux
- Prometheus + Grafana 監控平臺搭建PrometheusGrafana
- 宜信智慧監控平臺建設實踐|分享實錄
- 超實用案例:美團終端主動監控平臺的建設
- (十五) 構建dubbo分散式平臺-window安裝dubbo管控臺分散式
- 智和信通圍繞智和網管平臺構建統一監控運維方案運維
- 360容器平臺監控實踐
- 資料倉儲監控平臺
- BWBCS資料監控平臺
- linux下cacti監控平臺的搭建Linux
- Zabbix+Grafana從零設計自己的監控平臺-監控效果展示Grafana
- RestCloud監控平臺,專為微服務API打造的實時監控中心RESTCloud微服務API
- ELK構建MySQL慢日誌收集平臺詳解MySql
- 最新官方版本Fliqlo 炫酷翻蓋時鐘屏保 多平臺
- (十三) 構建dubbo分散式平臺-dubbo管控檯安裝分散式
- DIY一個前端監控平臺(上)前端
- ElasticSearch實戰-日誌監控平臺Elasticsearch
- Prometheus 監控平臺元件深度講解Prometheus元件
- 宜信智慧監控平臺建設實踐|宜信技術沙龍
- Grafana監控系統的構建與實踐Grafana
- HDFS監控背後那些事兒,構建Hadoop監控共同體Hadoop
- 使用夜鶯和 Categraf 快速建設 MySQL 監控MySql
- android炫酷的textviewAndroidTextView
- Zabbix新增主機監控-zabbix+grafana從零設計自己的監控平臺Grafana
- 智和信通,部署智慧交通運維繫統,構建一站式運維監控平臺運維
- Docker構建多平臺映象Docker
- Docker 構建多平臺映象Docker