Prometheus+Grafana监控

什么是Prometheus
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。
2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。
Prometheus目前在开源社区相当活跃。Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。

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

Prometheus监控基本原理
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

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

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

一、安装 Prometheus Server

  1. 下载二进制包(下载地址:https://prometheus.io/download/

  2. 解压

    tar -xzvf prometheus-2.18.1.linux-amd64.tar.gz

  3. 移动到安装目录

    mv prometheus-2.6.1.linux-amd64 /data/prometheus

  4. 切换到prometheus目录,修改配置文件底部监控本机
    cd /data/prometheus
    vim prometheus.yml
    配置文件注解

global:
  # 默认情况下,每15s拉取一次目标采样点数据。
  scrape_interval:     15s 
  # 我们可以附加一些指定标签到采样点度量标签列表中, 用于和第三方系统进行通信, 包括:federation, remote storage, Alertmanager
  external_labels:
    # 下面就是拉取自身服务采样点数据配置
    monitor: 'codelab-monitor'
scrape_configs:
  # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
  - job_name: 'prometheus'
    # 覆盖global的采样点,拉取时间间隔5s
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  1. 对prometheus配置语法校验(建议每次修改prometheus配置之后, 都进行语法校验, 以免导致 prometheus server无法启动.)
./promtool check config prometheus.yml
  1. 启动Prometheus
# 指定配置文件
--config.file="prometheus.yml"
# 指定监听地址端口
--web.listen-address="0.0.0.0:9090" 
# 最大连接数
--web.max-connections=512
# tsdb数据存储的目录,默认当前data/
--storage.tsdb.path="data/"
# premetheus 存储数据的时间,默认保存15天
--storage.tsdb.retention=15d 
启动选项了解:./prometheus --help
./prometheus --config.file=prometheus.yml
  1. 通过浏览器访问prometheus
    输入:http://localhost:9090访问
    在这里插入图片描述
  2. 设置prometheus系统服务,并配置开机启动
    8.1 touch /usr/lib/systemd/system/prometheus.service
    8.2 vim /usr/lib/systemd/system/prometheus.service
    将如下配置写入prometheus.servie
[Unit]
Description=Prometheus
After=network.target
[Service]
# Type设置为notify时,服务会不断重启
Type=simple
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/data/prometheus/data --storage.tsdb.retention=60d
Restart=on-failure
[Install]
WantedBy=multi-user.target
Prometheus启动参数说明
--config.file -- 指明prometheus的配置文件路径
--web.enable-lifecycle -- 指明prometheus配置更改后可以进行热加载
--storage.tsdb.path -- 指明监控数据存储路径
--storage.tsdb.retention --指明数据保留时间

8.3 配置开机启动
8.3.1 重新加载服务配置文件
systemctl daemon-reload
8.3.2 设置开机自启
systemctl enable prometheus.service
prometheus systemctl start prometheus.service
8.3.3 查看 prometheus状态
systemctl status prometheus.service
正常状态如下
在这里插入图片描述

二、Prometheus 配置监控其他Linux主机

  1. node_exporter安装配置
    下载地址https://www.cnblogs.com/momoyan/p/11520755.html

  2. 将文件下载成功后上传到data目录并解压重命名
    tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz
    mv node_exporter-0.18.1.linux-amd64 node_exporter

  3. 系统服务配置 node_exporter
    touch /usr/lib/systemd/system/node_exporter.service
    vim /usr/lib/systemd/system/node_exporter.service

  4. 在node_exporter.service中加入如下代码:

[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/data/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
  1. 启动 node_exporter 服务并设置开机启动
    5.1 重新加载服务配置文件
    systemctl daemon-reload
    5.2 设置开机自启
    systemctl enable node_exporter.service
    systemctl start node_exporter.service
    5.3 查看 node_exporter状态
    systemctl status node_exporter.service
  2. node_exporter启动成功后, 你就可以通过如下api看到监控数据,如果可以看到数据,代表部署正常.
    http:localhost:9100
    在这里插入图片描述
  3. 为了更好的展示, 接下来我们将这个api 配置到 prometheus server中, 并通过grafana进行展示
    vim prometheus.yml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

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

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['10.22.4.149:9100']
    - targets: ['10.22.4.150:9100']
    - targets: ['10.22.4.151:9100']
    - targets: ['10.22.4.165:9100']

  1. 重载prometheus配置
    curl -X POST http://10.22.5.164:9090/-/reload
  2. 进入promtheus中的targets模块,可查看监控的主机
    在这里插入图片描述

三、数据展示Grafana安装配置

  1. 下载地址:https://grafana.com/grafana/download
  2. 解压包
    tar -zxvf grafana-7.0.0.linux-amd64.tar.gz
  3. 重命名
    mv grafana-7.0.0.linux-amd64 grafana
  4. 启动grafana
    ./grafana-server &
  5. 系统服务配置 node_exporter
    touch /usr/lib/systemd/system/grafana.service
    vim /usr/lib/systemd/system/grafana.service
[Unit]
Description=Grafana
After=network.target

[Service]
Type=notify
ExecStart=/data/grafana/bin/grafana-server -homepath /data/grafana
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 设置开机自启
    6.1 重新加载服务配置文件
    systemctl daemon-reload
    5.2 设置开机自启
    systemctl enable grafana.service
    systemctl start grafana.service
    5.3 查看 node_exporter状态
    systemctl status grafana.service
  2. 启动以后默认访问端口3000
    默认用户名admin 密码admin
    在这里插入图片描述
  3. Configuration->Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入name和url
    在这里插入图片描述
  4. 下载对应的dashboard导入
    进入grafana官网下载dashboard,下载地址:https://grafana.com/grafana/dashboards
  5. 导入json文件
    将下载的json文件导入grafana
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值