<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          搭建Prometheus+Grafana的云平臺監(jiān)控系統(tǒng)

          共 12219字,需瀏覽 25分鐘

           ·

          2021-09-21 12:14

          1.1  Prometheus和Grafana概述

          1.2  安裝配置Prometheus監(jiān)控服務(wù)

          1.3  啟動用于采集linux系統(tǒng)和mysql服務(wù)狀態(tài)的exporter服務(wù)

          1.4  實戰(zhàn)-使用Grafana可視化工具美化監(jiān)控數(shù)據(jù)顯示效果

          1.5  實戰(zhàn)-Grafana配置郵件告警



          1.1   Prometheus和Grafana概述


          1.1.1  Prometheus概述


          Prometheus(普羅米修斯)是一套開源的監(jiān)控&報警&時間序列數(shù)據(jù)庫的組合,起始是由SoundCloud公司開發(fā)的?,F(xiàn)在最常見的Docker、Mesos、Kubernetes容器管理系統(tǒng)中,通常會搭配Prometheus進(jìn)行監(jiān)控。 Prometheus  [pr??miθju:s]   普羅米修斯


          Prometheus基本原理是通過HTTP協(xié)議周期性抓取被監(jiān)控組件的狀態(tài),這樣做的好處是任意組件只要提供HTTP接口就可以接入監(jiān)控系統(tǒng),不需要任何SDK或者其他的集成過程。這樣做非常適合虛擬化環(huán)境比如VM或者Docker 。


          輸出被監(jiān)控組件信息的HTTP接口被叫做exporter。目前互聯(lián)網(wǎng)公司常用的組件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系統(tǒng)信息 (包括磁盤、內(nèi)存、CPU、網(wǎng)絡(luò)等等),具體支持的源看:

          https://github.com/prometheus。 

          exporter ([ek?sp?:t?(r)] 出口商)


          對比主流的監(jiān)控工具的操作界面:

          nagios監(jiān)控界面:



          zabbix監(jiān)控界面



          Grafana+Prometheus監(jiān)控界面:



          通過上面的界面,我們可以看出來Grafana+Prometheus展示界面更美觀


          1.1.2  Prometheus 架構(gòu)圖解


          普羅米修斯(Prometheus)及其一些生態(tài)系統(tǒng)組件的整體架構(gòu):



          retrieval   [r??tri?vl]  數(shù)據(jù)檢索


          Prometheus各組件運行流程如下:

          1、Prometheus Server:Prometheus Sever是Prometheus組件中的核心部分,負(fù)責(zé)實現(xiàn)對監(jiān)控數(shù)據(jù)的獲取,存儲及查詢。Prometheus Server可以通過靜態(tài)配置管理監(jiān)控目標(biāo),也可以配合使用Service Discovery(服務(wù)發(fā)現(xiàn))的方式動態(tài)管理監(jiān)控目標(biāo),并從這些監(jiān)控目標(biāo)中獲取數(shù)據(jù)。其次Prometheus Sever需要對采集到的數(shù)據(jù)進(jìn)行存儲,Prometheus Server本身就是一個實時數(shù)據(jù)庫,將采集到的監(jiān)控數(shù)據(jù)按照時間序列的方式存儲在本地磁盤當(dāng)中。Prometheus Server對外提供了自定義的PromQL,實現(xiàn)對數(shù)據(jù)的查詢以及分析。另外Prometheus Server的聯(lián)邦集群能力可以使其從其他的Prometheus Server實例中獲取數(shù)據(jù)。


          2、Exporters:Exporter將監(jiān)控數(shù)據(jù)采集的端點通過HTTP服務(wù)的形式暴露給Prometheus Server,Prometheus Server通過訪問該Exporter提供的Endpoint端點,即可以獲取到需要采集的監(jiān)控數(shù)據(jù)??梢詫xporter分為2類:


          (1)、直接采集:這一類Exporter直接內(nèi)置了對Prometheus監(jiān)控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接內(nèi)置了用于向Prometheus暴露監(jiān)控數(shù)據(jù)的端點。


          (2)、間接采集:原有監(jiān)控目標(biāo)并不直接支持Prometheus,因此需要通過Prometheus提供的Client Library編寫該監(jiān)控目標(biāo)的監(jiān)控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter等。


          3、AlertManager:在Prometheus Server中支持基于Prom QL創(chuàng)建告警規(guī)則,如果滿足Prom QL定義的規(guī)則,則會產(chǎn)生一條告警。常見的接收方式有:電子郵件,webhook 等。


          4、PushGateway:Prometheus數(shù)據(jù)采集基于Prometheus Server從Exporter pull數(shù)據(jù),因此當(dāng)網(wǎng)絡(luò)環(huán)境不允許Prometheus Server和Exporter進(jìn)行通信時,可以使用PushGateway來進(jìn)行中轉(zhuǎn)。


          Prometheus的工作流:

          1.Prometheus server定期從配置好的jobs和exporters中拉取metrics,或者接收來自Pushgateway發(fā)送過來的metrics,或者從其它的Prometheus server中拉metrics。

          metrics  [?metr?ks]  衡量指標(biāo)


          2.Prometheus server在本地存儲收集到的metrics,并運行定義好的alerts.rules,記錄新的時間序列或者向Alert manager推送警報。


          3.Alertmanager根據(jù)配置文件,對接收到的警報進(jìn)行處理,發(fā)出告警。


          4.在圖形界面中,可視化采集數(shù)據(jù)。


          實驗拓?fù)鋱D:



           搭建Prometheus+Grafana的云平臺監(jiān)控系統(tǒng)工作流程:  

          1、安裝exporter(出口)采集數(shù)據(jù)   

          2、美化采集到的數(shù)據(jù)

          3、在web界面查看

          懂:1不懂:2


          1.2  安裝配置Prometheus監(jiān)控服務(wù)


          1、安裝go語言環(huán)境


          方法1:使用tar包安裝go語言環(huán)境

          上傳到go1.13.3.linux-amd64.tar.gz到linux服務(wù)器上

          或在線下載:


          [root@xuegod63 ~]# wget  -c https://storage.googleapis.com/golang/go1.13.3.linux-amd64.tar.gz[root@xuegod63 ~]# tar -zxvf go1.13.3.linux-amd64.tar.gz  -C /usr/local[root@xuegod63 ~]# echo "export PATH=$PATH:/usr/local/go/bin" > /etc/profile.d/go.sh[root@xuegod63 ~]# source /etc/profile.d/go.s[root@xuegod63 ~]# go



          方法2:使用yum安裝go語言環(huán)境

          [root@xuegod63 ~]# yum install -y epel-release[root@xuegod63 ~]# yum install go -y[root@xuegod63 ~]# go version


          擴(kuò)展:

          Go(又稱Golang)是Google開發(fā)的一種靜態(tài)強類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言。

           下載安裝:

          Prometheus(https://prometheus.io/download/)[root@xuegod63 ~]#wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz[root@xuegod63 ~]# tar zxvf prometheus-2.27.1.linux-amd64.tar.gz -C /usr/local/[root@xuegod63 ~]# cd /usr/local/prometheus-2.27.1.linux-amd64/


          修改prometheus配置文件,配置監(jiān)控linux主機(jī)和mysql數(shù)據(jù)庫,配置文件為yml語法,注意縮進(jìn)對齊

          [root@xuegod63 prometheus-2.7.1.linux-amd64]# vim prometheus.yml  #在文檔的最后插入以下內(nèi)容


          - job_name: system-statusstatic_configs:- targets: ['192.168.1.64:9100']labels:instance: xuegod64- job_name: mysql-statusstatic_configs:- targets: ['192.168.1.64:9104']labels:instance: xuegod64-mysql

          插入時,要和文件之前的job_name保持對齊,如下圖:


          注釋:

          - job_name: system-status  #

          每一個job_name都是一個監(jiān)控項,這里代表監(jiān)控操作系統(tǒng)狀態(tài)

          static_configs:

          - targets: ['192.168.1.64:9100']  #

          被監(jiān)控主機(jī)IP地址和端口

          labels:

          instance: xuegod64   #

          實例名稱,在grafana中表示對應(yīng)的主機(jī)。


          - job_name: mysql-status #

          監(jiān)控mysql數(shù)據(jù)庫狀態(tài)

          static_configs:

          - targets: ['192.168.1.64:9104']  #

          目標(biāo)主機(jī)IP地址和端口

          labels:

          instance: xuegod64-mysql    #

          實例名稱,在grafana中表示對應(yīng)的主機(jī)。

          [root@xuegod63prometheus-2.7.1.linux-amd64]# ./prometheus --config.file=prometheus.yml


          出現(xiàn)以下信息吧表示啟動成功。

          或直接后臺運行:

          [root@xuegod63prometheus-2.7.1.linux-amd64]# nohup ./prometheus --config.file=prometheus.yml  &[root@xuegod63 ~]# systemctl stop firewalld && systemctl disable firewalld  #關(guān)閉防火墻瀏覽器輸入http://192.168.1.63:9090


          注:因為我們還沒有開始配置xuegod64了,所以現(xiàn)在還獲取不到xuegod64的信息


          1.3  啟動用于采集linux系統(tǒng)和mysql服務(wù)狀態(tài)的exporter服務(wù)


          prometheus常見的exporter及作用:

          (1)、node_exporter用于監(jiān)控操作系統(tǒng)的性能和運行狀態(tài)

          (2)、mysqld_exporter用于監(jiān)控mysql服務(wù)

          (3)、snmp_exporter用于監(jiān)控網(wǎng)絡(luò)設(shè)備

          更多exporter可在官網(wǎng)下載:

          https://prometheus.io/download/#node_exporter



          1、配置 node_exporter監(jiān)控xuegod64運行狀態(tài)

          [root@xuegod64 ~]# systemctl stop firewalld && systemctl disable firewalld  #關(guān)閉防火墻上傳node_exporter-1.1.2.linux-amd64.tar.gz到linux上。[root@xuegod64 ~]# tar zxvf /root/node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local/[root@xuegod64 ~]# nohup /usr/local/node_exporter-1.1.2.linux-amd64/node_exporter &


          2、配置mysqld_exporter用于監(jiān)控xuegod64上的mysql服務(wù)

          (1)、安裝數(shù)據(jù)庫服務(wù)

          [root@xuegod64 ~]# yum install mariadb-server mariadb -y[root@xuegod64 ~]# systemctl start mariadb[root@xuegod64 ~]# mysql  #直接登錄mysqlmysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_monitor'@'localhost' identified by '123456';mysql> GRANT SELECT ON *.* TO 'mysql_monitor'@'localhost';MariaDB [(none)]> exit;


          注:mysql 用戶權(quán)限說明:

          (1)、replication client權(quán)限  #擁有此權(quán)限可以查詢master server、slave server狀態(tài)。

          (2)、PROCESS權(quán)限  #通過這個權(quán)限,用戶可以執(zhí)行SHOW PROCESSLIST和KILL命令。默認(rèn)情況下,每個用戶都可以執(zhí)行SHOW PROCESSLIST命令,但是只能查詢本用戶的進(jìn)程。如:

          mysql> show processlist;

          另外,管理權(quán)限 process不能夠指定某個數(shù)據(jù)庫,on后面必須跟*.*

          (3)、select權(quán)限  #必須有select的權(quán)限,才可以使用select * from table 查看數(shù)據(jù)


          (2)、安裝mysqld_exporter

          上傳mysqld_exporter到linux系統(tǒng)上

          [root@xuegod64 ~]# tar xf mysqld_exporter-0.13.0-rc.0.linux-amd64.tar.gz -C /usr/local/


          創(chuàng)建隱藏配置文件.my.cnf,用于mysqld_exporter連接mysql采集數(shù)據(jù)。


          [root@xuegod64 ~]# vim /usr/local/mysqld_exporter-0.13.0-rc.0.linux-amd64/.my.cnf  [client]user=mysql_monitorpassword= 123456[root@xuegod64 ~]# nohup /usr/local/mysqld_exporter-0.13.0-rc.0.linux-amd64/mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter-0.13.0-rc.0.linux-amd64/.my.cnf" &


          在web界面,再次查看監(jiān)控信息已經(jīng)成功添加linux 和mysql節(jié)點,已經(jīng)up了

          瀏覽器輸入:

          http://192.168.1.63:9090


          查看網(wǎng)絡(luò)端口:

          [root@xuegod64 ~]# netstat  -antup | grep 91tcp6       0      0 :::9100        :::*            LISTEN      2158/node_exporter  tcp6       0      0 :::9104        :::*            LISTEN      41308/mysqld_export


          總結(jié)prometheus使用方法:

          1、想監(jiān)控操作系統(tǒng),只需要一步:

          在被監(jiān)控系統(tǒng)上安裝node_exporter并啟動,就ok了


          2、想監(jiān)控操mysql數(shù)據(jù)庫,只需要兩步:

          (1)、創(chuàng)建一個mysql用戶

          (2)、安裝mysqld_exporter并啟動


          1.4  實戰(zhàn)-使用Grafana可視化工具美化監(jiān)控數(shù)據(jù)顯示效果


          1.4.1  配置grafana


          1、上傳grafana到linux系統(tǒng)/root/下

          [root@xuegod63 ~]# yum install -y ./grafana-7.5.7-1.x86_64.rpm或在線下載:[root@xuegod64 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.5.7-1.x86_64.rpm


          2、安裝圖形餅狀圖插件,方便顯示餅狀圖

          方法1:離線安裝

          下載:

          https://grafana.com/api/plugins/grafana-piechart-panel/versions/1.6.1/download

          然后上傳grafana-piechart-panel-1.6.1.zip到linux系統(tǒng)上

          [root@xuegod63 ~]# mkdir /var/lib/grafana/plugins   #創(chuàng)建存儲插件的路徑[root@xuegod63 ~]# unzip grafana-piechart-panel-1.6.1.zip  [root@xuegod63 ~]# mv grafana-piechart-panel /var/lib/grafana/plugins/grafana-piechart-panel[root@xuegod63 ~]# systemctl restart grafana-server   


          方法2:在線安裝

          [root@xuegod63 ~]# grafana-cli plugins install grafana-piechart-panel[root@xuegod63 ~]# systemctl restart grafana-server   #安裝完插件,需要重啟服務(wù)


          3、訪問:

          http://192.168.1.63:3000/login  

          用戶名:admin密碼admin 

          第一次登陸會提示修改密碼,咱們改成123456  

          配置數(shù)據(jù)源

          url地址:http://192.168.1.63:9090

          在頁面最下面,點:Save & Test


          Scrape   [skre?p] 刮擦 ;   

          interval   [??nt?vl]   間隔;

          Scrape interval  抓取數(shù)據(jù)間隔

          彈出下面信息,說明成功了




          1.4.2  將監(jiān)控Linux系統(tǒng)和mysql服務(wù)運行狀態(tài)的web儀表盤插件導(dǎo)入grafana


          1、查找可以美化Linux系統(tǒng)監(jiān)控數(shù)據(jù)的儀表盤插件



          打開官方網(wǎng)站:

          https://grafana.com/grafana/dashboards

          在頁面中找到這個:

          https://grafana.com/grafana/dashboards?search=node

          輸入關(guān)鍵字node,進(jìn)行查詢,查看自已想要的展示看板:


          我使用們這個ID:8919

          打開這個鏈接:

          https://grafana.com/grafana/dashboards/8919



          也可以直接下載JSON文件,然后后期,直接導(dǎo)入這個離線文件:

           ID號是: 8919。 注: 如果在線導(dǎo)入的看板,看不到數(shù)據(jù),可以換一個ID號,再試試。

          開始導(dǎo)入:

          點load,

          刷新瀏覽器界面:

          注:也可以導(dǎo)入之前下載的

          node-exporter-for-prometheus-dashboard-cn-v20201010_rev24.json離線文件上傳。


          2、查出mysql的 Web儀表盤插件的ID號

          打開此鏈接可直接搜索到與課程對應(yīng)版本的儀表盤

          https://grafana.com/grafana/dashboards?search=mysql%20overview&utm_source=grafana_search

          然后選擇這個由nasskach開發(fā)的界面


          打開鏈接:

          https://grafana.com/grafana/dashboards/7362

          復(fù)制7362 的ID


           來到grafana主界面,導(dǎo)入dashboard:

          下拉選擇Prometheus


           1.5  實戰(zhàn)-Grafana配置郵件告警


          1.5.1  配置SMTP發(fā)送郵件


          配置163郵箱smtp服務(wù)

          點擊開啟SMTP服務(wù),點擊開啟后會提示我們下載手機(jī)APP,我們點繼續(xù)開啟不需要下載APP。

          根據(jù)提示發(fā)送手機(jī)驗證碼即可開啟成功

          EMXCERHXVHVDXKJF

          開啟成功后會新增授權(quán)密碼管理的選項,如果你之前已經(jīng)開啟過,直接點擊新增授權(quán)密碼即可。

          Grafana配置SMTP賬戶

          [root@xuegod63 ~]# vim /etc/grafana/grafana.ini

          第522行修改smtp配置

          注:所有修改配置前 ; 注釋符號需要取消,將對應(yīng)行,改為以下內(nèi)容:

          [smtp]enabled = true                 #啟用smtphost = smtp.163.com:465        #163 smtp服務(wù)地址user = jianmingbasic@163.com   #163郵箱用戶名# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""password = EMXCERHXVHVDXKJF      #授權(quán)密碼; cert_file =; key_file =; skip_verify = falsefrom_address = jianmingbasic@163.com   #郵件From地址,和登錄用戶一致即可。;from_name = Grafana; ehlo_identity =

          修改完郵件配置后修改domain信息,郵件內(nèi)容中包含Grafana的訪問地址,默認(rèn)地址為localhost。

          改:

          41 ;domain = localhost

          為:

          41 domain = 192.168.1.63


          1.5.2  配置圖片渲染功能


          配置插件地址

          改:

          813 ;server_url =

          為:

          813 server_url = http://192.168.1.63:8081/render

          配置callback_url,該地址為Grafana地址。

          改:

          815 ;callback_url =

          815 callback_url = 

          http://192.168.1.63:3000/


          修改默認(rèn)語言,默認(rèn)配置渲染圖片時不支持中文。

          改:

          840 ;rendering_language =

          為:

          840 rendering_language = zh


          安裝圖片渲染插件(經(jīng)測試僅docker方式搭建的插件支持中文渲染)

          安裝docker環(huán)境

          [root@xuegod63 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2配置國內(nèi)docker的yum源(阿里云)[root@xuegod63 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安裝docker-ce[root@xuegod63 ~]# yum makecache fast[root@xuegod63 ~]# yum install docker-ce docker-ce-cli containerd.io -y[root@xuegod63 ~]# systemctl start docker && systemctl enable docker.service[root@xuegod63 ~]# tee /etc/docker/daemon.json << 'EOF'{"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com"]}EOF[root@xuegod63 ~]# systemctl daemon-reload[root@xuegod63 ~]# systemctl restart docker 運行docker版本的圖片渲染插件上傳課程資料中的grafana-image-renderer.tar.gz[root@xuegod63 ~]# docker load -i grafana-image-renderer.tar.gz[root@xuegod63 ~]# docker run -d -p 8081:8081 --restart=always index.docker.io/grafana/grafana-image-renderer:latest重啟Grafana使配置生效[root@xuegod63 ~]# systemctl restart grafana-server

          檢查郵件服務(wù)是否配置成功,添加告警頻道。


          取任意名稱,選擇Email發(fā)送,填寫收件人地址即可發(fā)送測試郵件。Include image需要手動勾選,這樣發(fā)送郵件時才會附帶監(jiān)控圖表信息。新版本中默認(rèn)不勾選,因為需要安裝插件。


          測試成功后點擊保存即可。

          收到Grafana郵件

          內(nèi)容是測試信息


          1.5.3  自定義監(jiān)控項與告警規(guī)則


          配置告警,回到儀表盤進(jìn)行操作。

          添加panel

          修改一個新的標(biāo)題

          Panel title: xuegod64-CPU使用率

          修改監(jiān)控項配置。刪除監(jiān)控項。保留user配置即可。因為我們手工測試只能測試到User監(jiān)控項。刪除AFDC保留B

          metrics  [?metr?ks]  衡量指標(biāo)

          Metrics: (1 - avg(rate(node_cpu_seconds_total{instance=~"xuegod64",mode="idle"}[30s])) by (instance)) * 100Legend: CPU使用率注:idle表示總負(fù)載,system表示系統(tǒng)使用率,user表示用戶使用率。

          只留這個監(jiān)控項參數(shù)

           添加告警

          配置告警規(guī)則。

          xuegod64-cpu使用率報警

          隨便輸出點告警描述信息:

          xuegod64-CPU > 50% (test)

          注:query查詢的時間默認(rèn)是5分鐘的平均數(shù)據(jù),如果想快速觸發(fā)報警可以時間縮短至1m。0.5=50%


          保存配置,點擊按鈕

          點擊save保存即可

          可以看到這里有這個標(biāo)識:

          應(yīng)用一下: 


          1.5.4  壓力測試觸發(fā)告警


          安裝壓力測試工具

          [root@xuegod64 ~]# yum install -y epel-release[root@xuegod64 ~]# yum install -y stress


          對CPU進(jìn)行壓力測試。注:教學(xué)環(huán)境中xuegod64分配了8核心CPU,我們的監(jiān)控指標(biāo)配置的是超過50%告警,則需要將超過半數(shù)的CPU資源耗盡,所以-c參數(shù)大于虛擬機(jī)中CPU核心數(shù)量的一半即可,同學(xué)們根據(jù)自己學(xué)習(xí)環(huán)境進(jìn)行調(diào)整。

          [root@xuegod64 ~]# stress -c 6

          新建終端窗口使用top命令查看系統(tǒng)負(fù)載

          [root@xuegod64 ~]# top

          已經(jīng)創(chuàng)建了6個占用CPU100%的進(jìn)程。

          查看狀態(tài)信息,可以看到pending和發(fā)送郵件間隔了1分鐘。


          查看郵箱

          郵件中可以看到監(jiān)控指標(biāo)數(shù)據(jù)

          Ctrl+C關(guān)閉壓力測試工具

          等待平均負(fù)載指標(biāo)下來后就會收到恢復(fù)郵件。



          -------- THE END --------

          ??


          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天舔天天日天天干 | 成人网站在线视频三级 | 欧美性爱五月天 | 国产精品福利在线观看 | 亚州视频一区 |