部署grafana+prometheus監控


一:簡介

1.Prometheus 的介紹

Prometheus是一套開源的監控&報警&時間序列數據庫的組合,起始是由SoundCloud公司開發的。隨着發展,越來越多公司和組織接受采用Prometheus,社區也十分活躍,他們便將它獨立成開源項目,並且有公司來運作。google SRE的書內也曾提到跟他們BorgMon監控系統相似的實現是Prometheus。現在 最常見的Kubernetes容器管理系統中,通常會搭配Prometheus進行監控。

2.Prometheus 的優點:

(1)配置靈活

使用過zabbix的同學應該都體驗過安裝時候的安裝依賴包的痛苦,而premetheus核心部分只有一個單獨的二進制文件,下載解壓安裝即可, 沒有依賴的第三方庫

(2)監控的多樣性

prometheus支持多種語言的的客戶端,我們通過客戶端方便對核心業務進行埋點,比如下單,添加購物車等流程。

而且prometheus已經有非常多的系統集成

比如:

應用層面的監控:nginx,haproxy,mysql ,docker等

系統層面如:SNMP協議監控,主機監控,進程監控

容器雲監控:docker,k8s openstack私有雲

(3)非常高效的存儲

平均一個采樣數據占 ~3.5 bytes左右,320萬的時間序列,每30秒采樣,保持60天,消耗磁盤大概228G

二:prometheus的架構

 

 

對照圖中的每一部分進行介紹:
·prometheus server
主要負責數據的采集和存儲,提供PromQL查詢語言支持
Retrieval:采樣模塊,prometheus的服務器在哪里拉取數據,檢索拉取到的數據分發給 TSDB進行存儲
TSDB:存儲模塊默認本地存儲為TSDB
HTTP server : 提供http接口查詢和面板,默認端口為9090
·short-lived jobs:
存在時間不足以被刪除的短暫或批量業務,無法通過pull的方式拉取,需要使用push的方式,與pushgeteway結合使用
·Service Discovery:
服務發現,prometheus支持多種服務發現機制:文件,DNS,k8s,openstack,等,基於服務發現的過程,通過第三方接口,prometheus查詢到需要監控的target列表,然后輪詢這些target獲取監控數據
·客戶端SDK
官方提供的客戶端類庫有go,java,python,ruby
·pushgateway
支持臨時性的job主動推送指標的中間網關,prometheus默認通過pull方式從exporters拉取,但有些情況我們是不允許promethes與exporters直接進行通信的,這時候我們可以使用pushgateway由客戶端主動push數據到pushgateway,在由prometheus拉取。很多時候我們需要自定義一些組件來采集
·proDash
使用rails開發的dashboard,用於可視化指標數據
·exporters
支持其他數據源的指標導入到prometheus,支持數據庫,硬件,消息中間件,存儲系統,http服務器,jmx等
負責收集目標對象的性能數據,並通過http接口供prometheus server獲取
只要符合接口格式,就可以被采集
·alertmanager
實驗性組件,用來進行報警
·prometheus_cli
命令行工具

三:prometheus的工作流程

1.prometheus server 定期從配置好的jobs或者exporters中拉metrics.或者接受來自pushgateway發過來的metrics,或者從其他的prometheus server中拉取metrics
2.prometheus server 在本地存儲收集到的metrics,並運行已經定義好的arlt.rules,記錄新的時間序列或者向alertmanager推送報警
3.Alertmanager根據配置文件,對接受的警報進行處理,發出告警
4.在圖形界面中,可視化采集數據,可以使用別人寫好的grafana模板。

 

部署前說明

prometheus        服務端一台主機

grafana              服務端一台主機

prometheus和grafana可以安裝在同一主機上

node_exporter和mysqld_exporter   被監控的主機插件一台主機

我是在做演示,所以全部安裝在同一台主機上

四:prometheus 部署

1.安裝前准備

安裝前先檢查一下時間是不是同步,不同步的話會導致數據收集不到,會報錯

[root@localhost ~]# date
2020年 08月 31日 星期一 12:19:18 CST

 

 

我是還原快照,所以時間並不同步

解決辦法:

命令如下:

# yum -y install ntp

# ntpdate time1.aliyun.com        #同步阿里雲時間
# hwclock -w                              #將系統時間賦值給硬件時間,有些時候 硬件時間會比系統時間快8個小時

關閉防火牆和selinux

 

# systemctl stop firewalld && setenforce 0 && iptables -F

准備安裝包

prometheus-2.6.1.linux-amd64.tar

grafana-7.1.5-1.x86_64

node_exporter-0.17.0.linux-amd64.tar

mysqld_exporter-0.12.1.linux-amd64.tar

官網下載地址https://prometheus.io/download/

2.開始安裝部署

命令如下:

# tar -zvxf prometheus-2.6.1.linux-amd64.tar.gz

# mv prometheus-2.6.1.linux-amd64 /usr/local/prometheus

# cd /usr/local/prometheus/

# ./prometheus &           #后台啟動

 

 

然后通過瀏覽器訪問:http://192.168.20.100:9090

 

 

web網頁介紹

http://IP:9090

查看監控目標

 

 

可以看到系統默認監控了自己的主機信息,監控接口通過http://IP:9090/metrics 可以直接看到監控數據,如下圖:

 

 

