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号