Prometheus + Grafana实战

官网网站:https://prometheus.io/

下载地址:https://prometheus.io/download/

Github地址:https://github.com/prometheus/prometheus

这里我将下载安装以下几个组件(提前下载好这几个组件的二进制文件):

  • prometheus server:Prometheus主服务;

  • pushgateway:借助pushgateway,让target通过push的方式,完成监控时序数据的上报;

  • node_exporter:用于监控Nginx内核公开的硬件和操作系统指标;

  • alertmanager:独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、去重等处理,并将它们通过路由发送给正确的接收器;


一、Prometheus Server的安装

Prometheus Server基于Golang语言开发,编译会后的软件包,不依赖于任何第三方依赖,只需要下载对应平台的二进制包、解压后完成基础配置后即可正常启动。image.png

这里我下载的是LTS长期支持版的2.37.1。

1、查看下载好的所有组件:

[root@jiguiquan1 jiguiquan]# ll
total 126528
-rw-r--r--. 1 root root 25880024 Oct  9 08:40 alertmanager-0.24.0.linux-amd64.tar.gz
-rw-r--r--. 1 root root 10111972 Oct  9 08:40 node_exporter-1.4.0.linux-amd64.tar.gz
-rw-r--r--. 1 root root 83865783 Oct  9 08:40 prometheus-2.37.1.linux-amd64.tar.gz
-rw-r--r--. 1 root root  9695285 Oct  9 08:40 pushgateway-1.4.3.linux-amd64.tar.gz

2、解压并重命名prometheus server压缩包:

[root@jiguiquan1 jiguiquan]# tar -zxvf prometheus-2.37.1.linux-amd64.tar.gz

[root@jiguiquan1 jiguiquan]# mv prometheus-2.37.1.linux-amd64 prometheus-2.37.1

[root@jiguiquan1 prometheus-2.37.1]# cd /jiguiquan/prometheus-2.37.1/
[root@jiguiquan1 prometheus-2.37.1]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
# 主执行文件:prometheus
# 主配置文件:prometheus.yml

3、配置主配置文件:

[root@jiguiquan1 prometheus-2.37.1]# vim 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. Prometheus自己的核心配置
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['192.168.56.10:9090']
# 添加 PushGateway 监控配置
  - job_name: 'pushgateway'
    static_configs:
      - targets: ['192.168.56.10:9091']
        labels:
          instance: pushgateway
# 添加 Node Exporter 监控配置
  - job_name: 'node exporter'
    static_configs:
      - targets: ['192.168.56.10:9100', '192.168.56.11:9100', '192.168.56.12:9100']

配置项说明:

  • global 配置块:此片段指定的是 prometheus 的全局配置, 比如采集间隔,抓取超时时间等。

    • scrape_interval:拉取数据的时间间隔,默认为 1 分钟默认继承 global 值。

    • crape_timeout: 抓取超时时间,默认继承 global 值。

    • evaluation_interval:规则验证(生成 alert)的时间间隔,默认为 1 分钟。

  • rule_files 配置块:此片段指定报警规则文件, prometheus 根据这些规则信息,会推送报警信息到alertmanager 中。

  • scrape_configs 配置块:配置采集目标相关, prometheus 监视的目标。Prometheus自身的运行信息可以通过 HTTP 访问,所以Prometheus 可以监控自己的运行数据。指定抓取配置,prometheus 的数据采集通过此片段配置。

    • job_name:监控作业的名称。他的下一集是instance,也就是target

    • static_configs:表示静态目标配置,就是固定从某个 target 拉取数据。一个 scrape_config 片段指定一组目标和参数, 目标就是实例,指定采集的端点, 参数描述如何采集这些实例, 主要参数如下:

      ➢ targets : 指定监控的目标, 其实就是从哪儿拉取数据。

      ➢ metric_path: 抓取路径, 默认是/metrics

      ➢ *_sd_configs: 指定服务发现配置

Prometheus 会从 http://192.168.56.10:9090/metrics 上拉取数据。

4、启动prometheus server服务(nohup后台运行):

nohup ./prometheus --config.file=prometheus.yml > prometheus.log 2>&1 &

5、访问页面: http://192.168.56.10:9090 

image.png

这里可以看到我们配置的所有Target,因为其他服务还没有启动,所以状态为DOWN,待会启动后再对比看看!


二、PushGateway的安装

1、解压并重命名pushgateway的压缩包:

[root@jiguiquan1 jiguiquan]# tar -zxvf pushgateway-1.4.3.linux-amd64.tar.gz

[root@jiguiquan1 jiguiquan]# mv pushgateway-1.4.3.linux-amd64 pushgateway-1.4.3

[root@jiguiquan1 pushgateway-1.4.3]# cd /jiguiquan/pushgateway-1.4.3/
[root@jiguiquan1 pushgateway-1.4.3]# ls
LICENSE  NOTICE  pushgateway
# 主执行文件:pushgateway

2、启动pushgateway服务(nohup后台运行)

