一俐填、Grafana介紹
Grafana是一個(gè)跨平臺(tái)的開源的度量分析和可視化工具,可以通過將采集的數(shù)據(jù)查詢?nèi)缓罂梢暬恼故鞠韬觯⒓皶r(shí)通知英融。它主要有以下六大特點(diǎn):
- 展示方式:快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標(biāo)和日志歇式,官方庫(kù)中具有豐富的儀表盤插件驶悟,比如熱圖、折線圖材失、圖表等多種展示方式痕鳍;
- 數(shù)據(jù)源:Graphite,InfluxDB,OpenTSDB笼呆,Prometheus熊响,Elasticsearch,CloudWatch和KairosDB等诗赌;
- 通知提醒:以可視方式定義最重要指標(biāo)的警報(bào)規(guī)則汗茄,Grafana將不斷計(jì)算并發(fā)送通知,在數(shù)據(jù)達(dá)到閾值時(shí)通過Slack铭若、PagerDuty等獲得通知洪碳;
- 混合展示:在同一圖表中混合使用不同的數(shù)據(jù)源,可以基于每個(gè)查詢指定數(shù)據(jù)源叼屠,甚至自定義數(shù)據(jù)源偶宫;
- 注釋:使用來自不同數(shù)據(jù)源的豐富事件注釋圖表,將鼠標(biāo)懸停在事件上會(huì)顯示完整的事件元數(shù)據(jù)和標(biāo)記环鲤;
- 過濾器:Ad-hoc過濾器允許動(dòng)態(tài)創(chuàng)建新的鍵/值過濾器纯趋,這些過濾器會(huì)自動(dòng)應(yīng)用于使用該數(shù)據(jù)源的所有查詢。
二冷离、prometheus介紹
Prometheus是一個(gè)開源的系統(tǒng)監(jiān)控和報(bào)警系統(tǒng)吵冒,現(xiàn)在已經(jīng)加入到CNCF基金會(huì),成為繼k8s之后第二個(gè)在CNCF托管的項(xiàng)目西剥,在kubernetes容器管理系統(tǒng)中痹栖,通常會(huì)搭配prometheus進(jìn)行監(jiān)控,同時(shí)也支持多種exporter采集數(shù)據(jù)瞭空,還支持pushgateway進(jìn)行數(shù)據(jù)上報(bào)揪阿,Prometheus性能足夠支撐上萬(wàn)臺(tái)規(guī)模的集群。
- 多維度數(shù)據(jù)模型
每一個(gè)時(shí)間序列數(shù)據(jù)都由metric度量指標(biāo)名稱和它的標(biāo)簽labels鍵值對(duì)集合唯一確定:這個(gè)metric度量指標(biāo)名稱指定監(jiān)控目標(biāo)系統(tǒng)的測(cè)量特征(如:http_requests_total- 接收http請(qǐng)求的總計(jì)數(shù))咆畏。labels開啟了Prometheus的多維數(shù)據(jù)模型:對(duì)于相同的度量名稱南捂,通過不同標(biāo)簽列表的結(jié)合, 會(huì)形成特定的度量維度實(shí)例。(例如:所有包含度量名稱為/api/tracks的http請(qǐng)求旧找,打上method=POST的標(biāo)簽溺健,則形成了具體的http請(qǐng)求)。這個(gè)查詢語(yǔ)言在這些度量和標(biāo)簽列表的基礎(chǔ)上進(jìn)行過濾和聚合钮蛛。改變?nèi)魏味攘可系娜魏螛?biāo)簽值鞭缭,則會(huì)形成新的時(shí)間序列圖。 - 靈活的查詢語(yǔ)言(PromQL):可以對(duì)采集的metrics指標(biāo)進(jìn)行加法魏颓,乘法岭辣,連接等操作;
- 可以直接在本地部署甸饱,不依賴其他分布式存儲(chǔ)沦童;
- 通過基于HTTP的pull方式采集時(shí)序數(shù)據(jù);
- 可以通過中間網(wǎng)關(guān)pushgateway的方式把時(shí)間序列數(shù)據(jù)推送到prometheus server端;
- 可通過服務(wù)發(fā)現(xiàn)或者靜態(tài)配置來發(fā)現(xiàn)目標(biāo)服務(wù)對(duì)象(targets)搞动。
- 有多種可視化圖像界面,如Grafana等渣刷。
- 高效的存儲(chǔ)鹦肿,每個(gè)采樣數(shù)據(jù)占3.5 bytes左右,300萬(wàn)的時(shí)間序列辅柴,30s間隔箩溃,保留60天,消耗磁盤大概200G碌嘀。
- 做高可用涣旨,可以對(duì)數(shù)據(jù)做異地備份,聯(lián)邦集群股冗,部署多套prometheus霹陡,pushgateway上報(bào)數(shù)據(jù)
三、前期準(zhǔn)備
我將搭建三個(gè)虛擬機(jī)止状,一臺(tái)安裝grafana烹棉、prometheus,用作監(jiān)控匯總展示的主機(jī)怯疤,其它兩臺(tái)是被監(jiān)控的浆洗,上面會(huì)按需安裝prometheus的exporter。
- oracle vm virtualbox 創(chuàng)建虛擬機(jī)
- cmder 命令行工具
- centos7
創(chuàng)建虛擬機(jī)以及配置網(wǎng)絡(luò)的過程這里就不贅述了
四集峦、grafana下載安裝
在 grafana官網(wǎng) 查找最新版本的grafana安裝包
登錄服務(wù)器1伏社,按你喜好找一個(gè)安裝grafana的目錄,我是在根目錄下的packages文件夾中安裝
cd /packages
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm
yum install grafana-enterprise-8.3.3-1.x86_64.rpm
// 設(shè)置grafana為開機(jī)自啟
systemctl daemon-reload // 加載新的systemd配置
systemctl enable grafana-server // 設(shè)置開機(jī)自啟
systemctl start grafana-server // 啟動(dòng)grafana
systemctl status grafana-server // 查看進(jìn)程啟動(dòng)狀態(tài)
grafana啟動(dòng)默認(rèn)會(huì)占用3000端口塔淤,可以在瀏覽器通過ip:3000的方式打開grafana管理界面
如果打不開摘昌,可能是防火墻沒有開放3000端口
// 加上--permanent會(huì)永久開啟
firewall-cmd --zone=public --add-port=3000/tcp --permanent
// 開啟后要重啟防火墻
firewall-cmd --reload
// 查看已開放的端口
firewall-cmd --zone=public --list-ports
五、prometheus下載安裝
去 prometheus官網(wǎng) 查找prometheus的最新包地址
// 在/packages目錄下
wget https://github.com/prometheus/prometheus/releases/download/v2.33.0-rc.0/prometheus-2.33.0-rc.0.linux-amd64.tar.gz
// 下載得到prometheus-2.33.0-rc.0.linux-amd64.tar.gz文件
tar xvfz prometheus-2.33.0-rc.0.linux-amd64.tar.gz
// 解壓得到prometheus-2.33.0-rc.0.linux-amd64文件夾高蜂,用mv命令改個(gè)簡(jiǎn)單的名字
mv prometheus-2.33.0-rc.0.linux-amd64 prometheus
下一步第焰,進(jìn)入prometheus文件夾,修改prometheus.yml文件
# 這是官網(wǎng)上提供的最簡(jiǎn)配置
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
設(shè)置prometheus開機(jī)自啟
// 創(chuàng)建文件 /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
[Service]
ExecStart=/packages/prometheus/prometheus \
--config.file=/packages/prometheus/prometheus.yml \
--web.listen-address=:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target
// packages/prometheus 是我prometheus的安裝路徑妨马,可以按需修改
systemctl daemon-reload // 加載新的systemd配置
systemctl enable prometheus // 設(shè)置開機(jī)自啟
systemctl start prometheus // 啟動(dòng)prometheus
systemctl status prometheus // 查看啟動(dòng)狀態(tài)
在yml文件中可以配置占用的端口號(hào)挺举,記得在防火墻設(shè)置放開該端口,我的是9090
可以通過ip:9090的方式在瀏覽器中打開prometheus的管理界面
六烘跺、安裝node-exporter
在被監(jiān)聽的linux機(jī)器上安裝node_exporter湘纵,可以監(jiān)控服務(wù)器CPU、內(nèi)存滤淳、磁盤梧喷、I/O等信息。node_exporter的作用是用于機(jī)器系統(tǒng)數(shù)據(jù)收集。
和其他exporter一樣铺敌,node_exporter提供http接口提供數(shù)據(jù)汇歹,prometheus會(huì)隔段時(shí)間調(diào)接口拉取數(shù)據(jù)匯總。
在需要監(jiān)控的機(jī)器的根目錄偿凭,創(chuàng)建/packages文件夾
去 prometheus官網(wǎng) 查找node_exporter的最新包地址
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64 node_exporter
將node_exporter加入開機(jī)自啟
// 創(chuàng)建文件 /etc/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://github.com/prometheus/node_exporter
[Service]
ExecStart=/packages/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload // 加載新的systemd配置
systemctl enable node_exporter// 設(shè)置開機(jī)自啟
systemctl start node_exporter // 啟動(dòng)node_exporter
systemctl status node_exporter // 查看啟動(dòng)狀態(tài)
可以訪問ip:9100产弹,確定是否運(yùn)行成功(記得在防火墻開放端口)
為prometheus添加監(jiān)控項(xiàng)(裝了prometheus的主機(jī))
// 編輯prometheus.yml文件,添加下面部分
# node_exporter監(jiān)聽主機(jī)信息
- job_name: "node_info"
static_configs:
- targets: ['172.20.10.7:9100']
labels:
app: node2
hostname: node2
role: node
- targets: ['172.20.10.8:9100']
labels:
app: node3
hostname: node3
role: node
// 注意這個(gè)ip是啟用了node_exporter的服務(wù)器地址弯囊,大家可以按需填寫痰哨,命名也是自定義的
// 重啟prometheus
systemctl restart prometheus
此時(shí),在prometheus管理界面就可以找到新增的target了
在grafana管理界面添加prometheus為數(shù)據(jù)源datasource
在grafana管理界面添加node_exporter的dashboard模板(id 8919)
然后就可以看到被監(jiān)控服務(wù)器的圖表信息了