搬磚黨的福音:普羅米修斯-監控神器
功能:
- 在業務層用作埋點系統
Prometheus支持多種語言(Go,java,python,ruby官方提供客戶端,其他語言有第三方開源客戶端)。我們可以通過客戶端方面的對核心業務進行埋點。如下單流程、添加購物車流程。
- 在應用層用作應用監控系統
一些主流應用可以通過官方或第三方的導出器,來對這些應用做核心指標的收集。如redis,mysql。
- 在系統層用作系統監控
除了常用軟件, prometheus也有相關系統層和網絡層exporter,用以監控服務器或網絡。 - 集成其他的監控
prometheus還可以通過各種exporte,集成其他的監控系統,收集監控數據,如AWS CloudWatch,JMX,Pingdom等等
Prometheus架構:
prometheus是一個用Go編寫的時序數據庫,可以支持多種語言客戶端,架構如下:
下面說一下這個開源軟件的安裝實踐過程,目標如下:
- 安裝go 語言環境
- 在監控服務器上安裝prometheus
- 在被監控環境上安裝export
- 安裝grafana
具體安裝過程如下:
步驟1:安裝go 語言環境
由於Prometheus 是用golang開發的,所以首先安裝一個go環境,Go語言是跨平台,支持Windows、Linux、Mac OS X等系統,還提供有源碼,可編譯安裝
Windows :go1.8.3.windows-amd64.msi (78MB)
Linux :go1.8.3.linux-amd64.tar.gz (86MB)
Mac :go1.8.3.darwin-amd64.tar.gz (85MB) (推薦)
Source: go1.8.3.src.tar.gz (15MB)
由於國內需要翻牆:所以我是通過某些國內資源下載的:https://download.csdn.net/download/cuipuke/10048498
下載后,上傳到要部署的服務器(部署服務器和外網隔離,所以轉了一道)。解壓縮然后修改配置文件
[root@archive soft]# tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
[root@archive soft]# vim /etc/profile
在文件的最后添加如下內容:
export PATH=$PATH:/usr/local/go/bin
保存退出后,接着讓配置文件立刻生效:
[root@archive aiops]# source /etc/profile
驗證一下是否成功,用go version 來驗證
[root@archive aiops]# go version
go version go1.8.3 linux/amd64
步驟2:在監控服務器上安裝prometheus
開始安裝prometheus,首先先去官網下載對應系統的版本:https://prometheus.io/download/,如下圖:
下載后上傳到部署的服務器,在服務上執行如下命令解壓(root用戶,解壓到 /usr/local):
tar -vxf prometheus-2.3.2.linux-amd64.tar.gz -C /usr/local/
為了以后進入目錄方便,做了一個軟連接:
ln -sv /usr/local/prometheus-2.3.2.linux-amd64/ /usr/local/Prometheus
接着要配置一下監控的配置文件:prometheus.yml
配置完成后,只需要運行起來這個軟件:
[root@archive prometheus]# ./prometheus
通過如下URL可以打開prometheus的自帶監控界面: IP:9090,點擊targets 跳轉到監控目標,這里展現了多個監控對象。紅框的表示部署的prometheus
說明:上圖中117 顯示藍色是因為,117已經安裝了export,其他未安裝的顯示為紅色。
步驟3:在系統層用作系統監控exporter
以在159這台主機為例,安裝exporter ,這台linux環境是centos,因此用的監控export是node_exporter-0.16.0.linux-amd64.tar.gz ,首先在官網下載這個文件,然后上傳到被監控的主機(作為部署服務的主機上也需要安裝 export),因此下載並部署后,執行如下命令:
tar xvf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
nohup /usr/local/node_exporter-0.16.0.linux-amd64/node_exporter &
執行后,我們回到prometheus查看監控目標,可以看到159主機也顯示為藍色了。
啟動后,可以看到159主機已經變成藍色,正常up 狀態。其他幾台116,117,118 主機也通過先安裝go環境,再安裝export的方式,進行監控起來。
接下來說一下oracle主機115的監控,Oracle的監控,需要用到第三方寫的export。prometheus是開源軟件提供了多種語言支持,因此有很多第三方的exporter實現,https://prometheus.io/docs/instrumenting/exporters/ 官網這里有介紹一些第三方的鏈接:
通過這個可以找oracle的第三方exporter,這是一個git工程https://github.com/iamseth/oracledb_exporter
這里面,找到
通過releases找到適合自己的版本,我直接用的是二進制文件,圖中執行這里標紅色,參數語法有問題,具體應該如下:
./oracledb_exporter.linux-amd64 -log.level error -web.listen-address IP:9161
下面看一下具體情況:
上傳下面文件到部署的服務器(需要有安裝oracle客戶端,這樣才能連的上數據庫,這里因為已經安裝了oracle客戶端,略了客戶端安裝)
[oracle@localhost soft]$ ls -ltr
總用量 93296
-rw-r--r-- 1 oracle dba 90029041 9月 5 13:57 go1.8.3.linux-amd64.tar.gz
-rwxr-xr-x 1 oracle dba 5502288 9月 5 13:57 oracledb_exporter.linux-amd64
1、首先安裝go 環境,與上面相同,這里略過
2、接着將二進制文件運行起來,步驟如下:
修改執行權限
[root@localhost soft]# chmod +x oracledb_exporter.linux-amd64
再設置執行的環境變量,命令行直接執行如下命令export:
export DATA_SOURCE_NAME=用戶名/密碼@ 數據庫服務名
啟動服務
./oracledb_exporter.linux-amd64 -log.level error -web.listen-address IP:9161
步驟4:給prometheus換一個面板
下面給監控換一個dashboard,這里用的是grafana,下載地址https://grafana.com/grafana/download,
如果部署的服務器可以聯網可以直接執行下面命令:
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.3-1.x86_64.rpm
sudo yum localinstall grafana-5.2.3-1.x86_64.rpm
如果不能,只能先下載再部署。rpm包的安裝也很簡單,執行如下命令
[root@archive soft]# rpm -i grafana-5.2.3-1.x86_64.rpm
接着把grafana加入到系統服務,將服務啟動
[root@archive soft]# sudo /sbin/chkconfig --add grafana-server
[root@archive soft]# sudo service grafana-server start
Starting Grafana Server: ...
啟動后,打開如下URL,端口采用默認的3000,http://10.1.4.159:3000/
輸入默認的admin/admin
進去后會要求修改密碼,然后點擊add datasource,選中 Prometheus 2.0 Stats后,就可以呈現如下的監控面板了:
有同事說比較丑。好吧,美丑自在人心,哈哈。