Prometheus容器化部署,结合Grafan实现图形可视化监控
1 Prometheus、Grafan 容器化部署
环境说明:
| 主机名 | IP |
|---|---|
| master | 192.168.200.145 |
| node1 | 192.168.200.144 |
1.1在master主机上安装docker服务
//配置网络源
[root@master ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
//配置docker-ce源
[root@master ~]# cd /etc/yum.repos.d/
[root@master yum.repos.d]# curl -o docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
//安装 docker-ce 以及依赖包和工具
[root@master ~]# dnf -y install yum-utils device-mapper-persistent-data lvm2
[root@master ~]# yum -y install docker-ce --allowerasing
//查看docker的版本信息
[root@master ~]# docker version
Client: Docker Engine - Community
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:45:22 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
//配置docker镜像加速器
[root@master ~]# mkdir -p /etc/docker
[root@master ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://a74l47xi.mirror.aliyuncs.com"] //此处的网址是个人账户分配的
}
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
2 创建prometheus容器
//拉取prom/Prometheus官方镜像
[root@master ~]# docker pull prom/prometheus
Using default tag: latest
latest: Pulling from prom/prometheus
3cb635b06aa2: Already exists
34f699df6fe0: Pull complete
33d6c9635e0f: Pull complete
f2af7323bed8: Pull complete
c16675a6a294: Pull complete
827843f6afe6: Pull complete
3d272942eeaf: Pull complete
7e785cfa34da: Pull complete
05e324559e3b: Pull complete
170620261a59: Pull complete
ec35f5996032: Pull complete
5509173eb708: Pull complete
Digest: sha256:cb9817249c346d6cfadebe383ed3b3cd4c540f623db40c4ca00da2ada45259bb
Status: Downloaded newer image for prom/prometheus:latest
docker.io/prom/prometheus:latest
[root@master ~]#
//将prometheus的安装包上传至node1中,解压后将prometheus.yaml配置文件传输到master主机的/opt目录中
[root@node1 ~]# ls
anaconda-ks.cfg prometheus-2.31.1.linux-amd64.tar.gz
[root@node1 ~]# tar xf prometheus-2.31.1.linux-amd64.tar.gz
[root@node1 ~]# cd prometheus-2.31.1.linux-amd64
[root@node1 prometheus-2.31.1.linux-amd64]# ls
console_libraries LICENSE prometheus promtool
consoles NOTICE prometheus.yml
[root@node1 prometheus-2.31.1.linux-amd64]# scp prometheus.yml 192.168.200.145:/opt/
//在master主机查看
[root@master ~]# ls /opt/
prometheus.yml
[root@master ~]#
//运行prometheus 容器,并进行端口和配置文件映射,设置开机自启
docker run -d --name prometheus --restart always -p 9090:9090 -v /opt/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
[root@master ~]# docker ps |grep prometheus
58dc2f126346 prom/prometheus "/bin/prometheus --c…" 20 seconds ago Up 19 seconds 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
[root@master ~]#
访问网页测试:
IP+端口(9090)

3 Prometheus如何监控其他节点
Prometheus可以从Kubernetes集群的各个组件中采集数据,比如kubelet中自带的cadvisor,api-server等,而node-export就是其中一种来源
Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取,默认的抓取地址为http://CURRENT_IP:9100/metrics
node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、filesystem、meminfo等基础监控,类似于传统主机监控维度的zabbix-agent
使用node-exporter去采集信息,最后再将信息传给Prometheus,从而实现不同节点监控。
4 监控node1节点
//将安装包传入node1主机中,解压后,重命名
[root@node1 ~]# ls
anaconda-ks.cfg node_exporter-1.3.0.linux-amd64.tar.gz
[root@node1 ~]# tar xf node_exporter-1.3.0.linux-amd64.tar.gz -C /usr/local/
[root@node1 ~]# mv node_exporter-1.3.0.linux-amd64 node_exporter
[root@node1 ~]# cd /usr/local/
[root@client local]# ls
bin etc games include lib lib64 libexec node_exporter prometheus sbin share src
node_exporter
[root@node1 ~]#
配置service文件
[root@node1 ~]# vim /usr/lib/systemd/system/node_exporter.service
[unit]
Description=The node_exporter Server
After=network.target
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
RestartSec=15s
SyslogIdentifier=node_exporter
[Install]
WantedBy=multi-user.target
//设置自启node_exporter
[root@client local]# systemctl daemon-reload && systemctl enable node_exporter && systemctl restart node_exporter
Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /usr/lib/systemd/system/node_exporter.service.
查看端口(默认9100端口)
[root@node1 ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:9100
在master 主机上修改prometheus.yaml配置文件,添加被监控节点
//在配置文件最后面添加被监控节点
[root@master ~]# vi /opt/prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: "Linux Server" //添加此处
static_configs: //添加此处
- targets: ["192.168.200.145:9100"] //添加此处,将node_exporter所在的宿主机ip+9100
重启容器
[root@master ~]# systemctl restart docker
[root@master ~]# docker ps |grep prometheus
58dc2f126346 prom/prometheus "/bin/prometheus --c…" 51 minutes ago Up 7 minutes 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
[root@master ~]#
刷新访问页面可以发现新的节点信息
5 使用Grafan对监控的节点信息进行可视化
Grafan 容器部署
//拉取grafan/grafan官方镜像
[root@master ~]# docker pull grafana/grafana
Using default tag: latest
latest: Pulling from grafana/grafana
97518928ae5f: Pull complete
5b58818b7f48: Pull complete
d9a64d9fd162: Pull complete
4e368e1b924c: Pull complete
867f7fdd92d9: Pull complete
387c55415012: Pull complete
07f94c8f51cd: Pull complete
ce8cf00ff6aa: Pull complete
e44858b5f948: Pull complete
4000fdbdd2a3: Pull complete
Digest: sha256:18d94ae734accd66bccf22daed7bdb20c6b99aa0f2c687eea3ce4275fe275062
Status: Downloaded newer image for grafana/grafana:latest
docker.io/grafana/grafana:latest
[root@master ~]# docker images|grep grafana/grafana
grafana/grafana latest 9b957e098315 2 weeks ago 275MB
[root@master ~]#
//创建容器
[root@master ~]# docker run -itd --name grafan -p 3000:3000 grafana/grafana
7e69b53cda0f51e8d12c63e8860d5ebb9f8013c3f23f5194c19cf43ed792c7e2
[root@master ~]# docker ps | grep grafan
7e69b53cda0f grafana/grafana "/run.sh" 13 seconds ago Up 12 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp grafan
[root@master ~]#


添加prometheus 数据源(就是prometheus的访问地址)







版权声明:本文为m0_56305656原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。