提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

本人作为仅仅掌握一点linux基础的新手小白,由于公司需要,学习Prometheus,写此文记录自己的学习过程的同时给其他小白避坑。


一、Prometheus是什么?

此处不过多赘述,翻译其官网介绍。

Prometheus是一个开源系统监控和警报工具包,最初构建于SoundCloud。自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并澄清该项目的治理结构,普罗米修斯于2016年加入云原生计算基金会,成为继Kubernetes之后的第二个托管项目。

普罗米修斯收集并存储其度量作为时间序列数据,即度量信息与记录的时间戳一起存储,以及称为标签的可选键值对。

有关普罗米修斯的详细概述,请参阅媒体部分的链接资源。

二、使用步骤

1.基础环境

两台linux服务器

监控主机192.168.93.100centos7
被监控服务器192.168.93.101centos7

2.两台服务器准备过程

建议使用MobaXterm连接两台服务器,然后选择多窗口一起操作

代码如下(示例):

[root@Agent ~]# systemctl start chronyd
[root@Agent ~]# systemctl enable chronyd
[root@Agent ~]# date
2023年 08月 09日 星期三 18:05:06 CST
[root@Agent ~]# systemctl stop firewalld
[root@Agent ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@Agent ~]# getenforce
Enforcing
[root@Agent ~]# vim /etc/selinux/config
[root@Agent ~]# vim /etc/fstab
[root@Agent ~]#
[root@Agent ~]# vim /etc/sysctl.d/kubernetes.conf
[root@Agent ~]# sysctl -p
[root@Agent ~]# modprobe br_netfilter
[root@Agent ~]# lsmod | grep br_netfilter
br_netfilter           22256  0
bridge                151336  1 br_netfilter

上述vim文件内容自行填写,不写也问题不大。 

 进一步由于Prometheus是由go语言开发,需要对主机进行go的环境配置(不需要掌握go语言基础)访问如下网站下载(由于Great Wall的存在需要科学上网)https://golang.org/dl/

安装包下载以后,上传至监控主机的 /usr/local 目录下

[root@Prometheus ~]# cd /usr/local
[root@Prometheus local]# ls
bin  games  go1.20.7.linux-amd64.tar.gz  include  lib64    node_exporter                           prometheus                            sbin   src
etc  go     grafana-6.4.3-1.x86_64.rpm   lib      libexec  node_exporter-1.5.0.linux-amd64.tar.gz  prometheus-2.46.0.linux-amd64.tar.gz  share

解压安装(需要注意自己的版本号,不要直接复制)

[root@Prometheus local]# tar -xvf go1.20.7.linux-amd64.tar.gz

 配置环境变量

添加/usr/loacl/go/bin目录到PATH变量中。添加到/etc/profile 或$HOME/.profile都可以

[root@Prometheus local]# vim /etc/profile
// 在最后一行添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
// wq保存退出后source一下
[root@Prometheus local]# source /etc/profile

 最后查看版本号(可查询即成功)

[root@Prometheus local]# go version
go version go1.20.7 linux/amd64

3.安装Prometheus

在监控主机上操作(192.168.93.100)

两种安装方式,通过wget或者从网站安装包下载地址:Download | Prometheus 下载到win本地上传到linux服务器,本文采用上传方式,上传过程需要注意文件夹目录,默认是根目录,可以通过mv指令移动文件,也可以直接选择/usr/local文件夹上传文件。若选择移动则使用如下指令:

[root@Prometheus ~]# mv prometheus-2.46.0.linux-amd64.tar.gz /usr/local

解压安装Prometheus

[root@Prometheus local]# tar -xvf prometheus-2.46.0.linux-amd64.tar.gz

 建议将解压后的Prometheus移动到新创建的文件夹prometheus里,即执行:

[root@Prometheus local]# mv prometheus-2.46.0.linux-amd64/ prometheus

然后启动Prometheus,执行如下指令:

[root@Prometheus local]# cd prometheus
[root@Prometheus prometheus]# ls
console_libraries  consoles  data  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
[root@Prometheus prometheus]# ./prometheus --config.file=/usr/local/prometheus/prometheus.yml

 验证是否成功运行,访问本机浏览器 http://192.168.93.100:9090打开Prometheus的监控界面,需要注意输入自己的ip地址。

 如果可以访问,则通过ctrl+c终止运行,然后将Prometheus成为服务后设置开机自启动。

修改service文件

[root@Prometheus prometheus]# vim /etc/systemd/system/prometheus.service

复制粘贴一下内容到该文件中 

