栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

监控篇之Prometheus+grafana的简介及源码搭建过程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

监控篇之Prometheus+grafana的简介及源码搭建过程

一、Prometheus简介
Prometheus是一种开源的监控报警系统和是序列数据库【TSDB】。Prometheus采用Go语言开发,是一个系统和服务监控系统,以给定的时间间隔从配置的目标收集,度量,评估规则表达式,显示结果,并在观察到指定条件时触发警报。

Prometheus已经被广泛应用于数据中心监控,尤其是和Kubernetes结合的容器监控。而且Prometheus性能也足够支撑万台规模的集群。
Prometheus由两部分组成,一个是监控报警系统,另一个是自带的时序数据库【TSDB】

二、Prometheus特点
1、多维度数据模型
2、灵活的查询语言。
3、不依赖分布式存储,单个服务器节点是自主的。
4、通过基于HTTP的pull方式采集时序数据。
5、可以通过中间网关进行时序列数据推送。
6、通过服务发现或者静态配置来发现目标服务对象。
7、支持多种多样的图表和界面展示,比如Grafana等。

三、Prometheus运行流程
执行流程:prometheus根据配置定时去拉取各个节点的数据,默认使用的拉取方式是pull,也可以使用pushgateway提供的push方式获取各个监控节点的数据。将获取到的数据存入TSDB,一款时序型数据库。此时prometheus已经获取到了监控数据,可以使用内置的PromQL进行查询。它的报警功能使用alertmanager提供,alertmanager是prometheus的告警管理和发送报警的一个组件。prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。

服务过程:
1、Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。
Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。
Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。
2、Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
3、Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持多种方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模板引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。
4、PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
5、alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式

三大套件说明
1、Server
Server主要负责数据采集和存储,提供PromQL查询语言的支持
2、alertmanager
alertmanager 警告管理器,用来进行报警
3、Push Gateway
支持临时性Job主动推送指标的中间网关

四、搭建过程
搭建所需环境:
1、go安装包
因为Prometheus底层是基于GO语言编写的,所以需要下载go安装包
go源码包的安装路径:https://golang.google.cn/dl/
我这里安装的是1.8.1 版本的

# 解包
tar -xvf go.1.8.1.linux-amd64.tar.gz -C /usr/local/go
# 修改配置文件
vim /etc/profile
# 末尾增加两行
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
# 刷新配置
source /etc/profile
# 检查是否成功
go verison


OK 成功~

2、Prometheus源码包的安装
源码包的下载,可以在官网上进行下载
https://prometheus.io/download/
我这里下载的是prometheus-2.17.1.linux-amd64.tar.gz
2.1、安装过程

wget https://github.com/prometheus/prometheus/releases/download/v2.17.1/prometheus-2.17.1.linux-amd64.tar.gz
tar -xvf prometheus-2.17.1.linux-amd64.tar.gz
mv prometheus-2.17.1.linux-amd64/prometheus /usr/local/bin/

2.2、配置启动文件

#生产环境下,我们需要为其配置启动文件
vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
After=network.target
documentation=https://prometheus.io/docs/introduction/overview/

[Service]
Type=simple
WorkingDirectory=/home/data/prometheus/     # prometheus存放路径
ExecStart=/usr/local/bin/prometheus       # prometheus 执行指令
  --config.file=/etc/prometheus/prometheus.yml 
  --web.read-timeout=5m 
  --web.max-connections=512 
  --storage.tsdb.retention=15d 
  --storage.tsdb.path=/home/data/prometheus 
  --query.timeout=2m

Restart=on-failure

[Install]
WantedBy=multi-user.target

2.3、配置文件
Prometheus 通过在目标节点的 HTTP 端口上采集 metrics(遥测专用词,度量指标)来监控目标节点(以下会称为“采样目标”)。因为 Prometheus 也以相同的方式暴露自己的数据,所以他也可以采集和检查自己的健康状况。
将配置文件移动到标准目录 /etc/prometheus/

mkdir /etc/prometheus
mv prometheus-2.17.1.linux-amd64/prometheus.yml /etc/prometheus

初始的配置文件比较简单,如下,自带了一个 job,来监控 prometheus server 的状态。

global:
  scrape_interval:     15s 
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:

rule_files:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']   # 配置对应的IP和端口

2.4、启动prometheus

systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus


如图,启动成功~~
2.5、web查看
启动好之后,prometheus 服务会监听在端口 9090,我们使用 IP + Port,即可查看 prometheus 简单的图像界面

**注:可以看出 Prometheus 二进制安装非常方便,没有依赖,自带查询 web 界面。
在生产环境中,我们可以将 Prometheus 添加到 init 配置里,或者使用 supervisord 作为服务自启动。
**

3、prometheus安装完成后,接下来安装node_exporter
要使得Prometheus能够监控服务器相关资源,就必须得安装node_exporter
监控服务器CPU、内存、磁盘、I/O等信息,首先需要安装node_exporter。
node_exporter的作用是用于机器系统数据收集。
3.1、安装步骤:

# 1、wget安装 或者下载本地上传至服务器
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
# 解压
tar xf node_exporter-0.18.1.linux-amd64.tar.gz
mv node_exporter-0.18.1.linux-amd64/node_exporter /usr/local/bin/

3.2、配置启动文件

vim /etc/systemd/system/node_export.service
[Unit]
Description=Node Export
After=network.target
documentation=https://prometheus.io/docs/guides/node-exporter/

[Service]
Type=simple
WorkingDirectory=/usr/local/prometheus/node_exporter
ExecStart=/usr/local/bin/node_exporter 

Restart=on-failure

[Install]
WantedBy=multi-user.target

3.3、启动node_exporter

systemctl daemon-reload
systemctl start node_export
systemctl enable node_export

3.4、加入监控
我们手动加入 prometheus 监控,修改其配置文件,再尾部增加如下内容:
编辑 vim prometheus.yml

- job_name: 'node_export'
    static_configs:
      - targets:     # 下面为对应的机器IP及端口
        - localhost:9100   
        - web1:9100
        - web2:9100
        - web3:9100
        - web4:9100

注:要使得prometheus实现监控,需要能够解析这些地址,我们可以修改其 /etc/hosts 文件。

3.5、然后重启prometheus服务

[root@server1 ~]# systemctl restart prometheus
[root@server1 ~]# systemctl status prometheus


4、grafana rpm安装
4.1、下载rpm
推荐使用 rpm 包进行安装,这样很多依赖可以自动解决,而且也配置好了启动脚本。

wget https://dl.grafana.com/oss/release/grafana-6.7.2-1.x86_64.rpm
sudo yum install grafana-6.7.2-1.x86_64.rpm

4.2、启动

systemctl enable grafana-server
systemctl start grafana-server


4.3、访问grafana
访问IP+Port,grafana默认的启动 port是3000,初识账号和密码都是admin


4.4、接下来配置数据源
grafana 支持的数据源非常多,我们这里选择 prometheus。

因为我们的 grafana 和 prometheus 在同一台机器上面,地址填写 localhost:9090 即可。

4.5、导入模板
开始我们可能不会制作模板,我们先导入一个模板,只需要输入其编号即可。
更多的官方 Dashboard 请参见:
https://grafana.com/grafana/dashboards?orderBy=name&direction=asc

4.6、查看效果

OK~ 搭建完成

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320099.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号