最近准备把我前段时间研究的多套常见的监控工具整理出来,分享给大家。先整理一篇Prometheus的,希望能帮助到需要的朋友。

一、简介

1.1 prometheus监控框架工具介绍

prometheus是由谷歌研发的一款开源的监控软件,它通过安装在远程机器上的exporter,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。目前已经被云计算本地基金会托管,是继k8s托管的第二个项目,号称是下一代监控。

1.2 优缺点

a47205a72f91b93914adb0c0113063e0.png

Prometheus架构图

prometheus存储的是时序数据(时序列数据由metric名和一组key/value组成),即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。

metric名表示metric的功能,如http_request_total。时序的名字由 ASCII 字符,数字,下划线,以及冒号组成,它必须满足正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*, 其名字应该具有语义化,一般表示一个可以度量的指标,例如 http_requests_total, 可以表示 http 请求的总数。

Prometheus使用在多维度上灵活的查询语言(PromQl)。PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言。

Prometheus具有易管理、易集成、可扩展、支持自动发信等优势。

同时Prometheus后端用 golang语言开发,前端是 Grafana,二次开发需要掌握相关语言。

7ebfc086dcc8275f148ef72fb0469b37.png

Prometheus和其他监控系统横向比较

1.3 支持类型

Prometheus为了支持各种中间件以及第三方的监控提供了exporter,大家可以把它理解成监控适配器,将不同指标类型和格式的数据统一转化为Prometheus能够识别的指标类型。

例如Node exporter主要通过读取Linux的/proc以及/sys目录下的系统文件获取操作系统运行状态,reids exporter通过Reids命令行获取指标,mysql exporter通过读取数据库监控表获取MySQL的性能数据。他们将这些异构的数据转化为标准的Prometheus格式,并提供HTTP查询接口。

bd21b1f38735b32af1b209d0b197c016.png

Prometheus各类exporter组件

Prometheus的流行和Kubernetes密不可分,支持对Kubernetes、容器、OpenStack的监控。

c7e915029999e2784c1ffd323b6f42a1.png

Prometheus和k8s的结合

二、部署过程

2.1 安装包下载

1.安装包github下载

https://prometheus.io/download/

6d8556c21f257dcb4db5b3f2d4ac7c50.png

Prometheus组件包

Github下载各个组件包,通过命令行方式安装配置。

2.容器镜像下载

https://hub.docker.com/u/prom

3588a4c3f57cc50b0c10a23420672234.png

容器镜像在线拉取

docker pull prom/prometheus

2.2 prometheus安装部署

1.上传已下载的各组件安装包

3f1f5a54d0931bf673337ad1b24e69ef.png

已下载的各组件

2.部署到/usr/local/目录

tar -zxvf prometheus-2.18.1.linux-amd64.tar.gz -C /usr/local/

34d61277f703bd7d188e465607edb7b5.png

解压部署

3.修改文件夹名称

mv prometheus-2.18.1.linux-amd64 prometheus

446a1c22842d81bf8f30f5be4d91f894.png

mv命令修改文件夹名称

4.验证,查看版本号

cd prometheus/

./prometheus --version

f21b35d78738e99eac37faa04dacf5ea.png

2.18.1版本

5.修改prometheus.yml配置文件

vi prometheus.yml,配置相关监控项

d65e2c50a24d57791cd356e972047a08.png

按需修改yml文件

6.设置prometheus用户

groupadd prometheus

useradd -g prometheus -s /sbin/nologin prometheus

96e8ff3524131c6348b3e20cc3796081.png

7.给prometheus用户赋权

cd ~

chown -R prometheus:prometheus /usr/local/prometheus/

2e2ff7aa4b74d3906d9b2d0343a256c9.png

8.创建prometheus运行数据目录

mkdir -p /var/lib/prometheus

chown -R prometheus:prometheus /var/lib/prometheus/

aff7ab2f6ff3e21d9b8e4c374fe78da9.png

9.设置开机启动

touch /usr/lib/systemd/system/prometheus.service

chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service

052b48d823ed1657279f53f9c9573c20.png

vi /usr/lib/systemd/system/prometheus.service

添加下面内容,设置prometheus.service

[Unit]

Description=Prometheus

Documentation=https://prometheus.io/

[Service]

# Type设置为notify时,服务会不断重启

Type=simple

User=prometheus

# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中

ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/Prometheus --web.listen-address=:9090

Restart=on-failure

[Install]

WantedBy=multi-user.target