[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
 
[Service]
ExecStart=/usr/local/prometheus/prometheus \
  --config.file=/usr/local/prometheus/prometheus.yml \
  --web.listen-address=:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target

 然后执行如下命令

[root@Prometheus local]# systemctl daemon-reload
[root@Prometheus local]# systemctl enable prometheus
[root@Prometheus local]# systemctl start prometheus
[root@Prometheus local]# systemctl status prometheus

可以看到如下界面表示成功,如果失败请检查service文件中的路径与自己是否对应 

​  

4.安装Grafana

Prometheus自带的监控界面较。。。难以描述,通常公司大老板都更偏爱grafana来使监控数据看起来更加花里胡哨

此处本文使用wget指令,需要注意的是如果服务器上提示没有这个指令需要执行如下指令(一般都有,不用执行)

yum -y install wget
[root@Prometheus local]# wget https://dl.grafana.com/oss/release/grafana-6.4.3-1.x86_64.rpm 
[root@Prometheus local]# yum localinstall grafana-6.4.3-1.x86_64.rpm 

进一步执行下列命令,也可以查看到服务的状态

[root@Prometheus local]#  systemctl daemon-reload
[root@Prometheus local]#  systemctl enable grafana-server.service
[root@Prometheus local]#  systemctl start grafana-server.service
[root@Prometheus local]#  systemctl status grafana-server.service

 浏览器访问http://192.168.93.100:3000(IP:3000端口),即可打开grafana页面,默认用户名密码都是admin,初次登录会要求修改默认的登录密码,建议还是admin,点击主界面的“Add data source”

​ 

URL处填写Prometheus服务所在的IP地址,此处我们将Prometheus服务与Grafana安装在同一台机器上,直接填写localhost即可 

点击下方 【Save & Test】按钮,保存设置 

 点击Dashboards选项卡,选择Prometheus 2.0 Stats

点击Grafana图标,切换到Grafana主页面,然后点击Home,选择我们刚才添加的Prometheus 2.0 Stats,即可看到监控数据

可以看到监控主机的画面。 

 

到目前为止已经完成了Prometheus和Grafana的安装和配置,进一步实现监控被监控服务器的操作。 

5.安装 node-exporter

以下操作均在被监控服务器(192.168.93.101)上

由于在环境配置过程是两台服务器一起执行的操作,所以直接进行安装下载,如果未执行准备工作,看2.2再执行一次就好

点击如下地址下载https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-arm64.tar.gz

将下载的安装包上传至被监控主机(192.168.93.101)的 /usr/local 目录下 

同样的执行

[root@Agent ~]# cd /usr/local
[root@Agent local]# ls
bin  etc  games  include  lib  lib64  libexec  node_exporter-1.5.0.linux-amd64.tar.gz  sbin  share  src
[root@Agent local]# tar -xvf node_exporter-1.5.0.linux-amd64.tar.gz
node_exporter-1.5.0.linux-amd64/
node_exporter-1.5.0.linux-amd64/LICENSE
node_exporter-1.5.0.linux-amd64/NOTICE
node_exporter-1.5.0.linux-amd64/node_exporter
[root@Agent local]# ls
bin  etc  games  include  lib  lib64  libexec  node_exporter-1.5.0.linux-amd64  node_exporter-1.5.0.linux-amd64.tar.gz  sbin  share  src
[root@Agent local]# mv node_exporter-1.5.0.linux-amd64/ node_exporter
[root@Agent local]# cd node_exporter
[root@Agent node_exporter]# ls
LICENSE  node_exporter  NOTICE
[root@Agent node_exporter]# ./node_exporter

 服务启动,在浏览器访问 http://192.168.93.101:9100/metrics ,若出现数据则服务开启成功

 Ctrl+C 结束掉node_exporter进程,创建node_exporter服务,让node_exporter以服务的方式,开机自启。

[root@Agent node_exporter]# vim /etc/systemd/system/node_exporter.service

写入以下文件

[Unit]
Description=node_exporter
After=network.target 

[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

[root@Agent node_exporter]# systemctl daemon-reload
[root@Agent node_exporter]# systemctl enable node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /etc/systemd/system/node_exporter.service.
[root@Agent node_exporter]# systemctl start node_exporter
[root@Agent node_exporter]# systemctl status node_exporter
● node_exporter.service - node_exporter
   Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2023-08-09 18:20:33 CST; 3s ago
 Main PID: 8246 (node_exporter)
   CGroup: /system.slice/node_exporter.service
           └─8246 /usr/local/node_exporter/node_exporter

至此node_exporter配置完成。 

6.监控实现

切换服务器到监控主机上(192.168.93.1000)

[root@Prometheus ~]#  cd /usr/local/prometheus
[root@Prometheus ~]#  vim prometheus.yml

 在scrape_configs标签下,添加以下内容,配置监控

- job_name: 'Linux'
    static_configs:
    - targets: ['192.168.93.101:9100']
      labels:
        instance: Linux

​ 

[root@Prometheus prometheus]# systemctl restart prometheus

浏览器访问 http://192.168.56.200:9090/targets  查看监控信息

可以看到,已经将101服务器加入进来。 

进一步,添加dashboard,Grafana官方为我们提供了很多dashboard页面,可直接下载使用。浏览器访问 Dashboards | Grafana Labs 下载所需要的dashboard页面

选择数据源为Prometheus,然后我们搜索Node Exporter for Prometheus,选择一个合适的版本,若后续失败,可以考虑更换一个。

复制dashboard Id , 然后打开我们的Grafana监控页面,打开dashboard的管理页面

点击【import】按钮

然后将我们刚才的复制的dashboard Id 复制进去

Grafana会自动识别dashboard Id 。

然后点击【change】按钮,生成一个随机的UID,然后点击下方输入框,选择我们之前创建的数据源Prometheus,最后点击【Import】按钮,即可完成导入。

 然后返回首页,点击节点机器

 

到此,大功告成。 

总结


以上就是今天要讲的内容,本文仅仅简单介绍了Prometheus+Grafana的使用,感谢

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