Prometheus+Grafana基础介绍及搭建使用

Prometheus+Grafana搭建

一、Prometheus介绍

Prometheus由Go语言编写而成,采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能通过Kubernetes、Consl、DNS等多种方式动态获取监控对象。在数据采集方面,借助Go语言的高并发特性,单机Prometheus可以采取数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远程存储。

Prometheus的运行原理

通过Http协议周期性抓取被监控组件的状态。输出被监控组件信息的Http接口称为exporter。

常用组件大部分都有exporter可以直接使用,比如haproxy,Nginx,MySQL,Linux系统信息(磁盘、内存、CPU、网络等)

Prometheus主要特点
  1. 一个多维数据模型(时间序列由metrics指标名字和设置key/value键/值的labels构成)
  2. 非常高效的存储,平均一个采样数据占3.5字节左右,320万的字节时件序列,每30秒采样,保持60天,消耗磁盘大概228G
  3. 一种灵活的查询语言–PromQL
  4. 无依赖存储,支持local和remote不同类型
  5. 采用http协议,使用pull模式,拉取数据
  6. 监控目标,可以采用服务器发现或静态配置的方式
  7. 多种模式的图像和仪表支持,图形化友好
  8. 通过中间网关支持推送时间
Prometheus组件

Prometheus由多个组件组成,但是其中很多组件是可选的

Prometeus Server:收集和存储时间序列数据

Client Library:客户端库,为需要监控的服务生成相应的

metrics:并暴露给Prometheus server,当Prometheus server来Pull时,直接返回实时状态的metrics

pushgateway对于短暂运行的任务,负责接受和缓存时间序列数据,同时也是一个数据源

exporter:各种exporter,面向硬件、存储、数据库、Http服务等

alertmanager:处理报警

webUI:其他各种支持的工具,本身的界面值适合用来语句查询,数据可视化,需要第三方组件,比如Granfana

Prometheus+Grafana基础介绍及搭建使用_第1张图片

说明:

  1. Prometheus server:服务核心组件,采用 pull 方式收集 apiserver、scheduler、controller-manager、kubelet 组件数据, 通过 http 协议传输。并存储时间序列数据
  2. Exporters/Jobs:负责收集不支持Instrumentation的目标对象(host, container…)的性能数据,并通过 HTTP 接口供 Prometheus Server 获取。
    • Node-Exporter:用于收集k8s集群中各node节点的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。
    • Kube-State-Metrics:为prometheus采集k8s资源数据的exporter,通过监听APIServer收集kubernetes集群内资源对象的状态指标数据,例如pod、deployment、service等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。 需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以可以使用Prometheus来抓取这些数据然后存储,主要关注的是业务相关的一些元数据,比如Deployment、Pod、副本状态等;调度了多少个replicas?现在可用的有几个?多少个Pod是running/stopped/terminated状态?Pod重启了多少次?有多少job在运行中。
    • cadvisor:用来监控容器内部使用资源的信息,比如 CPU、内存、网络I/O、磁盘I/O。
    • blackbox-exporter:监控业务容器存活性。
  3. Service Discovery:服务发现,Prometheus支持多种服务发现机制:文件,DNS,Consul,Kubernetes,OpenStack,EC2等等。 基于服务发现的过程并不复杂,通过第三方提供的接口,Prometheus查询到需要监控的Target列表,然后轮训这些Target获取监控数据。
  4. Alertmanager:是一个独立的告警模块,从 Prometheus server 端接收到 alerts 后,会进行去重、分组, 并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉等。
  5. Pushgateway:类似一个中转站,Prometheus 的 server 端只会使用 pull 方式拉取数据,但是某些节点因为某些原因只能使用 push 方式推送数据,那么它就是用来接收 push 而来的数据并暴露给 Prometheus 的 server 拉取的中转站。 可以理解成目标主机可以上报短期任务的数据到 Pushgateway,然后 Prometheus server 统一从 Pushgateway 拉取数据
  6. Grafana:是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。
    • Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。目前使用grafana的公司有很多,如paypal、ebay、intel等。
Grafana介绍

Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和说几句统计,带有告警功能。

