gitlab+jenkins+harbor+k8s安裝操作流程之Prometheus+cadvisor+grafana
1.介紹
Prometheus 是一個開源的報警系統和監控工具包,是由SoundCloud公司開發的開源監控報警系統和時序數據庫(TSDB)。Prometheus使用Go語言開發,是Google BorgMon監控系統的開源版本。從 2012 年成立以來,許多公司和組織都采用promethues,并且該項目有著很活躍的社區和開發者;現在是一個開源項目,可以獨立于任何公司進行維護;2016年prometheus成為繼Kubernetes之后第二個加入Linux基金會旗下的原生云基金會(Cloud Native Computing Foundation)的托管項目
2.各監控系統對比


3.組件介紹
Prometheus Server:負責定時去目標抓取 metrics數據,每個被抓取對象需要開放一個http服務接口;pull下來的數據經過整理后寫入到本地的時序數據庫(TSDB)中。
Client Library:客戶端類庫(例如官方提供的:Go,Python,Java等),為需要監控的服務產生相應的 metrics數據并開放一個http服務接口給 Prometheus Server。目前很多軟件原生就支持Prometheus,提供了metrics數據,可以直接使用 Prometheus pull。對于像操作系統不提供提供metrics數據的情況,可以使用exporter,或者自己開發exporter來提供metrics數據服務。
Node Exporter:泛指能向Prometheus提供監控數據(metrics數據)的都可以稱為一個 exporter,一個 exporter的實例稱為 target,exporter來源主要2個方面,一個是社區提供的,一種是用戶自定義的。主要用來支持其他數據源的metrics數據導入到 Prometheus,支持數據庫、硬件、消息中間件、存儲系統、HTTP服務器、jmx等。
PushGateway:主要用于臨時性的 short-lived job。由于這類 jobs 存在時間較短,可能在 Prometheus 來 pull 之前就消失了。對此類 jobs 定時將 metrics數據 push 到 pushgateway 上,再由 Prometheus Server 從 Pushgateway 上 pull 到本地。這種方式主要用于服務層面的metrics,對于機器層面的metrices,需要使用node exporter。
Promdash 和 Grafana:Prometheus內置一個簡單的Web控制臺Promdash,可以查詢metrics數據,查看配置信息或者Service Discovery等,實際工作中,查看指標或者創建儀表盤通常使用Grafana,Prometheus作為Grafana的數據源。
alert manager:從 Prometheus server 端接收到 alerts 后,會進行去除重復數據,分組,并路由到對應的接受方式上,發出報警。常見的接收方式有:電子郵件,pagerduty,OpsGenie, webhook 等。
PromQL:是Prometheus TSDB 的查詢語言。是結合 Grafana 進行數據展示和告警規則的配置的關鍵部分。

4.工作過程
Prometheus Daemon負責定時去被監控目標上抓取metrics(指標)數據,每個抓取目標需要暴露一個http服務的接口給它定時抓取。Prometheus支持通過配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目標。Prometheus采用PULL的方式進行監控,即服務器可以直接通過目標PULL數據或者間接地通過中間網關來Push數據。
Prometheus 在本地處理抓取到的所有數據,并通過一定規則進行整理數據,并把得到的結果存儲到新的時間序列中。
Prometheus通過PromQL和其他API可視化地展示收集的數據。Prometheus支持很多方式的圖表可視化,例如Grafana、自帶的Promdash以及自身提供的模版引擎等等。Prometheus還提供HTTP API的查詢方式,自定義所需要的輸出。
PushGateway支持Client主動推送metrics到 PushGateway,而Prometheus只是定時去Gateway上抓取數據。
Alertmanager是獨立于Prometheus的一個組件,可以支持Prometheus的查詢語句,提供十分靈活的報警方式。
5.安裝并下載組件,alertmanager組件沒用上 官網https://prometheus.io/

安裝Prometheus軟件
tar -zxvf prometheus-2.45.0.linux-amd64.tar.gz

拷貝 重命名
# Prometheus安裝非常簡單(類似綠色免安裝版本)
cp -r prometheus-2.45.0.linux-amd64 /usr/local/prometheus
2.編寫Prometheus啟動腳本
cat>/usr/local/prometheus/prometheus.service<<EOF
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
3.添加啟動腳本到systemd啟動管理中
ln -s /usr/local/prometheus/prometheus.service /lib/systemd/system/
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus
netstat -antp | grep :9090

4.配置文件講解,注:Prometheus的配置文件有嚴格的縮進格式,修改時不要破壞格式! (默認每級標簽之間為兩個空格)

5.通過瀏覽器訪問指標數據和圖形化界面(效果見下圖)


6.部署Prometheus - Node Exporter,想要監控的機器 就得裝node exporter
tar -xf node_exporter-1.6.0.linux-amd64.tar.gz
cp -r node_exporter-1.6.0.linux-amd64 /usr/local/node_exporter
7.編寫Node Exporter啟動腳本
cat>/usr/local/node_exporter/node_exporter.service<<EOF
[Unit]
Description=Node Exporter
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
8.添加啟動腳本到systemd啟動管理中
ln -s /usr/local/node_exporter/node_exporter.service /lib/systemd/system/
systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter
netstat -antp | grep LISTEN | grep :9100 # node_exporter 默認端口為 9100 完成后在Prometheus配置文件中添加端口信息

9.效果展示

# 保存退出后重啟 prometheus
systemctl restart prometheus
10.安裝Grafana https://grafana.com/ 官網
下載并安裝Prometheus Server服務
tar -xf grafana-10.2.2.linux-amd64.tar.gz
cp -r grafana-v10.2.2/ /usr/local/grafana
編寫Prometheus service啟動腳本
cat>/usr/local/grafana/grafana-server.service<<EOF
[Unit]
Description=Grafana Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/grafana
ExecStart=/usr/local/grafana/bin/grafana-server
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
添加啟動腳本到systemd啟動管理中
ln -s /usr/local/grafana/grafana-server.service /lib/systemd/system/
systemctl daemon-reload
systemctl start grafana-server
Grafana組件配置

添加監控linux系統資源模板




11.cadvisor安裝步驟
cadvisor是google創建的用于監控icmtfy容器資源使用情況和性能的軟件,cadvisor在宿主機上以容器方式運行。通過掛在本地卷, 它可以監控在同一臺主機上運行的所有容器。它還提供了一個本地web界面和API,并且能夠將數據存儲到InfluxDB,將運行中的容器數據存儲到遠程 InfluxDB集群。
docker 安裝命令 k8s集群node 或者master都可以安裝這個用來采集容器上面的運行狀態并儲存到InfluxDB
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8089:8080 --detach=true --name=cadvisor google/cadvisor:latest |

如果想通過普羅米修斯+grafana的方式展示,在普羅米修斯的配置文件內添加job_name 獲取信息

然后再grafana上添加模板即可完成

如果忘記grafana密碼如下操作


浙公網安備 33010602011771號