搭建prometheus+grafana监控系统

prometheus简介

Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 于2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。
官网地址

Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。它涵盖了可以绑定的整个生态系统工具集及其功能。

Prometheus主要用于对基础设施的监控。包括服务器,数据库,VPS,几乎所有东西都可以通过Prometheus进行监控。Prometheus希望通过对Prometheus配置中定义的某些端点执行的HTTP调用来检索度量标准。

普罗米修斯的主要特点是:.

  • 业务持续性(及时预警,监控)

  • 一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据

  • PromQL,一种灵活的查询语言,可以利用此维度完成复杂的查询

  • 不依赖分布式存储;单服务器节点是自治的

  • 时间序列收集通过HTTP上的拉模型进行

  • 通过中间网关支持推送时间序列

  • 通过服务发现或静态配置发现目标

  • 多种图形和仪表板支持模式

Prometheus 基本服务与作用

在这里插入图片描述

主要服务作用
Prometheus Server收集指标和存储时间序列数据,并提供查询接口
ClientLibrary客户端库
Push Gateway短期存储指标数据。主要用于临时性的任务
Exporters采集已有的第三方服务监控指标并暴露metrics
Alertmanager告警
Web UI简单的Web控制台

Prometheus 各组件运行流程

  • Prometheus Server:Prometheus Sever 是 Prometheus 组件中的核心部分,负责实现对监 控数据的获取,存储及查询
    • Prometheus Server 可以通过静态配置管理监控目标,也可以配合使用 Service Discovery(服务发现)的方式动态管理监控目标,并从这些监控目标中获取数据。
    • 其次 Prometheus Sever 需要对采集到的数据进行存储,Prometheus Server 本身就是一个实时数据库,将 采集到的监控数据按照时间序列的方式存储在本地磁盘当中。
    • Prometheus Server 对外提供了自定义的PromQL,实现对数据的查询以及分析。另外 Prometheus Server 的联邦集群能力可以使其从其他的Prometheus Server 实例中获取数据。
  • Exporters:Exporter将监控数据采集的端点通过 HTTP 服务的形式暴露给Prometheus Server, Prometheus Server 通过访问该 Exporter 提供的 Endpoint 端点,即可以获取到需要采集的监控数据。可以将 Exporter 分为 2 类:
    • 直接采集:这一类 Exporter 直接内置了对 Prometheus 监控的支持,比如 cAdvisor,Kubernetes,Etcd等,都直接内置了用于向 Prometheus 暴露监控数据的端点。
    • 间接采集:原有监控目标并无直接支持 Prometheus,因此需要通过 Prometheus 提供的 Client Library 编写该监控目标的监控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter等。
  • AlertManager:在 Prometheus Server 中支持基于 Prom QL 创建告警规则,如果满足 Prom QL 定义的规则,则会产生一条告警。常见的接收方式有:电子邮件,webhook 等。
  • PushGateway:Prometheus 数据采集基于 Prometheus Server 从 Exporter pull 数据,因此 当网络环境不允许 Prometheus Server和 Exporter 进行通信时,可以使用 PushGateway 来进行中转。

Prometheus 的工作流程

  1. Prometheus server 定期从配置好的 jobs 和 exporters 中拉取 metrics,或者接收来自Pushgateway 发送过来的 metrics,或者从其它的 Prometheus server 中拉 metrics。
  2. Prometheus server 在本地存储收集到的 metrics,并运行定义好的 alerts.rules,记录新的时间序列或者向 Alertmanager 推送警报。
  3. Alertmanager根据配置文件,对接收到的报进行处理,发出告警.
  4. 在图形界面中,可视化采集数据。

安装prometheus监控服务

环境准备
主机名角色地址
serverprometheus+grafana192.168.2.10
client1mysql+client192.168.2.11
client2client192.168.2.12

官网下载

1.安装Go语言环境
[root@server ~]# curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
[go-repo]
name=go-repo - CentOS
baseurl=https://mirror.go-repo.io/centos/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
[root@server ~]# yum install go -y
[root@server ~]# go version
go version go1.15.6 linux/amd64

2.下载prometheus软件
[root@server ~]# cd /opt
[root@server opt]# wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz
[root@server opt]# ll
总用量 62792
-rw-r--r-- 1 root root 64298432 12月 17 16:12 prometheus-2.23.0.linux-amd64.tar.gz

3.编辑解压目录下的prometheus.yml,配置监控linux主机和mysq|数据库,配置文件为yml语法.注意缩进对齐
[root@server opt]# cd prometheus-2.23.0.linux-amd64/
[root@server prometheus-2.23.0.linux-amd64]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
[root@server prometheus-2.23.0.linux-amd64]# vim prometheus.yml
scrape_interval: 15s   # 默认15秒到目标处抓取数据
job_name #这个配置是表示在这个配置内的时间序例,每一条都会自动添加上这个{job_name:"prometheus"}的标签

在最后进行配置:
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'                    # 每一个 job_name 都是一个监控项,这里代表监控操作系统状态
    static_configs:
    - targets: ['localhost:9090']
      labels:
        instance: server
  - job_name: 'linux'
    static_configs:
      - targets: ['192.168.2.11:9100','192.168.2.12:9100']       # 被监控主机 IP 地址和端口
        labels:
          instance: client                # 实例名称,在 grafana 中表示对应的主机
  - job_name: 'mysql'                         # 监控 mysql 数据库状态
    static_configs:
      - targets: ['192.168.2.11:9104']         # 数据库Ip地址+端口
        labels:
          intance: client                     # 实例名称,在 grafana 中表示对应的主机


