天天看點

Prometheus實戰-從0建構高可用監控平台(五)

作者:小毛驢的爛筆頭

當今的網際網路應用系統越來越複雜,其中涉及的元件和服務越來越多,需要進行高效、可靠的監控,以保證系統的穩定性和性能。Prometheus是一款功能強大的開源監控系統,可以實時監控多個次元的名額資料,并支援強大的查詢語言和告警機制,是目前廣泛使用的雲原生應用監控系統之一。

本文檔合集《Prometheus實戰:從0建構高可用監控平台》将從零開始,手把手教您如何建構一套高可用的Prometheus監控平台,涵蓋了以下内容:

1. Prometheus叢集搭建:實作高可用和可擴充的監控系統

2. 動态監控名額:自動發現和注冊要監控的目标

3. 告警機制配置:靈活配置告警規則、分組、過濾、抑制,實時通知異常情況

4. Grafana可視化展示:直覺了解系統運作狀态和趨勢

本文檔合集的目标讀者是具有一定Linux系統和網絡知識的系統管理者和DevOps工程師。通過本文檔合集的學習,您将掌握Prometheus的核心概念和實踐技巧,能夠快速搭建一套高效、可靠的監控平台,幫助您更好地管理和維護複雜的網際網路應用系統。

本文以下内容主要設定Grafana可視化展示。

Grafana

Grafana 是一個流行的開源資料可視化和監控平台,它可以将來自多種資料源的資料進行可視化展示,并支援使用者進行資料查詢、分析、報告和告警等操作。Grafana 提供了豐富的可視化元件和面闆,可以幫助使用者輕松地建立自定義的儀表盤、報表和告警規則等。

Grafana 可以連接配接多種不同類型的資料源,包括開源的時序資料庫如 Prometheus、InfluxDB、Graphite,商業資料庫如 MySQL、PostgreSQL、Microsoft SQL Server,以及日志資料源如 Elasticsearch、Loki 等。Grafana 還支援通過插件擴充更多的資料源和功能。

在 Grafana 中,使用者可以使用靈活的查詢語言和表達式來對資料進行過濾、聚合、計算和可視化展示。Grafana 提供了豐富的可視化元件,包括圖表、表格、地圖、儀表盤等,使用者可以根據需要自由組合和排列這些元件,建立自己的定制化監控面闆。

下面内容主要介紹Grafana安裝,系統模版-跳轉連結, es日志大盤, 同比畫圖, flowcharting, heatmap 等圖形繪圖。

node1節點安裝

cat > /etc/yum.repos.d/grafana.repo <<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

yum install grafana -y
#啟動Grafana服務
systemctl start grafana-server
systemctl status grafana-server

#将Grafana服務設定為開機啟動
systemctl enable grafana-server

#Install additional font packages
yum install freetype* fontconfig urw-fonts -y

#預設賬号和密碼
admin/admin           

從一個模版跳轉到另外一個模版

主機(node_exporter)的dashboard用的是下面的這個模版

https://grafana.com/grafana/dashboards/8919-1-node-exporter-for-prometheus-dashboard-cn-0413-consulmanager/           

先需要模版的 《伺服器資源總覽表》 和 《 資源明細 | 資源明細》, 分成兩個部分, 從 伺服器資源總覽表dashboards上點選主機位址,會跳轉到 資源明細 | 資源明細 這個dashboard。

Prometheus實戰-從0建構高可用監控平台(五)
Data Link:  http://monitor.xxx.com/grafana/d/aka/zhu-ji-zong-he-zi-yuan-jian-kong-xin-xi?orgId=1&var-vendor=&var-account=&var-module=All&var-name=${__data.fields.name}&var-instance=All&var-interval=5m&var-total=1&var-device=All&var-maxmount=%2Fdata&var-show_name=${__data.fields.name}&var-iid=&var-sname=           

使用Prometheus offset繪相對圖形

Prometheus實戰-從0建構高可用監控平台(五)
namedprocess_namegroup_memory_bytes{instance=~"$instance", memtype="resident"} offset 1d           

基于 Elasticsearch + kibana 實作 IP 位址分布地圖可視化

已知的知識點: Elasticsearch 支援 Geo-point、Geo-shape 資料類型。 Kibana 支援 Coordinate Map(坐标圖)、Region Map(區域地圖)可視化地圖展示。

隻缺es能把 IP 位址轉經緯度坐标的資訊這個功能, Ingest 資料預處理管道的 GeoIP processor (處理器)就能達到這個目的。

GeoIp processor 介紹

GeoIP處理器是一種用于處理網絡資料中的地理位置資訊的工具。它通常用于網絡資料分析、網絡安全、廣告定位、反欺詐檢測等領域,可以根據IP位址或其他網絡資料中包含的地理位置資訊,對資料進行處理和分析。

