Prometheus + Influx +Grafana 监控安装部署

下载监控所需安装包:下载地址 (下载文件需要关注我,当时未找到不需要代价的下载方式,所以下载完毕后取消关注即可)

一. Prometheus安装

# 从下载的安装文件夹内找到安装包:prometheus-2.8.1.linux-amd64.tar.gz,并上传到服务器
# 1. 解压文件
tar -zxvf prometheus-2.8.1.linux-amd64.tar.gz -C /opt/
# 2. 重命名
cd /opt
mv prometheus-2.8.1.linux-amd64 prometheus
cd prometheus
# 3. 启动prometheus (以后台的方式启动)
nohup ./prometheus >/dev/null 2>&1 &

登录:localhost:9090 即可查看,确认prometheus是否正常启动

二. Grafana安装

# 从下载的安装文件夹内找到安装包:grafana-6.3.6-1.x86_64.rpm,并上传到服务器
# 1.使用yum 命令安装
yum localinstall grafana-6.3.6-1.x86_64.rpm

#启动 Grafana
systemctl start grafana-server
#停止 Grafana
systemctl stop grafana-server
#重启 Grafana
systemctl restart grafana-server
#设置开机自启动
systemctl enable grafana-server

登录:localhost:3000 ,首次登录账号密码为:admin/admin

三. 搭建服务器节点监控系统

需求:由于某些原因,我想要监控

192.168.1.111,

192.168.1.112,

192.168.1.113,

192.168.1.114,

192.168.1.115.

五台机器的CPU,IO等系统资源使用情况,我该如何使用Prometheus + Grafana 实现呢?

1. 部署node_exporter

node_exporter 是Prometheus 的一个插件,部署该插件,可以将本地机器的系统资源信息收集并发生给Prometheus

# 从下载的安装文件夹内找到安装包:node_exporter-1.0.1.linux-amd64.tar.gz,并上传到服务器
tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C /opt/
cd /opt/
mv c-1.0.1.linux-amd64/ node_exporter
cd node_exporter/
# 启动node_export
nohup ./node_exporter --web.listen-address=":18999" > /dev/null 2>&1 &
# 注意:--web.listen-address=":18999"
# 端口一定不能被占用,否则会报错,可以手动修改为任意端口

# 此时一台机器已经部署完毕,假如你的集群内配置ssh免密登录,直接使用一下命令
ssh -r /opt/node_exporter root@192.168.1.112:/opt
ssh -r /opt/node_exporter root@192.168.1.113:/opt
ssh -r /opt/node_exporter root@192.168.1.114:/opt
ssh -r /opt/node_exporter root@192.168.1.115:/opt

# 如果没有配置,那你只能一遍一遍的输入密码了

2. 配置Prometheus服务端

# 找到Prometheus安装机器位置
cd /opt/prometheus

# 将下面配置添加到prometheus.yml

**注意:**配置文件内的ip及端口,根据你安装node_exporter的改变而改变

- job_name: 'node_1'
    scrape_interval: 10s
    static_configs:
      - targets: ['192.168.1.111:18999']
        labels:
          instance: node1
  - job_name: 'node_2'
    scrape_interval: 10s
    static_configs:
      - targets: ['192.168.1.112:18999']
        labels:
          instance: node2
  - job_name: 'node_3'
    scrape_interval: 10s
    static_configs:
      - targets: ['192.168.1.113:18999']
        labels:
          instance: node3
  - job_name: 'node_4'
    scrape_interval: 10s
    static_configs:
      - targets: ['192.168.1.114:18999']
        labels:
          instance: node4
  - job_name: 'node_5'
    scrape_interval: 10s
    static_configs:
      - targets: ['192.168.1.115:9090']
        labels:
          instance: node5

3. 重启服务端

# 重启Prometheus
nohup ./prometheus >/dev/null 2>&1 &

# 此时可能服务端会起不来,有可能是因为你配置文件内的格式问题,我下面插入一张我配置图片供参考

linux grafana 后台启动_linux

4. 配置granafa

# 安装
yum localinstall grafana-6.4.4-1.x86_64.rpm
# 启动grafana
systemctl start grafana-server
# 设置开机自启
systemctl enable grafana-server
1. 登录grafana
2. 添加数据源

linux grafana 后台启动_flink_02

linux grafana 后台启动_flink_03

linux grafana 后台启动_linux_04

3. 导入模板

linux grafana 后台启动_maven_05

linux grafana 后台启动_maven_06

从下载的安装文件夹内找到文件:node-exporter-server-metrics_rev8.json

linux grafana 后台启动_linux grafana 后台启动_07

linux grafana 后台启动_linux grafana 后台启动_08

4. 呈现界面

linux grafana 后台启动_linux_09

至此,集群节点监控系统搭建完毕

四. 搭建Spark监控

参考下面这篇博客:

Grafana 内Spark模板:spark_prometheus_metrics.json (下载的安装包内有)

五. 搭建Flink监控

Flink 内部有实现类去采集监控数据指标,并且将数据写入不同的存储。

Flink 里面提供了 InfluxDBReporter 支持将 Flink 的 metrics 数据直接存储到 InfluxDB

1. 部署InfluxDB

# 从下载的安装文件夹内找到安装包:influxdb-1.1.0.x86_64.rpm
# 执行命令:
yum localinstall influxdb-1.1.0.x86_64.rpm

# 启动 influxdb 命令
systemctl start influxdb
# 重启 influxdb 命令
systemctl restart influxd
# 停止 influxdb 命令
systemctl stop influxd
# 设置开机自启动
systemctl enable influxdb 

nohup influxd -config /etc/inlfux/influxdb.conf  > influxdb.log 2>&1 &

2. 创建数据库

# 进入 influxDB数据库
influx

# 创建数据库
create database flink

# 进入数据库
use flink

# 查看指标(对应mysql内就是表)
show MEASUREMENTS

3. 配置flink

在 flink-conf.yaml 中配置的样例如下:

metrics.reporter.influxdb.class: org.apache.flink.metrics.influxdb.InfluxdbReporter
metrics.reporter.influxdb.host: 192.168.0.115
metrics.reporter.influxdb.port: 8086
metrics.reporter.influxdb.db: flink
# 如果influx没有配置密码登录,可以省略下面两行
metrics.reporter.influxdb.username: test
metrics.reporter.influxdb.password: test

需要将 flink-metrics-influxdb-1.9-SNAPSHOT.jar 依赖放到 lib 目录下的

flink-metrics-influxdb-1.9-SNAPSHOT.jar 位于 $FLINK_HOME/opt目录下

随后启动flink程序,如果配置都没问题,最终Flink程序的指标会在Prometheus中出现。

4. 配置Granafa

flink 指标尚未研究透彻,模板待定

六. 总结

Prometheus + Influx + Grafana 还可以监控其他的程序。比如说监控服务器上某一进程是否挂了。你自己可以写代码去获取该进程的状态,然后解析其状态并将数据回写到Pushgateway,最后通过Grafana呈现此程序的状态。