Prometheus+Grafana运维级监控部署

在之前的网站uptime监控中提到过Prometheus+Grafana监控搭配,抽空自己部署了一遍,功能强大,达到了运维级。

Prometheus是主控程序,是监控的Server端。

Node exporter是client端,部署在被监控vps上,负责向Prometheus传输数据。

Grafana是开源的看板/面板程序,提供可视化图形界面。

三者相结合,提供了一套完整的运维级监控系统。如果需要监控警报,还需要加入Alertmanager。

Prometheus、Node exporter、Altermanager开源地址:

https://github.com/prometheus

Grafana开源地址:https://github.com/grafana/grafana

下面记录下部署过程。

1、docker部署Prometheus

选择用docker部署,简单方便。注意映射9090端口,及prometheus.yml配置文件目录。我这里以/opt/config目录为例:

-v /opt/config:/etc/prometheus

将宿主机/opt/config目录,挂载到docker的/etc/prometheus目录。

如果是二进制安装,步骤为:

tar zxf prometheus-2.25.0.linux-amd64.tar.gz -C /opt
mv /opt/prometheus-2.25.0.linux-amd64 /opt/prometheus
vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=prometheus service
 
[Service]
User=root
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data
 
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable prometheus
systemctl start prometheus
systemctl status prometheus

每次更改了Prometheus配置文件,都需要重启:

systemctl restart prometheus

2、配置prometheus.yml文件

以下为最简单的默认配置文件

global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'

# 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'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:9100']
        labels:
          instance: prometheus

添加配置文件之后,docker程序才能正常启动。

此时访问http://ip:9090端口,访问Prometheus控制界面。目前界面很简陋,所以需要继续部署grafana。

3、部署Grafana面板程序

以debian为例:

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key

添加源:

echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

安装grafana:

sudo apt-get update
sudo apt-get install grafana

启动Grafana:

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server

配置随机启动:

sudo systemctl enable grafana-server.service

浏览器访问IP:3000端口,即可打开grafana页面,默认用户名密码都是admin,初次登录会要求修改默认的登录密码。

4、为Grafana添加Prometheus数据源

点击主界面的“Add your first data source”并选择Prometheus,import,保存即可。

当然你还可以添加更多目标,看到更多详细的数据,Grafana官方也提供了很多dashboard的模板:

https://grafana.com/grafana/dashboards/

推荐排名第一的Node Exporter Full。安装模板也很简单,直接复制模板ID(Copy ID to clipboard)

Grafana后台 – Dashboards – Browse – New – Import – 粘贴ID – Load – 并选择数据源为Prometheus。搞定

5、部署Node exporter

在需要被监控的vps上部署node exporter,当然也可以在Prometheus所在vps上部署,监控本机。

选择下载对应版本并解压:

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.5.0.linux-amd64.tar.gz
mv /root/node_exporter-1.5.0.linux-amd64 /opt/node_exporter

配置开机启动:

vi /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter service
 
[Service]
User=root
ExecStart=/opt/node_exporter/node_exporter
 
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target

如果报错,也可以 vi /etc/systemd/system/node_exporter.service

关于Linux service配置文件的说明,请参考:https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/150.html

systemctl daemon-reload
systemctl enable node_exporter

启动服务:

systemctl start node_exporter
systemctl status node_exporter

node exporter默认监控端口是9100,访问ip:9100可以查看node exporter。

注意:在vps面板防火墙中放行9100端口,同时如果vps安装了宝塔等程序,也需要在”安全“中放行9100端口。

iptables也要放行9100:

iptables -I INPUT -s 0.0.0.0/0 -p tcp --dport 9100 -j ACCEPT

6、Node exporter与Prometheus建立连接,传送数据。

编辑Prometheus的prometheus.yml文件,添加以下代码,注意对齐:

  - job_name: 'Linux'
    static_configs:
      - targets: ['xx.xx.xx.xx:9100']
        labels:
          instance: 168itw.com

重启docker Prometheus。

关于prometheus.yml文件的说明:

Prometheus 的配置文件分为三个部分:global、rule_files 和 scrape_configs。

在 global 部分内,可以找到一些通用配置:scrape_interval 用于设置 Prometheus 多久抓取一次目标(Targets),evaluation_interval 用于设置多久计算一次规则(Rules)。而规则用于控制存储预先计算的数据,以及何时生成告警(Alert)。

在 rule_files 部分内,包含了 Prometheus 加载的规则文件路径。

配置文件的最后一个部分名为 scrape_configs,包含了 Prometheus 监控的资源信息。

全局 scrape_interval 设置为了适用于多数情况的 15 秒。

在 scrape_configs 部分,我们定义了第一个导出器(Exporter),用于 Prometheus 监控它自己。由于我们需要更加精确的 Prometheus 状态信息,我们将该任务(Job)的 scrape_interval 降低为 5 秒。static_configs 的 targets 参数表示导出器的监听地址。在本例中是同一服务器,所以我们使用 localhost 以及 Prometheus 自己的端口 9090。

Prometheus 将会抓取在 scrape_configs 内定义的导出器,因此我们需要将 Node Exporter 添加至该文件,就像上文中监控 Prometheus 自己一样。

配置文件详解,见官方:https://prometheus.io/docs/prometheus/latest/configuration/configuration/

本文参考:

https://prometheus.io/docs/prometheus/latest/installation/

https://prometheus.io/docs/guides/node-exporter/

https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/

https://www.iuskye.com/2021/03/30/prom-s1.html

https://learnku.com/articles/22193

本文链接: https://www.168itw.com/seo/prometheus-grafana/
转载请注明转载自:168itw

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注