特点
  1. 可视化:快速和灵活的客户端图形具有多种选项,面板插件为许多不同的方式可视化指标和日志。
  2. 报警:可视化地为最重要的指标定义警报规则,Granfana将持续评估他们,并发送通知。
  3. 通知:警报更改状态时,他会发出通知,接受电子邮件通知
  4. 动态仪表盘:使用模板变量创建动态和可重用的仪表盘,这些模板变量作为下拉菜单出现在仪表板顶部。
  5. 混合数据源:在同一个图中混合不同的数据源,可以根据每个查询指定数据源,这甚至适用于自定义数据源。
  6. 注释:注释来自不同数据源图标,将鼠标悬停在事件上可以显示完整的事件元数据和标记。
  7. 过滤器:过滤器允许您动态创建新的键~值,这些过滤器将自动应用于该数据源的所有查询。

安装步骤

1.资源配置
IP 节点 组件
192.168.200.100 Prometheus服务器 Prometheus、Node_exporter
192.168.200.104 Agent服务器 Node_exporter
192.168.200.106 Grafana服务器 Grafana
2.部署Prometheus服务器

Prometheus官网:https://prometheus.io/download/

[root@localhost ~]# mkdir /software

[root@localhost ~]# cd /software/

[root@localhost software]# ls
node_exporter-1.5.0.linux-amd64.tar.gz
prometheus-2.37.6.linux-amd64.tar.gz

[root@localhost software]# mv /usr/local/prometheus-2.37.6.linux-amd64/ /usr/local/prometheus
[root@localhost software]# cd /usr/local/prometheus
#查看版本
[root@localhost prometheus]# ./prometheus --version
prometheus, version 2.37.6 (branch: HEAD, revision: 8ade24a23af6be0f35414d6e8ce09598446c29a2)
  build user:       root@5f96027a7c3e
  build date:       20230220-09:36:40
  go version:       go1.19.6
  platform:         linux/amd64


2.1、Prometheus主配置文件注释
#当前环境主配置文件可不用更改
[root@localhost prometheus]# vim /usr/local/prometheus/prometheus.yml
# my global config
global:
  # 默认情况下,每15s拉取一次目标采样点数据。
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  # 每15秒评估一次规则。默认值为每1分钟。
  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:
  # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
  - job_name: 'prometheus'

    # 覆盖global的采样点,拉取时间间隔5s
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:9090']

2.2、注册系统服务
[root@localhost prometheus]# vim /usr/lib/systemd/system/prometheus.service
 [Unit]
  Description=https://prometheus.io
  
  [Service]
  Restart=on-failure
  ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.listen-address=:9090

  [Install]                      
  WantedBy=multi-user.target


#启动服务
[root@bogon prometheus]# systemctl daemon-reload
[root@localhost prometheus]# systemctl enable --now prometheus
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /usr/lib/systemd/system/prometheus.service.

2.3、访问测试

主机ip+端口 (默认端口号9090)

Prometheus+Grafana基础介绍及搭建使用_第2张图片

点击stats–Targets

Prometheus+Grafana基础介绍及搭建使用_第3张图片

即可看到当前只监控了本机

Prometheus+Grafana基础介绍及搭建使用_第4张图片

访问http://ip+9090/metrics 可查看到监控的数据

Prometheus+Grafana基础介绍及搭建使用_第5张图片

3.部署node_exporter(agent/Prometheus两个节点部署)

Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics

3.1、agent服务器安装node_exporter
[root@agent ~]# mkdir /software
[root@agent ~]# cd /software
[root@agent software]# ls
node_exporter-1.5.0.linux-amd64.tar.gz
[root@localhost bin]# vim /etc/systemd/system/node_exporter.service

#解包并改个名
[root@agent software]# tar -xf node_exporter-1.5.0.linux-amd64.tar.gz  -C /usr/local/
[root@agent software]# mv /usr/local/node_exporter-1.5.0.linux-amd64/ /usr/local/node_exporter
#启动,会监听9100端口
[root@agent node_exporter]# ./node_exporter &

#添加服务为系统服务
[root@agent node_exporter]# vim /usr/lib/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 --now node_exporter 
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.