以下是GeoIP處理器的一些常見功能:

IP位址解析:GeoIP處理器可以将輸入的IP位址解析為對應的地理位置資訊,包括國家、地區、城市、經緯度等。這可以幫助使用者了解通路者的地理位置,進而進行更精準的定位和分析。

地理位置資料比對:GeoIP處理器可以将輸入的地理位置資訊與預先定義的地理位置資料進行比對,以便對資料進行分類、篩選、聚合等操作。例如,可以将通路日志中的IP位址與地理位置資料進行比對,以識别來自特定國家或地區的通路流量。

地理位置資訊補全:對于缺乏完整地理位置資訊的資料,GeoIP處理器可以通過補全缺失的地理位置資訊,例如根據IP位址推測通路者的城市或經緯度,進而對資料進行更全面的分析。

地理位置資料統計和可視化:GeoIP處理器可以對地理位置資訊進行統計和可視化,例如生成地理位置分布圖、地理位置熱圖等,以便使用者更直覺地了解通路者的地理位置分布情況。

地理位置資訊驗證:GeoIP處理器可以驗證輸入的地理位置資訊的準确性,例如通過與第三方地理位置資料庫進行比對,進而幫助使用者判斷資料的可靠性和準确性。

地理位置相關的安全檢測:GeoIP處理器可以用于網絡安全領域,例如檢測來自高風險地理位置的通路請求,識别可能的欺詐行為,對惡意活動進行實時響應等。

在 Elasticsearch 早期版本中 GeoIp processor 需要安裝插件才能使用。7.X 版本後,ES 已自帶,不需要安裝。

資料預處理管道

PUT _ingest/pipeline/open_geoip_pipeline
{
  "processors": [
    {
      "grok": {
        "field": "msgJson.addr",
        "patterns": ["%{IPORHOST:ip_address}:%{INT:port}"]
      }
    },
    {
      "geoip": {
        "field": "ip_address",
        "target_field": "geo",
        "ignore_missing": true
      }
    }
  ]
}           

LogStash 寫入es之前使用預處理管道把 索引的ip位址(msgJson.addr)轉化為帶經緯度的位址資訊。

input {
    kafka {
        # Kafka中沒有初始偏移量或偏移量超出範圍時該怎麼辦? 自動将偏移量重置為最新偏移量
        auto_offset_reset => "latest"
        codec => json
        #consumer_id => "fb-open-buff"
        # 消費者線程(預設為1),保證 消費的分區數和線程數一緻以達到完美效果,線程數大于消費的分區數時将會産生空閑線程
        # 如果一個logstash去消費3個分區,則應該設定為3,以提高吞吐量
        consumer_threads => 3
        topics => ["fb-open-buff"]
        bootstrap_servers => "10.x.x.x:9092"
        #送出消費情況, 預設5000ms一次
        auto_commit_interval_ms => 5000
    }
}

filter {
    json {
        source => "message"
        target => "msgJson"
        remove_field => ["message"]
    }
}

output {
    #stdout {
    #  codec => rubydebug
    #}
    elasticsearch {
        hosts => ["http://10.x.x.x:9200"]
        user => 'admin'
        password => 'xxxx'
        index => "fb-open-buff.%{+YYYY.MM.dd}"
        codec => json
        pipeline => "open_geoip_pipeline"   # 指定預處理管道名稱
        template_overwrite => true
    }
}           

繪heatmap圖

圖層類型
圖層樣式類型有三種:markers,heatmap,geojson .

markers:就是最普通的,使用标記來展示資料。可以設定标記的圖示樣式和大小。資料較少時,采用markers樣式是比較好的選擇。

heatmap:熱力圖,即用熱力圖的形式,在地圖上展示資料分布。這種适用于資料點比較多的情況。能夠快速看到哪裡的分布比較密集。

geojson:内置json資料檔案。即導入grafana内置的一些資料。           
Prometheus實戰-從0建構高可用監控平台(五)
資料格式
geomap支援幾種格式的地理位置資料。

1) coords:手動指定經緯度
使用該方式,傳回的資料中必須包含經度和次元資訊。并且手動選擇比對經緯度的字段。

2) geohash:手動指定geohash值

3) lookup:自動查詢比對
根據地理名稱自動查詢比對.

4) auto:自動選擇
自動選擇以上三種方式的一種,且不用手動指定字段。但是相對的,傳回的字段裡面必須嚴格按照規定的命名規則傳回。           
Prometheus實戰-從0建構高可用監控平台(五)

效果

Prometheus實戰-從0建構高可用監控平台(五)

繼續閱讀