Prometheus监控软件的学习

目录

Prometheus官方网站:Prometheus - Monitoring system & time series database

一、监控的意义?

二、Prometheus是什么?

三、Prometheus的架构是什么?

组件:

获取数据的方式:

四、在Prometheus的监控服务器上安装Prometheus

1、Prometheus源码安装

步骤:

1、源码安装,上传下载的源码包到linux服务器上

2、新建文件夹,将压缩包给解压

3、临时和永久修改PATH变量,添加prometheus的路径

 4、安装完成后可以直接去访问prometheus

2、把Prometheus做成一个服务器来进行管理,使之更加方便

五、在NFS服务器上安装exporter,检测NFS服务器的性能!

步骤:

1、下载node_exporter源码安装包,上传到NFS服务器上去

2、将压缩包里面解压

3、执行node_exporter代理程序agent

六、在prometheus服务器上添加抓取数据的配置,添加node节点服务器,将抓取的数据存储到时序数据库里!


Prometheus官方网站:Prometheus - Monitoring system & time series database

一、监控的意义?

能即时的发现问题,提醒工程师尽快的去解决问题,减少公司的损失,提升了产品的品质,增强了用户的信任

监控:monitor 监控我们的服务器或者服务,一但出现问题,需要告诉我们(告警),然后需要运维人员即时去处理,将公司损失减小到最小。

监控在公司里非常的重要,任何公司都很重视,还需要监控背后:收集数据,分析数据,可以提前预知一些问题,即时去处理。

二、Prometheus是什么?

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

云原生计算基金会(Cloud Native Computing Foundation):由Google、Ibm、redhat等知名公司组成的一个组织,而且还完成了k8s(Kubernetes)的创作,k8s是一个管理容器集群的软件。

Prometheus收集和存储它的指标作为时间序列数据,也就是说,指标信息与它被记录的时间戳一起存储,以及称为标签的可选键值对。

三、Prometheus的架构是什么?

这张图说明了Prometheus的架构和一些 其生态系统组成部分:

组件:

        1、TSDB 时序数据库 (time series database ) --》hdd/ssd  hdd机械磁盘  ssd固态磁盘

        2、HTTP server  web服务

        3、pushgateway   中间件(代理)

        4、alertmanager   告警的软件

        5、exporter    收集数据,采集数据,可以看作木马程序 :安装到被监控的机器上

metrics:指标,就是各种各样的数据,例如cpu的使用率,内存的使用率,网络的带宽等数据

因此我们可以划分出来:

采集数据:exporter    pushgateway   

存储数据:TSDB

提供数据:HTTP server 

显示数据:grafana

告警报警:alertmanager

获取数据的方式:

        1、pull  server --》pull  --》client   主动去获取数据,可以避免发生大并发

        2、push   client  --》 push  --》 server\client 主动送数据过来,数据会一直更新,保持很新的状态,但是如果出现大量数据同时push过来,会导致传输路径被堵死了   

四、在Prometheus的监控服务器上安装Prometheus

官方源码安装指导:Installation | Prometheus

我自己在VMware上安装了一台centos7.9作为Prometheus的监控服务器,如下图所示:

1、Prometheus源码安装

步骤:

1、源码安装,上传下载的源码包到linux服务器上

官网上的下载地址:

https://github.com/prometheus/prometheus/releases/download/v2.43.0/prometheus-2.43.0.linux-amd64.tar.gz

 (我们下载linux版本的)

我们将下载好的安装包上传到linux上面

2、新建文件夹,将压缩包给解压

在根目录创建一个文件夹,将压缩包传入进去

[root@mysql ~]# cd /
[root@mysql /]# ls
bin  boot  dev  etc  home  lianxi  lib  lib64  media  mnt  nginx  o
[root@mysql /]# mkdir prometheus
[root@mysql /]# ls
bin  boot  dev  etc  home  lianxi  lib  lib64  media  mnt  nginx  o
[root@mysql /]# cd ~
[root@mysql ~]# mv prometheus-2.43.0.linux-amd64.tar.gz /prometheus/  #移动压缩包
[root@mysql ~]# cd /prometheus/
[root@mysql prometheus]# ls
prometheus-2.43.0.linux-amd64.tar.gz
[root@mysql prometheus]# 
[root@mysql prometheus]# tar xf prometheus-2.43.0.linux-amd64.tar.gz   #解压
[root@mysql prometheus]# ls
prometheus-2.43.0.linux-amd64
prometheus-2.43.0.linux-amd64.tar.gz
[root@mysql prometheus]# 
[root@mysql prometheus]# mv prometheus-2.43.0.linux-amd64 prometheus    #给文件改名 也可以使用cp命令
[root@mysql prometheus]# ls
prometheus  prometheus-2.43.0.linux-amd64.tar.gz
[root@mysql prometheus]# 
[root@mysql prometheus]# ls
console_libraries  LICENSE  prometheus      promtool
consoles           NOTICE   prometheus.yml
[root@mysql prometheus]# 

3、临时和永久修改PATH变量,添加prometheus的路径

[root@mysql prometheus]# PATH=/prometheus/prometheus:$PATH   #临时修改
[root@mysql prometheus]# vim /root/.bashrc             #永久修改
[root@mysql prometheus]# cat /root/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi
PATH=/prometheus/prometheus:$PATH     #添加
[root@mysql prometheus]# 
[root@mysql prometheus]# which prometheus  #检查是否配置成功
/prometheus/prometheus/prometheus
[root@mysql prometheus]# 
[root@mysql prometheus]# nohup prometheus --config.file=/prometheus/prometheus/prometheus.yml & 
[1] 5338
[root@mysql prometheus]# nohup: 忽略输入并把输出追加到"nohup.out"

可以添加nohup prometheus --config.file=/prometheus/prometheus/prometheus.yml & 
可以使prometheus在后台运行,屏蔽hup信号,可以防止前台关闭后就无法运行了,可以防止终端关闭后还能继续运行

[root@mysql prometheus]# ps aux|grep prometheus        #检查prometheus的进程号
root       5338  0.4  4.2 798956 42304 pts/0    Sl   06:53   0:00prometheus --config.file=/prometheus/prometheus/prometheus.yml
root       5345  0.0  0.0 112824   988 pts/0    R+   06:54   0:00 grep --color=auto prometheus
[root@mysql prometheus]# 
[root@mysql prometheus]# netstat -anpult|grep prometheus  #检查prometheus的端口号
tcp6       0      0 :::9090                 :::*                    LISTEN      5338/prometheus     
tcp6       0      0 ::1:60070               ::1:9090                ESTABLISHED 5338/prometheus     
tcp6       0      0 ::1:9090                ::1:60070               ESTABLISHED 5338/prometheus     
[root@mysql prometheus]# 

 4、安装完成后可以直接去访问prometheus

如下图所示:

 如果访问不到,请将防火墙关闭

如果没有数据并且出现这个警告:

Warning: Error fetching server time: Detected 305231.92299985886 seconds time difference between your browser and the server. Prometheus relies on accurate time and time drift might cause unexpected query results.

获取服务器时间错误:检测到浏览器和服务器之间的时间差异为305231.92299985886秒。 Prometheus赖于精确的时间和时间漂移可能会导致意外的查询结果。

我们需要在安装prometheus服务器输入命令:ntpdate ntp.aliyun.com 同步时间即可正常~ 

我们需要下载ntp:yum install ntp -y        方便我们同步阿里云网站的时间

[root@mysql prometheus]# ntpdate ntp.aliyun.com
10 Apr 20:05:01 ntpdate[5441]: step time server 203.107.6.88 offset 305152.905096 sec
[root@mysql prometheus]# 

2、把Prometheus做成一个服务器来进行管理,使之更加方便

将源码二进制安装的Prometheus,添加成为一个service方式管理

在上面的基础上,对/usr/lib/systemd/system/下的文件今天配置

[root@mysql prometheus]# vim /usr/lib/systemd/system/sshd.service  #可以参考这个文件进行修改
[root@mysql prometheus]# vim /usr/lib/systemd/system/prometheus.service  
#创建一个prometheus.service文件
[root@mysql prometheus]# cat /usr/lib/systemd/system/prometheus.service
#如果需要自行复制
[Unit]
Description=prometheus

[Service]
ExecStart=/prometheus/prometheus/prometheus --config.file=/prometheus/prometheus/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@mysql prometheus]# 
[root@mysql prometheus]# systemctl daemon-reload   
#说明我已经向systemd注册prometheus.service文件了,意思是重新加载systemd相关服务


[root@mysql prometheus]# service prometheus restart  #对prometheus服务进行运行
Redirecting to /bin/systemctl restart prometheus.service
[root@mysql prometheus]# 

[root@mysql prometheus]# ps aux|grep prometheus    #检查prometheus的进程是否存在
root       5338  0.1  5.3 930420 52784 pts/0    Sl   19:39   0:02 prometheus --config.file=/prometheus/prometheus/prometheus.yml
root       5506  0.0  0.0 112824   992 pts/0    R+   20:22   0:00 grep --color=auto prometheus
[root@mysql prometheus]# service prometheus stop
Redirecting to /bin/systemctl stop prometheus.service
[root@mysql prometheus]# ps aux|grep prometheus
root       5338  0.1  5.3 930420 52784 pts/0    Sl   19:39   0:02 prometheus --config.file=/prometheus/prometheus/prometheus.yml
root       5524  0.0  0.0 112824   988 pts/0    R+   20:22   0:00 grep --color=auto prometheus
因为第一次是使用nohup方式启动的prometheus,所以还是需要kill的方式杀死进程
后面就可以使用service的方式启动prometheus了
[root@mysql prometheus]# kill -9 5338      #需要kill原来没有使用service运行的prometheus进程 
[root@mysql prometheus]# service prometheus restart
Redirecting to /bin/systemctl restart prometheus.service
[1]+  已杀死               nohup prometheus --config.file=/prometheus/prometheus/prometheus.yml
[root@mysql prometheus]# ps aux|grep prometheus
root       5541  1.0  3.9 798700 39084 ?        Ssl  20:23   0:00 /prometheus/prometheus/prometheus --config.file=/prometheus/prometheus/prometheus.yml
root       5548  0.0  0.0 112824   992 pts/0    R+   20:23   0:00 grep --color=auto prometheus
[root@mysql prometheus]# service prometheus stop      #关闭prometheus,成功关闭
Redirecting to /bin/systemctl stop prometheus.service
[root@mysql prometheus]# ps aux|grep prometheus
root       5567  0.0  0.0 112824   992 pts/0    R+   20:23   0:00 grep --color=auto prometheus
[root@mysql prometheus]# 
验证成功

五、在NFS服务器上安装exporter,检测NFS服务器的性能!

我们以NFS服务器为例,当然其他的服务器也需要安装exporter程序,但是需要安装对应的exporter程序包


 

步骤:

1、下载node_exporter源码安装包,上传到NFS服务器上去

我们安装下面展示的node_exporter中的linux安装包 

node_exporter表示通用的节点exporter包,他会采集这台服务器通用的数据,如cpu,内存,磁盘等等

2、将压缩包里面解压

[root@mysql ~]# mv node_exporter-1.5.0.linux-amd64.tar.gz /
[root@mysql ~]# cd /
[root@mysql /]# ls
bin  boot  data  dev  etc  home  lianxi  lib  lib64  media  mnt  nginx  node_exporter-1.5.0.linux-amd64.tar.gz  opt  proc  prometheus  root  run  sbin  srv  sys  tmp  usr  var  web
[root@mysql /]# tar xf node_exporter-1.5.0.linux-amd64.tar.gz   #解压
[root@mysql /]# mv node_exporter-1.5.0.linux-amd64 /node_exporter   #改名
[root@mysql /]# ls
bin   data  etc   lianxi  lib64  mnt    node_exporter                           opt   prometheus  run   srv  tmp  var
boot  dev   home  lib     media  nginx  node_exporter-1.5.0.linux-amd64.tar.gz  proc  root        sbin  sys  usr  web
[root@mysql /]# cd node_exporter
[root@mysql node_exporter]# ls
LICENSE  node_exporter  NOTICE
[root@mysql node_exporter]# PATH=/node_exporter/:$PATH    #临时改变PATH变量
[root@mysql node_exporter]# vim /root/.bashrc           #永久改变PATH变量
[root@mysql node_exporter]# cat /root/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi
PATH=/prometheus/prometheus:$PATH
PATH=/node_exporter/:$PATH                     #添加这一条
[root@mysql node_exporter]# 

3、执行node_exporter代理程序agent

[root@mysql node_exporter]# nohup node_exporter --web.listen-address 0.0.0.0:8090  &
#8090这个端口号可以自己定义的,说明的它会从本机的8090端口输出监控数据,只要不和其他的服务冲突就可以
[1] 5671
[root@mysql node_exporter]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@mysql node_exporter]# ps aux|grep node_exporter 
root       5671  0.0  1.1 724656 11064 pts/1    Sl   21:00   0:00 node_exporter --web.listen-address 0.0.0.0:8090
root       5688  0.0  0.0 112824   988 pts/1    R+   21:01   0:00 grep --color=auto node_exporter
[root@mysql node_exporter]# netstat -anpult|grep node_exporter 
tcp6       0      0 :::8090                 :::*                    LISTEN      5671/node_exporter  
[root@mysql node_exporter]# 

4、安装完毕后,可以直接访问node_exporter上的metrics

网址:http://172.20.10.3:8090/metrics

六、在prometheus服务器上添加抓取数据的配置,添加node节点服务器,将抓取的数据存储到时序数据库里!

[root@mysql prometheus]# vim prometheus.yml #在Prometheus的配置文件里添加被监听的端口
[root@mysql prometheus]# cat 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"]

#添加NFS服务器的监控端口
  - job_name: "NFS1"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["172.20.10.3:8090"]

# 添加负载均衡器的监控端口
#  - job_name: "LB1"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

#   static_configs:
#      - targets: ["192.168.2.200:8090"]
[root@mysql prometheus]# 

完成后需要重新运行Prometheus

service prometheus restart  #重启Prometheus

最后打开浏览器进行测试:

打开Prometheus网址,点击status的Targets即可看到被监控服务器的node数据

 完成prometheus下载!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值