Prometheus - 普羅米修斯 - 日誌監控mtail嘗試

小_杭發表於2020-12-02

Prometheus - 普羅米修斯


計劃 及 參考文章

  • Prometheus 【監控神器普羅米修斯】

    • Prometheus監控報警系統:https://www.cnblogs.com/chenqionghe/p/10494868.html

    • 官方文件:https://prometheus.io/docs/introduction/overview/

    • 簡書:https://www.jianshu.com/p/93c840025f01

    • Prometheus+ Grafana :https://www.cnblogs.com/sunyllove/p/11212835.html

    • SpringBoot 1.4.x 1.x + Prometheus + Granfan 監控體系搭建

    • 入門教程:https://www.jianshu.com/p/28f71ea99e3a

    • 報警外掛:Alertmanager

    • 如何將日誌輸入Prometheus?【官方說明】

      簡短的回答:不要!請改用ELK堆疊之類的東西。

      更長的答案:Prometheus是一個收集和處理指標的系統,而不是事件記錄系統。Raintank部落格文章 Logs and Metrics and Graphs,Oh My! 提供有關日誌和指標之間差異的更多詳細資訊。

    • 建議您使用Grafana進行生產。也有控制檯模板

    • Pushgateway : https://www.cnblogs.com/shhnwangjian/p/10706660.html

    • mtail : 可以從應用程式日誌中提取指標,並將其匯出到時間序列資料庫或時間序列計算器中,以便配置警報和儀表盤的工具。

    • 操作指南:https://www.bookstack.cn/read/prometheus-book/README.md

    • 《Prometheus監控實戰》第9章 日誌監控: https://cloud.tencent.com/developer/article/1556769

    • 容器領域的十大監控系統對比: https://zhuanlan.zhihu.com/p/57740192


介紹

Prometheus 是一個開源的系統監控和警報工具包。非常適合記錄時間序列資料,比如可以記錄機器CPU、Memory的使用情況;也可以在微服務中收集各個維度的資訊。