#查看端口
[root@agent ]# netstat -anpt |grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      6352/node_exporter 
3.2、Prometheus服务端配置文件添加监控项

Prometheus服务器–192.168.200.100

进入Prometheus配置文件添加target

 [root@localhost software]# vim /usr/local/prometheus/prometheus.yml
 #进入Prometheus安装目录下修改主配置文件
  
   - job_name: "prometheus"

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

    static_configs:
      - targets: ["192.168.200.100:9090"]

  - job_name: 'agent'
    static_configs:
      - targets: ['192.168.200.104:9100'] #agent服务器ip+node起来的端口,多个用空格隔开
 #添加上面三行

重启Prometheus

[root@localhost prometheus]# systemctl restart prometheus.service

重启完浏览器刷新访问192.168.200.100:9090,打开普罗米修斯的监控页面status–Targets查看有没有添加成功

Prometheus+Grafana基础介绍及搭建使用_第6张图片

监控目标agent和server添加成功

3.3、配置Granfana服务器

在192.168.200.106服务器安装Granfana

Grafana官网:https://grafana.com/grafana/download

//该服务器得有docker,docker安装略
[root@grafana ~]# hostnamectl set-hostname granfana && bash
[root@grafana ~]# mkdir /software && cd /software
[root@granfana software]# ls
grafana-enterprise.tar

#用docker启动,导入镜像
[root@granfana software]# docker load -i grafana-enterprise.tar 
34d5ebaa5410: Loading layer  5.866MB/5.866MB
579bcda65f88: Loading layer  3.072kB/3.072kB
78559bd3bf46: Loading layer  5.055MB/5.055MB
0e1807ef425a: Loading layer   5.94MB/5.94MB
1d10dec99b22: Loading layer  9.553MB/9.553MB
2b2eefd3b8b8: Loading layer    350MB/350MB
fc17ce513b56: Loading layer  1.536kB/1.536kB
4c186a97ae6c: Loading layer  90.11kB/90.11kB
a5359d592bd8: Loading layer   5.12kB/5.12kB
Loaded image: grafana/grafana-enterprise:9.2.1

[root@localhost software]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
grafana/grafana-enterprise   9.2.1     a45674740e38   5 months ago    370MB

#启动
[root@localhost software]# docker run -d --name grafana -p 3000:3000  grafana/grafana-enterprise:9.2.1
9a5f9763fe4324ef662e30eca0fc7d0e02436abd760659659fa7a33558a9ec0e

3.4、浏览器访问Grafana

ip+端口 192.168.200.100:3000 初始用户admin密码admin

Prometheus+Grafana基础介绍及搭建使用_第7张图片

第一次登录进入后让你设置新的密码,进入Grafana,点击DATA SOURCRE添加数据源

Prometheus+Grafana基础介绍及搭建使用_第8张图片

选择Prometheus

Prometheus+Grafana基础介绍及搭建使用_第9张图片
Prometheus+Grafana基础介绍及搭建使用_第10张图片

Prometheus+Grafana基础介绍及搭建使用_第11张图片

添加成功的数据源查看

Prometheus+Grafana基础介绍及搭建使用_第12张图片

Prometheus+Grafana基础介绍及搭建使用_第13张图片

Prometheus+Grafana基础介绍及搭建使用_第14张图片

Prometheus+Grafana基础介绍及搭建使用_第15张图片

Prometheus+Grafana基础介绍及搭建使用_第16张图片
Prometheus+Grafana基础介绍及搭建使用_第17张图片

定义显示内容

Prometheus+Grafana基础介绍及搭建使用_第18张图片

起个名:agent–192.168.200.104服务器平均负载信息

Prometheus+Grafana基础介绍及搭建使用_第19张图片

Grafana模板

Grafana官方提供模板地址:https://grafana.com/grafana/dashboards/

可以点击这里import需要的模板,通过复制 ID
Prometheus+Grafana基础介绍及搭建使用_第20张图片
Prometheus+Grafana基础介绍及搭建使用_第21张图片

你可能感兴趣的:(prometheus,grafana,linux)