nohup ./pushgateway --web.listen-address :9091 > pushgateway.log 2>&1 &


三、node_exporter的安装(非必选)

1、解压并重命名node_exporter的压缩包(3台节点服务器):

[root@jiguiquan1 jiguiquan]# tar -zxvf node_exporter-1.4.0.linux-amd64.tar.gz

[root@jiguiquan1 jiguiquan]# mv node_exporter-1.4.0.linux-amd64 node_exporter-1.4.0

[root@jiguiquan1 jiguiquan]# cd /jiguiquan/node_exporter-1.4.0/
[root@jiguiquan1 node_exporter-1.4.0]# ls
LICENSE  node_exporter  NOTICE
# 主执行文件:node_exporter

2、启动node_exporter服务(nohup后台运行)

nohup ./node_exporter > node_exporter.log 2>&1 &

启动成功后,我们就可以在  http://192.168.56.12:9100/metrics  地址,看到数据的采集情况,而prometheus也正是通过这个api去采集对应的数据的!

image.png

3、配置node_exporter的开机自启动:

# 创建service文件
[root@jiguiquan3 jiguiquan]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart= /jiguiquan/node_exporter-1.4.0/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

## 配置服务开机自启
[root@jiguiquan3 jiguiquan]# systemctl enable node_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.

### 启动服务
[root@jiguiquan3 jiguiquan]# systemctl start node_exporter

#### 查看服务状态
[root@jiguiquan3 jiguiquan]# systemctl status node_exporter
● node_exporter.service - node_export
   Loaded: loaded (/usr/lib/systemd/system/node_exporter.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-10-09 09:54:47 UTC; 6s ago
     Docs: https://github.com/prometheus/node_exporter
 Main PID: 22222 (node_exporter)
   CGroup: /system.slice/node_exporter.service
           └─22222 /jiguiquan/node_exporter-1.4.0/node_exporter


四、alertmanager的安装(非必选)

1、解压并重命名alertmanager的压缩包:

[root@jiguiquan1 jiguiquan]# tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz

[root@jiguiquan1 jiguiquan]# mv alertmanager-0.24.0.linux-amd64 alertmanager-0.24.0

[root@jiguiquan1 jiguiquan]# cd /jiguiquan/alertmanager-0.24.0/
[root@jiguiquan1 alertmanager-0.24.0]# ls
alertmanager  alertmanager.yml  amtool  LICENSE  NOTICE
# 主执行文件:alertmanager
# 主配置文件:alertmanager.yml

2、配置主配置文件:

暂时先不动!

3、启动alertmanager服务(nohup后台运行)

nohup ./alertmanager --config.file=alertmanager.yml > alertmanager.log 2>&1 &

4、当所有服务都启动完成后,再查看Prometheus的Target页面:

image.png

至此,Prometheus的最基础的几个组件就安装完成了!node_exporter服务的开机自启也正常!


五、Grafana的安装与配置

官方网站:https://grafana.com/

下载页面:https://grafana.com/grafana/download/8.3.6?pg=get&plcmt=selfmanaged-box1-cta1

我没有选择最新版,而是8.3.6版,因为新版很多模板兼容性不一定好!

1、下载Centos版本的grafana8.3.6:

方法一:rpm安装

# 网络不好的话,就手动下载吧
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.6-1.x86_64.rpm
yum install grafana-enterprise-8.3.6-1.x86_64.rpm

方法2:二进制包安装(为了与上面其他服务方法一致,我这里也还是二进制包安装吧)

# 网络不好的话,就手动下载吧
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.6.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-8.3.6.linux-amd64.tar.gz

2、后台运行Grafana程序:

[root@jiguiquan1 jiguiquan]# cd /jiguiquan/grafana-8.3.6/
[root@jiguiquan1 grafana-8.3.6]# ls
bin  conf  LICENSE  NOTICE.md  plugins-bundled  public  README.md  scripts  VERSION
[root@jiguiquan1 grafana-8.3.6]# nohup /jiguiquan/grafana-8.3.6/bin/grafana-server > grafana.log 2>&1 &
[4] 1267

启动后,通过 http://192.168.56.10:3000 端口访问Grafana程序;

image.png

默认账号密码:admin  :admin

3、配置Prometheus数据源:

image.pngimage.png

image.png

4、手动创建Dashboard或者Row:

image.png

其实工作中:我们很少自己手动配置Grafana Dashboard,因为我们一般配置的不好看,我们更多时候是选用Grafana官网上别人开放的Dashboard!


六、通过模板配置Node Exporter面板

官网Dashboard下载页面:https://grafana.com/grafana/dashboards/

1、选择我们想要的模板:

我选择的是这个Dashboard模板:

https://grafana.com/grafana/dashboards/11074-node-exporter-for-prometheus-dashboard-en-v20201010/

下载该模板的json文件:

image.png

2、在Grafana中导入我们下载好的模板json文件:image.png

3、如果效果可以,不要忘记保存哦:

20221010162508.png

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