Linux下打造全方位立體監控系統

来源:http://www.cnblogs.com/smallSevens/archive/2017/11/08/7805842.html
-Advertisement-
Play Games

前言 本文主要介紹如何使用Grafana和Prometheus以及node_exporter對Linux伺服器性能進行監控。下麵兩張圖分別是兩台伺服器監控信息: 伺服器A 伺服器B 概述 Prometheus是一個開源的服務監控系統,它通過HTTP協議從遠程的機器收集數據並存儲在本地的時序資料庫上。 ...


前言

本文主要介紹如何使用Grafana和Prometheus以及node_exporter對Linux伺服器性能進行監控。下麵兩張圖分別是兩台伺服器監控信息:

伺服器A

伺服器B

概述

Prometheus是一個開源的服務監控系統,它通過HTTP協議從遠程的機器收集數據並存儲在本地的時序資料庫上。

  • 多維數據模型(時序列數據由metric名和一組key/value組成)
  • 在多維度上靈活的查詢語言(PromQl)
  • 不依賴分散式存儲,單主節點工作.
  • 通過基於HTTP的pull方式採集時序數據
  • 可以通過push gateway進行時序列數據推送(pushing)
  • 可以通過服務發現或者靜態配置去獲取要採集的目標伺服器
  • 多種可視化圖表及儀錶盤支持

Prometheus通過安裝在遠程機器上的exporter來收集監控數據,後面我們將使用到node_exporter收集系統數據。

架構

Grafana 是一個開箱即用的可視化工具,具有功能齊全的度量儀錶盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風格,支持多個數據源特點。

架構

安裝

Exporter

下載並解壓:

#下載
wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.15.0.linux-amd64.tar.gz -O node_exporter-0.15.0.linux-amd64.tar.gz
# 可自定義解壓目錄
tar -xvf node_exporter-0.15.0.linux-amd64.tar.gz

運行node_exporter:
## 後臺運行 ./node_exporter &

Prometheus

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

執行以下命令:

## 下載
wget https://github.com/prometheus/prometheus/releases/download/v2.0.0-rc.3/prometheus-2.0.0-rc.3.linux-amd64.tar.gz
## 可自定義解壓目錄
tar -xvf prometheus-2.0.0-rc.3.linux-amd64.tar.gz

配置prometheus,vi prometheus.yml

global:
  scrape_interval:     15s
  evaluation_interval: 15s
  
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
          
  - job_name: linux1
    static_configs:
      - targets: ['192.168.1.120:9100']
        labels:
          instance: sys1
          
  - job_name: linux2
    static_configs:
      - targets: ['192.168.1.130:9100']
        labels:
          instance: sys2

IP對應的是我們內網的伺服器,埠則是對應的exporter的監聽埠。

運行Prometheus

./prometheus 
level=info ts=2017-11-07T02:39:50.220187934Z caller=main.go:215 msg="Starting Prometheus" version="(version=2.0.0-rc.2, branch=HEAD, revision=ce63a5a8557bb33e2030a7756c58fd773736b592)"
level=info ts=2017-11-07T02:39:50.22025258Z caller=main.go:216 build_context="(go=go1.9.1, user=root@a6d2e4a7b8da, date=20171025-18:42:54)"
level=info ts=2017-11-07T02:39:50.220270139Z caller=main.go:217 host_details="(Linux 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 iZ2ze74fkxrls31tr2ia2fZ (none))"
level=info ts=2017-11-07T02:39:50.223171565Z caller=web.go:380 component=web msg="Start listening for connections" address=0.0.0.0:9090
......

啟動成功以後我們可以通過Prometheus內置了web界面訪問,http://ip:9090 ,如果出現以下界面,說明配置成功

Grafana

執行以下安裝命令:

## 安裝依賴grafana運行需要go環境
yum install  go -y
## 安裝 grafana
yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1-1.x86_64.rpm -y

安裝包信息:

二進位文件: /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

你可以執行以下啟動命令:

service grafana-server start

啟動grafana,並設置開機啟動:

systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server.service

伺服器端圖像(PNG)渲染是可選的功能,但在共用可視化時非常有用,例如在警報通知中。
如果圖像缺少文本,請確保已安裝字體包。

yum install fontconfig
yum install freetype*
yum install urw-fonts

訪問Grafana通過Nginx代理,預設登錄用戶名密碼:admin/admin,需及時修改。

server {
        listen       80;
        server_name  grafana.52itstyle.com;

        charset utf-8;

        location / {
            default_type text/html;
            proxy_pass http://127.0.0.1:3000;
        }

}

編輯配置文件/etc/grafana/grafana.ini ,修改dashboards.json段落下兩個參數的值:

[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards

安裝儀錶盤JSON模版:

git clone https://github.com/percona/grafana-dashboards.git
cp -r grafana-dashboards/dashboards /var/lib/grafana/

最後,通過service grafana-server start命令啟動服務,訪問地址:http://grafana.52itstyle.com

5.png

然後在Data Sources選項中添加數據源:

添加成功以後,我們就可以查看到文章開頭的效果圖了。

總結

講道理,這一套東西還是很強大的,各種開源組間一整合完美搭建出一套監控系統。當然了以上僅僅是系統的一個監控,Grafana以及exporter組間還可以實現對Nginx、MySql、Redis以及MongDB的監控。

監控不是目的,目的是出現問題能夠及時發現並解決問題。

Grafana系統監控之Redis

Grafana系統監控之郵件報警功能

Grafana系統監控之釘釘報警功能

參考資料

https://grafana.com/

https://prometheus.io/

https://github.com/prometheus

https://github.com/prometheus/node_exporter

https://github.com/percona/grafana-dashboards

https://www.percona.com/blog/2016/02/29/graphing-mysql-performance-with-prometheus-and-grafana/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQL Server 2008資料庫的備份與還原基礎知識 ...
  • 前面介紹了視圖的概念和作用,接下來簡單的用實例SQL來展現視圖。 例如:首先,創建表e_information、表e_shareholder: 然後插入表數據等,在此,這簡單的部分我就省略了,直接寫視圖SQL。 創建視圖語句:CREATE VIEW + 視圖名(欄位1,欄位2......) AS S ...
  • 以win7啟動管理器引導作為啟動引導 安裝一個easybcd 然後裡面添加引導選項(添加新條目 >編輯引導菜單(選擇倒計時30秒) >我的電腦--屬性--高級系統設置 啟動和故障恢復 預設操作系統設置為win7即可) 同時也可以用msconfig設置 win+R打開運行 裡面輸入 msconfig ...
  • MongoDB是一個基於分散式文件存儲的資料庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。他支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較 ...
  • 安裝docker 檢查curl包是否安裝? which curl 如果curl沒有安裝的話,則先更新apt源,並安裝curl,如下: apt-get updateapt-get install curlapt-get updatewget -qO- https://get.docker.com/ | ...
  • 在linux系統下開發C 程式卻會遇到系統不支持conio.h頭文件,無法使用getch()不回顯函數。下麵就演示如何構建函數實現數值輸入不回顯。 運行結果: 說明:Linux下C編程遇到要輸入密碼的問題,可輸入的時候密碼總不能讓人看見吧,本來想用getch()來解決輸入密碼無回顯的問題的,不料Li ...
  • 起始: 待寫…… ...
  • Centos 7 使用firewalld代替了原來的iptables,使用方法如下: >>>關閉防火牆 systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall開機啟動 >> ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...