Administrator
Published on 2022-03-22 / 44 Visits
0
0

Prometheus+Grafana 安装部署

一、prometheus简介

Prometheus是一套开源的系统监控报警框架。它以给定的时间间隔从已配置的目标收集指标,评估规则表达式,显示结果,并在发现某些情况为真时触发警报。

作为新一代的监控框架,Prometheus具有以下特点 :

强大的多维度数据模型:
(1)时间序列数据通过metric名和键值对来区分;
(2)所有的metrics都可以设置任意的多维标签;
(3)数据模型更随意,,不需要刻意设置为以点分隔的字符串;
(4)可以对数据模型进行聚合、切割和切片操作;
(5)支持双精度浮点类型,标签可以设为全unicode(统一码);
灵活、强大的查询语句:在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作;
易于管理:不依赖于分布式存储;
使用 pull 模式采集时间序列数据;
可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端;
可以通过服务发现或者静态配置去获取监控的 targets;
有多种可视化图形界面;
易于伸缩。;

二、Prometheus组成及架构

Prometheus包含了许多组件,其中许多组件都是可选的,常用的组件有:

Prometheus Server:用于收集和存储时间序列数据;

Client Library:客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server;

Push Gateway:主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向Prometheus server 端推送它们的 metrics;

Exporters:用于暴露已有的第三方服务的 metrics 给 Prometheus;

Alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对端的接受方式,发出报警;

…………等等,还有好多,这里就列出几个常用的组件!

Prometheus官方文档中的架构图:
1.png
官方的架构图中,主要模块块包括:Prometheus server, exporters, Pushgateway, PromQL, Alertmanager 以及图形界面;

大致的工作流程是:

(1)Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics;

(2)Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报;

(3)Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警;

(4)在图形界面中,可视化采集数据;

三、部署prometheus

服务器版本主机名ip
Centos 7.6Zabbix192.168.168.101
Centos 7.6Prometheus192.168.167.35

官方下载地址
Prometheus下载地址: https://prometheus.io/download/
node_exporter下载地址 : https://prometheus.io/download/
Grafana下载地址: https://grafana.com/grafana/download

1、服务端部署Prometheus

#安装wget命令

yum install -y wget
#下载Prometheus安装包

mkdir -p /data/soft
cd /data/soft
wget https://github.com/prometheus/prometheus/releases/download/v2.34.0-rc.0/prometheus-2.34.0-rc.0.linux-amd64.tar.gz
#解压安装包

tar xf prometheus-2.34.0-rc.0.linux-amd64.tar.gz -C /opt/
ln -s /opt/prometheus-2.34.0-rc.0.linux-amd64 prometheus
#注:官网提供的是二进制版,解压就能用,不需要编译

#创建用户/数据目录、授权

useradd -s /sbin/nologin -M prometheus 
mkdir /data/prometheus -p
chown -R prometheus. /opt/prometheus*
添加systemctl启动方式

vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus
Restart=on-failure

[Install]
WantedBy=multi-user.target

#设置开机自启

systemctl enable prometheus
systemctl start prometheus
systemctl status prometheus
打开 http://localhost:9090/graph (要找开对应端口的防火墙)
Status-Targets 查看 Endpoint 对应的 State 是 UP ,即代表成功 ,如下图:

2.png3.png
2、客户端安装Node Exporter采集主机运行数据

安装wget命令

yum install -y wget
下载Prometheus安装包

mkdir -p /data/soft
cd /data/soft
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
解压安装包

tar xf node_exporter-1.3.1.linux-amd64.tar.gz -C /opt/
ln -s /opt/node_exporter-1.3.1.linux-amd64 /opt/node_exporter
将node_exporter加入系统服务

vi /usr/lib/systemd/system/node_exporter.service
#添加内容:

[Unit]
Description=node_exporter
[Service]
ExecStart=/opt/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
#设置开机自启

systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter
#查看日志

tailf /opt/node_exporter/nohup.out

3、服务端配置监控客户端

#修改服务端配置文件

vim /opt/prometheus/prometheus.yml
#末尾添加如下内容:

  - job_name: 'Zabbix'
    metrics_path: '/metrics'
    static_configs:
    - targets: ['192.168.168.101:9100']
#如图:

11.png
注:YML配置文件格式需严格对齐

:wq
保存退出
重启Prometheus服务

systemctl restart prometheus
打开prometheus页面查看是不是有对应的数据了
http://localhost:9090/graph
12.png

四、Grafana安装部署

请手动移至Grafana搭建

五、Grafana添加Prometheus数据(图例)

1、Grafana添加Prometheus数据源
33.png
2、配置Prometheus数据源
34.png35.png
3、创建仪表盘
36.png
4、配置仪表盘
41.png
导入后就会出现如下截图
42.png
六、添加认证方式

刚才我们直接通过http就可以访问到数据采集接口上的数据。没有安全性。我们可以加入http认证实现输入密码才能访问接口。
分两步。

1.客户端在node_exporter创建配置文件设置用户名密码。

2.prometheus在配置文件中写入用户名密码。

1、创建一个用于接口访问的用户,如prometheus,并且加密密码。
useradd admin 
echo "prometheus" | passwd  --stdin admin
yum install httpd-tools –y
htpasswd -nBC 12 '' | tr -d ':\n'
#输出

$2y$12$XpIdYSwiFcy5wr8bUfbcZeD0AxpMrKxuXMKm2G8c1OhVhdg50b8wa

#2、客户端在node_exporter创建配置文件设置用户名密码
node_exporter根目录下添加配置文件

vim /opt/node_exporter/config.yml
#添加内容

basic_auth_users:
  admin: $2y$12$XpIdYSwiFcy5wr8bUfbcZeD0AxpMrKxuXMKm2G8c1OhVhdg50b8wa
#注: 用户名/加密密码

#node_exporter系统服务文件指定config.yml的位置

[Unit]
Description=node_exporter
[Service]
ExecStart=/opt/node_exporter/node_exporter --web.config=/opt/node_exporter/config.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
#添加内容如图:

43.png
重载服务。

systemctl daemon-reload && systemctl reload node_exporter
刷新接口页面发现需要登陆 并且监控那边也挂了。
51.png52.png
3、服务端Prometheus配置文件配置用户名密码重载即可
修改服务端配置文件

vim /opt/prometheus/prometheus.yml
#修改添加内容:

  - job_name: 'Zabbix'
    metrics_path: '/metrics'
    basic_auth:
      username: admin
      password: prometheus
    static_configs:
    - targets: ['192.168.168.101:9100']
#如图:

55.png
重启Prometheus

systemctl restart prometheus
重启后恢复正常
66.png


Comment