5106c5cc45f029400693161809a44907.png

10.设置iptables(有防火墙要求的设置)

vi /etc/sysconfig/iptables

配置下面这段话:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT

bdc3f25dbee218e4db085e0805623298.png

service iptables restart

2.3 prometheus部署完成

1.启动prometheus,并查看状态

systemctl enable prometheus

systemctl start prometheus

systemctl Prometheus status

f3802258ab5d80ec4b7cc7db3e212bce.png

netstat -tunlp | grep 9090

4aa9ef7044e76f342d8bdcf5484c3746.png

2.查看prometheus自带的web界面

http://192.168.43.221:9090

fc2fad8429b031200aeec63fc93f48d2.png

在Status菜单下,Configuration,Rule,Targets等,Statu-->Configuration展示prometheus.yml的配置

d9e0007a24536a63fa27fbde6e7da9b6.png

在Statu-->Targets展示监控具体的监控目标,这里监控目标“linux”暂未设置node_exporter,所以没有数据

59abafb1b91a3d956a4bc451efe4c93a.png

3.查看数据抓取情况

访问http://192.168.43.221:9090/metrics,查看exporter具体能抓到的数据

435357b6634b4f347952417f80ef1cdf.png

2.4 grafana安装部署

1. grafana下载

登陆https://grafana.com/grafana/download官网,下载安装包

5ce804a35b4f78f7333fa4a4ad8eb646.png

wget https://dl.grafana.com/oss/release/grafana-7.0.1-1.x86_64.rpm --no-check-certificate

7624642daa94ab524b01d6d0ac206e5f.png

2. grafana 安装

yum install grafana-7.0.1-1.x86_64.rpm

dfb46013633de9b3a6b41ecb465b306c.png
eb54389070a883464b34508f74a49800.png

3. 修改配置文件

配置文件位于/etc/grafana/grafana.ini,这里暂时保持默认

4.设置开机启动

systemctl enable grafana-server

systemctl start grafana-server

3d55b158493e46164456f8a787009df5.png

5.检查服务启动状态

service grafana-server status

7f41530f3caeb586a4ff3e239384e1f2.png

6.设置iptables(需要防火墙的设置)

vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT

service iptables restart

7.登陆grafana界面

浏览器访问http://192.168.43.221:3000,默认登陆账号密码admin/admin

4bd97812b47b9a84efa41ee3fc0c2bde.png

8.添加数据源

点击设置按钮,通过“Add data source”添加数据源

7bd945e0a4abe75da83b1226949ace78.png

根据配置项添加prometheus数据源相关配置

967fee11bf549b8c9aa2a9858d749129.png

三 使用方法

3.1 node_exporter方式监控服务器

1. 部署到/usr/local/目录

tar -zxvf node_exporter-1.0.0.linux-amd64.tar.gz -C /usr/local/

c264ebaf6cfa9c894d1e82fad5e26f7e.png

cd /usr/local/

mv node_exporter-1.0.0.linux-amd64 node_exporter

2. 设置用户

groupadd prometheus

useradd -g prometheus -s /sbin/nologin prometheus

chown -R prometheus:prometheus /usr/local/node_exporter/

c4cdf533a49b6e43cbc3a7f676fe572b.png

3. 设置开机启动

vi /usr/lib/systemd/system/node_exporter.service

输入下面内容,配置node_exporter.service

[Unit]

Description=node_exporter

Documentation=https://prometheus.io/

[Service]

Type=simple

User=prometheus

ExecStart=/usr/local/node_exporter/node_exporter

Restart=on-failure

[Install]

WantedBy=multi-user.target

613a681aebd36a86954122c77456df41.png

3. 启动和检查服务

systemctl enable node_exporter

systemctl start node_exporter

service node_exporter status

635712259112bd79288bfce5fe910338.png

4. 设置iptables(需要用到防火墙的配置)

vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT

service iptables restart

5.检查监控界面

可见node1主机已经可被监控

0f640714d531d869b02db4d661fb2bfc.png

6.下载node_exporter监控的dashboard

从官网https://grafana.com/dashboards/下载需要的dashboard到本地

d2fa252a1be8cb41e1e0bd39dd7028cc.png

7.导入dashboard

通过import入口,上传导入已下载的dashboard

06aa918ca21508f70252890c4905df0f.png
28ca8a341fe9bdc78b9d731b363e3cd4.png

8.查看grafana监控展示情况

93665afa737894aa5a9bb64b9561f3fb.png
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