grafana + prometheus搭建服务器监控系统(一)---安装、配置

一、Grafana介绍

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:

  1. 展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
  2. 数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
  3. 通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
  4. 混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
  5. 注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
  6. 过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

二、prometheus介绍

Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

  1. 多维度数据模型
    每一个时间序列数据都由metric度量指标名称和它的标签labels键值对集合唯一确定:这个metric度量指标名称指定监控目标系统的测量特征(如:http_requests_total- 接收http请求的总计数)。labels开启了Prometheus的多维数据模型:对于相同的度量名称,通过不同标签列表的结合, 会形成特定的度量维度实例。(例如:所有包含度量名称为/api/tracks的http请求,打上method=POST的标签,则形成了具体的http请求)。这个查询语言在这些度量和标签列表的基础上进行过滤和聚合。改变任何度量上的任何标签值,则会形成新的时间序列图。
  2. 灵活的查询语言(PromQL):可以对采集的metrics指标进行加法,乘法,连接等操作;
  3. 可以直接在本地部署,不依赖其他分布式存储;
  4. 通过基于HTTP的pull方式采集时序数据;
  5. 可以通过中间网关pushgateway的方式把时间序列数据推送到prometheus server端;
  6. 可通过服务发现或者静态配置来发现目标服务对象(targets)。
  7. 有多种可视化图像界面,如Grafana等。
  8. 高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G。
  9. 做高可用,可以对数据做异地备份,联邦集群,部署多套prometheus,pushgateway上报数据

三、前期准备

我将搭建三个虚拟机,一台安装grafana、prometheus,用作监控汇总展示的主机,其它两台是被监控的,上面会按需安装prometheus的exporter。

  • oracle vm virtualbox 创建虚拟机
  • cmder 命令行工具
  • centos7

创建虚拟机以及配置网络的过程这里就不赘述了

四、grafana下载安装

在 grafana官网 查找最新版本的grafana安装包

grafana下载链接

登录服务器1,按你喜好找一个安装grafana的目录,我是在根目录下的packages文件夹中安装

cd /packages
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm
yum install grafana-enterprise-8.3.3-1.x86_64.rpm
// 设置grafana为开机自启
systemctl daemon-reload  // 加载新的systemd配置
systemctl enable grafana-server  // 设置开机自启
systemctl start grafana-server  // 启动grafana
systemctl status grafana-server  // 查看进程启动状态

grafana启动默认会占用3000端口,可以在浏览器通过ip:3000的方式打开grafana管理界面
如果打不开,可能是防火墙没有开放3000端口

// 加上--permanent会永久开启
firewall-cmd --zone=public --add-port=3000/tcp --permanent
// 开启后要重启防火墙
firewall-cmd --reload
// 查看已开放的端口
firewall-cmd --zone=public --list-ports
grafana首页

五、prometheus下载安装

去 prometheus官网 查找prometheus的最新包地址

prometheus下载页

// 在/packages目录下
wget https://github.com/prometheus/prometheus/releases/download/v2.33.0-rc.0/prometheus-2.33.0-rc.0.linux-amd64.tar.gz
// 下载得到prometheus-2.33.0-rc.0.linux-amd64.tar.gz文件
tar xvfz prometheus-2.33.0-rc.0.linux-amd64.tar.gz
// 解压得到prometheus-2.33.0-rc.0.linux-amd64文件夹,用mv命令改个简单的名字
mv prometheus-2.33.0-rc.0.linux-amd64 prometheus

下一步,进入prometheus文件夹,修改prometheus.yml文件

# 这是官网上提供的最简配置
global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  # - "first.rules"
  # - "second.rules"

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

设置prometheus开机自启

// 创建文件 /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System

[Service]
ExecStart=/packages/prometheus/prometheus \
  --config.file=/packages/prometheus/prometheus.yml \
  --web.listen-address=:9090

Restart=on-failure
[Install]
WantedBy=multi-user.target
// packages/prometheus 是我prometheus的安装路径,可以按需修改
systemctl daemon-reload  // 加载新的systemd配置
systemctl enable prometheus  // 设置开机自启
systemctl start prometheus  // 启动prometheus
systemctl status prometheus  // 查看启动状态

在yml文件中可以配置占用的端口号,记得在防火墙设置放开该端口,我的是9090
可以通过ip:9090的方式在浏览器中打开prometheus的管理界面


prometheus首页

六、安装node-exporter

在被监听的linux机器上安装node_exporter,可以监控服务器CPU、内存、磁盘、I/O等信息。node_exporter的作用是用于机器系统数据收集。
和其他exporter一样,node_exporter提供http接口提供数据,prometheus会隔段时间调接口拉取数据汇总。

在需要监控的机器的根目录,创建/packages文件夹
去 prometheus官网 查找node_exporter的最新包地址

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64 node_exporter

将node_exporter加入开机自启

// 创建文件 /etc/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://github.com/prometheus/node_exporter

[Service]
ExecStart=/packages/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
systemctl daemon-reload  // 加载新的systemd配置
systemctl enable node_exporter// 设置开机自启
systemctl start node_exporter // 启动node_exporter
systemctl status node_exporter // 查看启动状态

可以访问ip:9100,确定是否运行成功(记得在防火墙开放端口)


node_exporter启动成功

为prometheus添加监控项(装了prometheus的主机)

// 编辑prometheus.yml文件,添加下面部分
# node_exporter监听主机信息
  - job_name: "node_info"
    static_configs:
      - targets: ['172.20.10.7:9100']
        labels:
          app: node2
          hostname: node2
          role: node
      - targets: ['172.20.10.8:9100']
        labels:
          app: node3
          hostname: node3
          role: node
// 注意这个ip是启用了node_exporter的服务器地址,大家可以按需填写,命名也是自定义的
// 重启prometheus
systemctl restart prometheus

此时,在prometheus管理界面就可以找到新增的target了


添加target成功

在grafana管理界面添加prometheus为数据源datasource
在grafana管理界面添加node_exporter的dashboard模板(id 8919)
然后就可以看到被监控服务器的图表信息了


dashboard截图

你可能感兴趣的:(grafana + prometheus搭建服务器监控系统(一)---安装、配置)