4.后台启动
[root@server prometheus-2.23.0.linux-amd64]# nohup ./prometheus --config.file=prometheus.yml &
[1] 2358
[root@server prometheus-2.23.0.linux-amd64]# nohup: 忽略输入并把输出追加到"nohup.out"

5.浏览器访问
使用浏览器打开该机器的 http://部署机器:9090 ,或者 http://localhost:9090/ 即可以看到Prometheus的graph页面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 测试访问,由于此时没有配置被监控主机,所以不是up的状态

启动用于采集 Linux 系统和 mysql 服务状态的 exporter 服务

prometheus常见的exporter及作用:
(1). node. exporter 用于监控操作系统的性能和运行状态
(2). mysqld. exporter用于监控mysql服务
(3). snmp. exporter 用于监控网络设备

更多exporter可在官网下载官方传送门—

1.安装运行node_exporter
[root@client1 ~]# cd /opt
[root@client1 opt]# wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
[root@client1 opt]# ll
总用量 9300
-rw-r--r-- 1 root root 9520728 12月 17 17:18 node_exporter-1.0.1.linux-amd64.tar.gz
[root@client1 opt]# tar -xf node_exporter-1.0.1.linux-amd64.tar.gz 
[root@client1 opt]# cd node_exporter-1.0.1.linux-amd64/

后台启动
[root@client1 node_exporter-1.0.1.linux-amd64]# nohup ./node_exporter &
[1] 90003
[root@client1 node_exporter-1.0.1.linux-amd64]# nohup: 忽略输入并把输出追加到"nohup.out"

2.配置 mysqld_exporter 用于监控client1上的mysql服务
mysqld_exporter需要连接到Mysql,所以需要Mysql的权限,我们先为它创建用户并赋予所需的权限.

进入mysql数据库,8.0以上的数据库需要先创建用户再授权用户
mysql> create user 'mysql_monitor'@localhost IDENTIFIED BY '123qqq...A';
Query OK, 0 rows affected (0.01 sec)

mysql> grant replication client,process on *.* to 'mysql_monitor'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on *.* to 'mysql_monitor'@'localhost';
Query OK, 0 rows affected (0.01 sec)

3.创建.my.cnf文件并运行mysqld_exporter:
[root@client1 opt]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@client1 opt]# tar -xf mysqld_exporter-0.12.1.linux-amd64.tar.gz 

[root@client1 ~]# vim /opt/mysqld_exporter-0.12.1.linux-amd64/.my.cnf
[client]
user=mysql_monitor
password=123qqq...A

后台启动
[root@client1 ~]# nohup  /opt/mysqld_exporter-0.12.1.linux-amd64/mysqld_exporter --config.my-cnf="/opt/mysqld_exporter-0.12.1.linux-amd64/.my.cnf" &
[2] 114311
[root@client1 ~]# nohup: 忽略输入并把输出追加到"nohup.out"

4.浏览器访问

在这里插入图片描述
在这里插入图片描述
总结prometheus使用方法:

1.想监控操作系统,只需要一步:
在被监控系统上安装node. exporter并启动就ok了
2.想监控操mysql数据库,只需要两步:
(1).创建一个mysql用户
(2).安装mysqld. exporter 并启动

注意:prometheus里面的时区是GMT,图形横轴显示的时间与后面的grafana显示时间不同,我们用的主机时区是CST,大家可以自己了解这个时区间的关系

Prometheus自带的图形并不够强大,于是我们可以使用Grafana作为Prometheus的Dashboard。

使用 Grafana 可视化工具美化监控数据

grafana的下载地址

grafana配置文件介绍

[root@server opt]# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.0.1-1.x86_64.rpm
[root@server opt]# yum -y install grafana-5.0.1-1.x86_64.rpm 

安装插件
[root@server opt]# grafana-cli plugins install grafana-piechart-panel
installing grafana-piechart-panel @ 1.6.1
from url: https://grafana.com/api/plugins/grafana-piechart-panel/versions/1.6.1/download
into: /var/lib/grafana/plugins

✔ Installed grafana-piechart-panel successfully 

Restart grafana after installing plugins . <service grafana-server restart>

[root@server opt]# service grafana-server restart
Restarting grafana-server (via systemctl):                 [  确定  ]

浏览器访问3000端口,登录,默认账号密码admin/admin
在这里插入图片描述
登录执行设置数据源
在这里插入图片描述
进入配置页面
在这里插入图片描述
点击保存并测试,如果出现如下内容则代表成功
在这里插入图片描述
配置完成后可以把默认的dashboards导入
在这里插入图片描述
这时候你再进入到datasource可以看到刚配置的数据源;
在这里插入图片描述
在这里插入图片描述
点击Prometheus 2.0 Stats:
在这里插入图片描述

将监控 Linux 系统和 mysql 服务运行状态的 web 仪表盘插件导入 grafana

在这里插入图片描述
在这里插入图片描述
点击导入,粘贴ID
在这里插入图片描述
在这里插入图片描述

成功!

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值