而,商圈專案那邊,用的確實用這個來收集日誌資料,進行處理的。
感覺與官方的推薦相悖啊
ε=(´ο`*)))唉

關於它的特點就不介紹了,官方有各種好聽的說法,我覺得重點還是在與他是個生態系統。

其本身,就是一個存時間序列的資料集【資料庫】,支援拉取資料,以及擁有外圍元件生態的東東。

簡單說明下特點:
多種圖表和儀表盤,靈活的查詢語言(PromQL),支援push資料到中介軟體(pushgateway)。

Prometheus生態系統由多個元件構成,其中多是可選的,根據具體情況選擇

  • Prometheus server - 收集和儲存時間序列資料
  • client library - 用於client訪問server/pushgateway
  • pushgateway - 對於短暫執行的任務,負責接收和快取時間序列資料,同時也是一個資料來源
  • exporter - 各種專用exporter,面向硬體、儲存、資料庫、HTTP服務等
  • alertmanager - 處理報警
  • Grafana - 度量分析和視覺化工具
  • 其他各種支援的工具

官方給的架構:

img

差不多就是這個樣子了。

說法上,用來監控各個專案服務情況,JVM的使用情況等的效能資料,很是合適的。


安裝Promotheus

為了方便,當然是在docker上搞咯;

先準備個配置:

vim /u01/promotheus/promotheus.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).
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['localhost:9090']

然後建立開啟容器:

docker run \
    -p 9090:9090 \
    -v /u01/promotheus/promotheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

對,這個樣子就可以了。

然後訪問:http://192.168.1.180:9090 ,就可以看到東東了。【當然要翻譯了,英文看不懂 ╮(╯_╰)╭】

exporter 各種匯出器 -> Promotheus

先搞點資料進去看看,會是什麼樣子的。

prometheus官方下載地址:https://prometheus.io/download/
go官方下載地址:https://golang.org/dl/
64位下載包地址(此地址下載比較快):https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

有好多的匯出器,先搞個機器本身資料的試試:node_exporter - 機器指標匯出器;

node_exporter配置參考:

安裝配置:https://www.jianshu.com/p/7bec152d1a1f
資料監控配置:https://www.cnblogs.com/minseo/p/13403478.html 【很實用】
exporter種類參考:https://www.bookstack.cn/read/prometheus-book/exporter-what-is-prometheus-exporter.md

完成後,請使用上面這個資料監控配置,查詢資料。語法我還不會,先copy用著吧。

安裝配置node_exporter

wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar xvf node_exporter-1.0.1.linux-amd64.tar.gz
[root@localhost node_exporter-1.0.1.linux-amd64]# nohup ./node_exporter
nohup: 忽略輸入並把輸出追加到"nohup.out"
[root@localhost node_exporter-1.0.1.linux-amd64]# ps -ef |grep node
root     15542 15184  0 14:11 pts/0    00:00:00 ./node_exporter
root     15554 15184  0 14:11 pts/0    00:00:00 grep --color=auto node
curl http://192.168.1.180:9100/metrics 
...... # 這裡就可以看到一堆的資訊了

配置Promotheus 拉取資料

vim /u01/promotheus/promotheus.yml
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'linux-180'
    static_configs:
      - targets: ['192.168.1.180:9100']
        labels:
          instance: node1
:qw
# 然後去重啟Promotheus ,我就直接docker重啟了 

然後再訪問就有資料啦!!!!

在這裡插入圖片描述
在這裡插入圖片描述

Promotheus 服務的東東,先就這樣吧。可以各種操作統計資料,然後懶得試了,以後再研究了。

這裡就玩個表面的東東了先 ┐(゚~゚)┌

安裝Grafana

Grafana官網(https://grafana.com/)

安裝什麼的,檢視官方的就行了,無論在什麼平臺的好像都有詳細的文件的。o( ̄▽ ̄)d

docker run  -d --name grafana -p 3000:3000  grafana/grafana
# http://192.168.1.180:3000/    預設 admin:admin

然後參考文章:https://www.cnblogs.com/imyalost/p/9873641.html 進行玩耍。

或者,像我一樣隨便玩 (~ ̄▽ ̄)~

建立好資料來源,建立儀表盤,然後把在上面用的查詢語句,copy進去就可以了:

在這裡插入圖片描述

Grafana-的好用處就是,花裡胡哨。可以弄出來灰常好看很有噱頭的儀表盤主頁 罒ω罒

在這裡插入圖片描述

花裡胡哨的儀表盤 罒ω罒

儀表盤匯入教程參考:https://www.cnblogs.com/imyalost/p/9873641.html

  • 資料庫:https://github.com/percona/grafana-dashboards
  • 官方就有很多的儀表盤:BashBoard地址:BashBoard
    • 只要一個id就可以完成儀表盤匯入了 罒ω罒
    • 而且足夠的豐富,足夠的花裡胡哨。(~ ̄▽ ̄)~
  • Node Exporter Full:https://github.com/rfrail3/grafana-dashboards/blob/master/prometheus/node-exporter-full.json

這才是花裡胡哨:

在這裡插入圖片描述



日誌監控 -> Promotheus

參考文章:https://cloud.tencent.com/developer/article/1556769

可選方案:

  • grok_exporter(https://github.com/fstab/grok_exporter)
  • mtail的Google實用程式(https://github.com/google/mtail)
    • 配置:https://blog.csdn.net/bluuusea/article/details/105508897

選用mtail,官方說明就是:從應用程式日誌中提取白盒監視資料以收集到時間序列資料庫中;【完全符合的】

mtail -測試

安裝配置mtail
wget https://github.com/google/mtail/releases/download/v3.0.0-rc38/mtail_v3.0.0-rc38_linux_amd64
chmod 777 mtail_v3.0.0-rc38_linux_amd64
mv mtail_v3.0.0-rc38_linux_amd64 mtail
# sudo cp mtail /usr/local/bin 這個我就不操作到系統使用者下了
 ./mtail --version
mtail version v3.0.0-rc38 git revision 0601c73197c5e314dcf3e27218de8f8ad5a83691 go version go1.15.2 go arch amd64 go os linux

# 測試  
 touch line_count.mtail
 vim line_count.mtail
# 去這裡找一個合適的配置     https://github.com/google/mtail/tree/master/examples

./mtail -logtostderr --progs /u01/mtail/line_count.mtail  --logs '/u01/happyPay/admin/logs/admin-log/*.log'
# nohup ./mtail -port 3903 -logtostderr -progs /u01/mtail/line_count.mtail -logs '/u01/happyPay/admin/logs/admin-log/*.log' >/dev/null 2>&1 &

# 訪問http://192.168.1.194:3903/ 就可以看到資訊了

雖然看不懂,但是感覺有點內容了。

在這裡插入圖片描述

配置普羅米修斯
  - job_name: 'mtail-194'
    static_configs:
      - targets: ['192.168.1.194:3903'] 
        labels:
          instance: log-dev

重啟,載入配置之後,可以看到抓取點已經配置進去了。

在這裡插入圖片描述

雖然這裡已經有資料了,但是這些資料不能用啊,都是些沒什麼用的量,比如日誌檔案數量啥的。

我麼真正想要的是:分析日誌的資料,各個介面等的東西。

這結果算是成功,後續還要自己寫分析日誌的配置。

調整mtail配置-日誌分析

由於各個專案的日誌格式不同,這裡如有想做日誌分析,辣麼在mtial這裡就需要用正規表示式進行建立對應的指標了。

可以分組的,依據各個內容引數。【如果日誌格式確定的話,多專案也可同時使用】

栗子-統計報錯原因

mtail配置檔案:

counter error_type by type

/^.+Exception:(?P<type>.*)/ {
  error_type[$type]++ 
}

結果資料:

error_type{prog="line_count.mtail",type=" 使用者名稱或密碼錯誤"} 2
error_type{prog="line_count.mtail",type=" 使用者名稱或密碼錯誤] with root cause"} 1

恩,差不多就這樣了,學不動了 ε=(´ο`)))唉*

日誌監控小結

這個日誌監控,如果是專案日誌還是用ELK的好啊!
中介軟體的日誌:比如nginx,是可以使用這個的,畢竟有裝本的exporter.【日誌格式一般是標準的】

一定要做的話,需要在mtail收集的地方,就要配置各種的指標了,對運維還是有點要求和工作量的。

對比於ELK的全量檔案匯入,進行全文檢索,進行後續分析。這個的動態可配置性就差了很多了。


小結

Prometheus這一套監控系統,在對硬體以及中介軟體的監控上灰常的強大,且配置使用成本低。
【硬體:本身linux機子;中介軟體:資料庫,nginx等】

需要使用各種官方提供的匯出器【exporter】+ Grafana的官方儀表盤,這種組合很炫,還很輕鬆。

如果是專案日誌監控,使用起來需要在收集器進行指標分析等的了。【專案日誌標準話是在哪都推薦的】
這樣,在Grafana才可以進行再次分析展示出來。

所以日誌監控,還是建議使用ELK啊。。。ε=(´ο`*)))唉 雖然學習成本比較高,但是運維輕鬆啊!【使用交給專案人員自己查詢即可】

其他

至於,Prometheus還有其他的元件,比如重要的報警外掛:Alertmanager 等,已經學不動了。

以後有機會再研究了。。。。。。。。


小杭 2020-12 (((┏(; ̄▽ ̄)┛裝完逼就跑


相關文章