虛擬網(wǎng)站什么是搜索引擎營銷?
我們在進行測試時,不可能一直手動看著服務器的性能消耗,這時候就需要有個工具替我們監(jiān)控服務器的性能消耗。這里記錄下grafana+Prometheus+nodeExporter的組合用于監(jiān)控服務器。
簡單介紹:
grafana:看板工具,所有采集的性能數(shù)據(jù)都會展示在這個看板上,官網(wǎng): link
Prometheus: 監(jiān)控系統(tǒng),數(shù)據(jù)的采集、存儲、查詢等主要功能都是在它這里,參考文檔: link
node_exporter:其是Prometheus的一個采集組件,可以用來采集機器上的數(shù)據(jù),并暴露接口給Prometheus,以此將數(shù)據(jù)傳過去。
這是prometheus官網(wǎng)的架構圖,可以參考這個看一下
我這里簡單概述一下我們使用到的功能,即node_exporter采集機器節(jié)點上的性能數(shù)據(jù),并將數(shù)據(jù)傳給Prometheus處理,grafana再從Prometheus那里獲取數(shù)據(jù)展示在看板上。(exporter有多種類型,比如采集容器的,mysql的,這里node_exporter直接是采集整個機器的)
本文grafana和Prometheus是使用docker安裝部署的,如果機器上未裝docker,可參考鏈接: link
本文為最新的安裝流程,可直接按照該流程安裝部署。
1.安裝grafana
命令為:
docker run -d -p 3000:3000 --name=grafana grafana/grafana-oss
2.安裝Prometheus
1.配置Prometheus的配置文件
mkdir -p /opt/monitor/prometheus
tee /opt/monitor/prometheus/prometheus.yml <<- 'EOF'
global:# 拉取規(guī)則scrape_interval: 10s# 執(zhí)行規(guī)則頻率evaluation_interval: 10sscrape_configs:- job_name: prometheus # 任務名static_configs:- targets: ['localhost:9100'] # 地址和端口,注意如果是docker安裝的話,這個loalhost要替換成ip地址
EOF
這里的地址如果是采集本機的,寫localhost即可,要是采集其它機器的,可以填對應的ip(這里的端口不是9090,而是9100,與下面的node_exporter對應的;而且如果是docker安裝的話,這個loalhost要替換成機器的ip地址,不然容器內部根據(jù)localhost可識別不了機器實際的ip)
2.用配置文件部署啟動Prometheus
docker run -d -p 9090:9090 -v /opt/monitor/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name=prometheus prom/prometheus
3.安裝node_exporter
這里安裝node_exporter是手動安裝的,為什么不用docker直接安裝呢,這是因為docker安裝的exporter是在容器里面的,從容器里采集機器本機的數(shù)據(jù)的時候并不完全,有時會導致和實際數(shù)據(jù)相差較大(本人已踩過坑),這里建議手動安裝到機器上。
下載地址: link
直接下載下來傳到機器上并解壓
然后我們配置服務啟動項
tee /etc/systemd/system/node_exporter.service <<- 'EOF'
[Unit]
Description=node_exporter
After=network.target[Service]
ExecStart=/opt/monitor/node_exporter/node_exporter --web.listen-address=:9100[Install]
WantedBy=multi-user.target
EOF
配置完成后,我們啟動服務
systemctl enable node_exporter # 不是root用戶前面都加一下sudo
systemctl start node_exporter
systemctl status node_exporter
4.監(jiān)控服務串聯(lián)
至此,我們各個模塊都是各自安裝完了,接下來我們把它們連成一個整體,首先看下node_exporter和Prometheus能否正常訪問。
node exporter和Prometheus
查看node_exporter:可以瀏覽器直接訪問http://192.168.238.128:9100/,這里192.168.238.128就是我linux機器的地址
顯示無法訪問。。。排查了一下,防火墻忘記關了。自己內網(wǎng)用的機器平時可以把防火墻關了(docker安裝的服務端口未被防火墻限制,手動安裝的服務端口會被限制)
這時再重新訪問下
這里就是其采集的信息,可以看出采集服務已正??捎昧恕?br /> 然后我們看下Prometheus,瀏覽器直接訪問http://192.168.238.128:9090/
也沒問題,我們在上面輸入框輸點東西試一下數(shù)據(jù)能不能傳上來
100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))
可以看出數(shù)據(jù)已經(jīng)傳上來了,這里時間不太對,應該是時區(qū)的問題嗎,暫時不用管。至此,node exporter和Prometheus的對接正常了。
grafana配置
然后我們登錄grafana:http://192.168.238.128:3000/
這里初始用戶名密碼是admin/admin,登錄后可以修改下密碼,grafana這里我們主要是配置下數(shù)據(jù)源以及展示模版,因為Prometheus那里的數(shù)據(jù)還沒有和grafana對接,而且展示的數(shù)據(jù)也未經(jīng)進一步處理,展示效果一般。
配置數(shù)據(jù)源:
進去找一下data sources,幾個版本的grafana位置是不一樣的,這個自己找一下即可
這里選擇Prometheus
配置頁面配置下名稱(可使用默認的),以及連接的url,這個就是Prometheus的地址和端口,即我們上面訪問的http://192.168.238.128:9090/
其他的默認即可,最后點擊這個save&test,連接正常會彈出綠色的提示
到這里數(shù)據(jù)源就配置完成了。
導入監(jiān)控模版:
這時候的數(shù)據(jù)都是Prometheus處理過的,雖然也有圖表,但是比較簡單,我們可以導入一個看板的模版,使其展示更加豐富,更加友好。(也可以自己寫新的)
我們訪問https://grafana.com/grafana/dashboards/這個網(wǎng)址,上面有已有的模版,可以查看下哪個適合我們
在這邊搜索node exporter可以搜索出所有node exporter的模版
這里我們就選用第一個,點擊進去
這里有兩個選項,一個是復制id,一個是下載json,這里我們直接復制id好了。這個json其實就是模版文件了,但是我們也可以用id來自動導入。
然后我們進入自己搭建的grafana頁面,點擊這個import(各個版本的UI略有不同,按鍵位置可能也不同)
這里輸入剛剛復制的id,然后點擊load
加載完成后進入這個頁面
這里選我們剛剛配好的數(shù)據(jù)源
然后點擊import,就跳轉到看板頁面了,如果頁面沒有數(shù)據(jù),可查看左上角這幾個選項是不是正確;或者可以等一會,也有可能數(shù)據(jù)還沒有上傳上來。
至此,監(jiān)控服務就部署好了,無論是做性能還是可靠性,我們可以對服務器進行長時間監(jiān)測了。
問題記錄:
實際部署時,也遇到了一些其他問題,這里記錄下:
1.導入Node Exporter Full監(jiān)控模版(id為1860)時,grafana一直報找不到方法,這個主要是1860這個模板和grafana當前版本不兼容,更新grafana即可。
2.監(jiān)控數(shù)據(jù)不準確的問題,這個上面已經(jīng)提到,解決辦法是node_exporter手動直接安裝在服務器上。
3.Prometheus可添加多個監(jiān)控節(jié)點,網(wǎng)絡能正常連通即可,修改Prometheus配置文件后需重啟下服務。