prometheus默認監控圖像,如下圖:

在圖2的位置輸入process_cpu_seconds_total ,可以查看到cpu的使用情況

3.實例:監控linux主機

需要在被監控的主機安裝node_exporter插件,是prometheus來收集數據

在官網上下載node_exporter-0.17.0.linux-amd64.tar安裝包

命令如下:

# tar -zvxf node_exporter-0.17.0.linux-amd64.tar.gz

# mv node_exporter-0.17.0.linux-amd64 node_exporter

 

# cd node_exporter

# nohup ./node_exporter &

nohup 是 Linux 的一個常用命令,當你想要在退出賬戶或者關閉終端 后進程仍在運行時,就可以使用 nohup 命令。nohup 就是不掛斷的意思(no hang up)

在瀏覽器上查看監控信息 http://IP:9100/metrics

 

配置prometheus server端文件 prometheus.yml 可以拉取node信息

# vim /usr/local/prometheus/prometheus.yml

將以下內容添加到文件最后

  - job_name: 'agent'

    static_configs:
    - targets: ['192.168.20.100:9100']

注意:一定格式正確,否則服務重啟不了      IP應該填寫的是被監控主機的IP,我是把服務端客戶端做在同一主機上了

 

添加完成后重新啟動prometheus

命令如下:

# pkill prometheus

# cd /usr/local/prometheus/

# ./prometheus &

 

然后通過web可以看見兩台,如下兩張圖

監控mysql需要在被監控機器安裝mysql_exporter

mysql_exporter下載地址:https://prometheus.io/download/mysqld_exporter-0.12.1.linux-amd64.tar.gz

命令如下:

# tar -zvxf mysqld_exporter-0.12.1.linux-amd64.tar.gz

# mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter

# cd /usr/local/mysqld_exporter/

# yum -y install mariadb\*      (這里mariadb數據庫為參考)

 

# systemctl start mariadb && systemctl enable  mariadb              啟動並設置開機自啟

在數據庫里創建mysql賬號用戶收集數據

# mysql

MariaDB [(none)]> grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '12345678';

MariaDB [(none)]> flush privileges;

注意:此處是prometheus服務器來找mysql_exporter,然后mysql_exporter 在找mariadb,所以這里用的是localhost,指的是mysql_exporter的ip 

在mysql_exporter中設置mysql配置信息

命令如下:

# cd /usr/local/mysqld_exporter

# vim .my.cnf         (手工創建)

[client]
user=mysql_monitor
password=12345678

啟動mysql_exporter
# nohup ./mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &

 

配置prometheus拉取mysql節點信息

在prometheus的server端進行修改

# vim /usr/local/prometheus/prometheus.yml

  - job_name: 'mariadb'
    
    static_configs:
    - targets: ['192.168.20.100:9104']

 

 重啟prometheus服務

命令如下:

# pkill prometheus

# cd /usr/local/prometheus/

# ./prometheus &

 

然后在web網頁中刷新一下,會出現三台

知識擴展:

prometheus.yml配置文件詳解
global:
# 全局配置
  scrape_interval:     15s # 多久收集一次數據

  evaluation_interval: 15s # 多久評估一次規則
  scrape_timeout:  10s  # 每次收集數據的超時時間
# Alertmanager configuration #告警設置
alerting:
  alertmanagers:
  - static_configs:  #告警規則,也可以基於動態方式進行告警
    - targets:
rule_files:  #規則文件
#收集數據配置列表
scrape_configs:
  - job_name: 'prometheus'

 

五:Grafana介紹
Grafana是開源的度量分析和可視化工具,,可以通過將采集的數據查詢然后可視化的展示,並實現報警。它主要有以下六大特點:
(1)展示方式:快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標和日志,官方庫中具有豐富的儀表盤插件,比如熱圖、折線圖、圖表等多種展示方式;
(2)數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
(3)通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算並發送通知,在數據達到閾值時通過Slack、PagerDuty等獲得通知;
(4)混合展示:在同一圖表中混合使用不同的數據源,可以基於每個查詢指定數據源,甚至自定義數據源;
(5)注釋:使用來自不同數據源的豐富事件注釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記;
(6)過濾器:Ad-hoc過濾器允許動態創建新的鍵/值過濾器,這些過濾器會自動應用於使用該數據源的所有查詢。

1.安裝grafana

下載地址:grafana官網下載
# wget https://dl.grafana.com/oss/release/grafana-7.1.5-1.x86_64.rpm

# yum -y install grafana-7.1.5-1.x86_64.rpm

啟動服務並設置開機自啟

# systemctl start grafana-server &&  systemctl enable grafana-server

在瀏覽器上訪問http://IP:3000    用戶名和密碼默認是admin

 

 

2.添加數據源(prometheus的數據源)

 

 

 

 點擊齒輪的圖標,可以看到剛才添加的prometheus的數據源信息信息

 

3. 現成模板添加版
先要找到模板的添加碼:
模板網址: https://grafana.com/grafana/dashboards 

 

4.點擊“+”里面的import選項

 

 

 

點擊后就會看到當前服務器監控信息:
可以看到已經添加了相關的模板之后,圖表就非常漂亮,省去了我們人工的一些操作,當然grafana還有一些比較高級的功能,官網上也有介紹,比如定制變量,定制圖形模板等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM