Prometheus+grafana性能监控平台
文章目录
- Prometheus+grafana性能监控平台
- 1. 监控系统组成
- Grafana
- Prometheus
- 数据源
- 工作原理
- 2 .安装 Prometheus
- 3 . Grafana 部署
- 4.监控Linux服务器性能指标
1. 监控系统组成
Grafana
是一个监控仪表系统,由Grafana Labs公司开源的的一个系统监测 (System Monitoring) 工具。帮助用户简化监控的复杂度,用户只需要提供需要监控的数据,它就可以生成各种可视化仪表。同时它还支持报警功能,可以在系统出现问题时通知用户。并且Grafana不仅仅只支持Prometheus作为查询的数据库,它还支持如下:
Prometheus
Graphite
OpenTSDB
InfluxDB
MySQL/PostgreSQL
Microsoft SQL Serve
等等
Prometheus
Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。它涵盖了可以绑定的整个生态系统工具集及其功能。Prometheus主要用于对基础设施的监控,包括服务器(CPU、MEM等)、数据库(MYSQL、PostgreSQL等)、Web服务等,几乎所有东西都可以通过Prometheus进行监控。而它的数据,则是通过配置,建立与数据源的联系来获取的。
虽然Grafana可以从多种数据(如Prometheus、MySQL/PostgreSQL、OpenTSDB)等等中获取数据,不过Prometheus天生就是为了监控而生,所以我们用的最多的还是Prometheus。这也是我们的标配哦~
数据源
在Prometheus的架构设计中,Prometheus并不直接服务监控特定的目标,就比如我们监控linux系统,Prometheus不会自己亲自去监控linux的各项指标。其主要任务负责数据的收集,存储并且对外提供数据查询支持。
因此为了能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Exporter是一个相对开放的概念,不是专门指某一个程序。它可以是一个独立运行的程序,独立于监控目标以外(如Node Exporter程序,独立于操作系统,却能获取到系统各类指标)。也可以是直接内置在监控目标中的代码(如在项目代码层面接入普罗米修斯API,实现指标上报)。总结下来就是,只要能够向Prometheus提供标准格式的监控样本数据,那就是一个Exporter。
而Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。
对于大家常见的监控主机运行的指标如CPU, 内存,磁盘等信息,我们可以为linux系统下载Node Exporter程序,该程序会监控linux各项指标,并通过:http://:9100/metrics来展示各项指标。而其给我们返回的内容如下图所示:
工作原理
现在我们有了以下3个部分:
Exporter 监控工具,获取数据
Prometheus 普罗米修斯时序数据库,用来存储和查询你的监控数据
Grafana 仪表盘
2 .安装 Prometheus
我们借助docker来安装,新建目录docker-monitor,在里面创建文件docker-compose.yml,内容如下:
version: "3"
services:
prometheus:
image: prom/prometheus:v2.4.3
container_name: 'prometheus'
volumes:
- ./prometheus/:/etc/prometheus/ #映射prometheus的配置文件
- /etc/localtime:/etc/localtime:ro #同步容器与宿主机的时间,这个非常重要,如果时间不一致,会导致prometheus抓不到数据
ports:
- '9090:9090'
监控web应用性能指标
在docker-monitor目录下新增prometheus目录,在里面创建prometheus配置文件prometheus.yml,内容如下:
global: #全局配置
scrape_interval: 15s #全局定时任务抓取性能数据间隔
scrape_configs: #抓取性能数据任务配置
- job_name: 'prometheus' #抓取prometheus自身性能指标数据任务
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
在docker-monitor目录下执行如下命令启动prometheus
docker-compose up -d
docker compose安装
docker compose安装步骤
sudo curl -L
"https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname
-s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
在浏览器访问prometheus:http://192.168.182.100:9090,如下图所示:
点击Status下拉,选中Targets,界面如下:
以上是prometheus自带的指标查询界面,但是太简陋,一般我们都是使用grafana图形展示工具配合prometheus一起使用
3 . Grafana 部署
(1)先用docker来安装下grafana,在上面的docker-compose.yml文件里加入grafana的安装配置,如下所示:
version: "3"
services:
prometheus:
image: prom/prometheus:v2.4.3
container_name: 'prometheus'
volumes:
- ./prometheus/:/etc/prometheus/ #映射prometheus的配置文件
- /etc/localtime:/etc/localtime:ro #同步容器与宿主机的时间,这个非常重要,如果时间不一致,会导致prometheus抓不到数据
ports:
- '9090:9090'
grafana:
image: grafana/grafana:7.4.3
container_name: 'grafana'
ports:
- '3000:3000'
volumes:
- ./grafana/config/grafana.ini:/etc/grafana/grafana.ini #grafana报警邮件配置
- ./grafana/provisioning/:/etc/grafana/provisioning/ #配置grafana的prometheus数据源
- /etc/localtime:/etc/localtime:ro
env_file:
- ./grafana/config.monitoring #grafana登录配置
depends_on:
- prometheus #grafana需要在prometheus之后启动
(2)在docker-monitor目录下新增grafana目录,在里面创建文件config.monitoring,内容如下:
GF_SECURITY_ADMIN_PASSWORD=admin #grafana管理界面的登录用户密码,用户名是admin
GF_USERS_ALLOW_SIGN_UP=false #grafana管理界面是否允许注册,默认不允许
(3)在grafana目录下创建目录provisioning,在里面创建datasources目录,在datasources目录里新建文件datasource.yml,内容如下:
# config file version
apiVersion: 1
deleteDatasources: #如果之前存在name为Prometheus,orgId为1的数据源先删除
- name: Prometheus
orgId: 1
datasources: #配置Prometheus的数据源
- name: Prometheus
type: prometheus
access: proxy
orgId: 1
url: http://prometheus:9090 #在相同的docker compose下,可以直接用prometheus服务名直接访问
basicAuth: false
isDefault: true
version: 1
editable: true
(4)在grafana目录下创建目录config,在里面创建文件grafana.ini,内容如下:
#################################### SMTP / Emailing ##########################
# 配置邮件服务器
[smtp]
enabled = true
# 发件服务器
host = smtp.qq.com:465
# smtp账号
user = 896096254@qq.com
# smtp 授权码,参考网易邮箱获取授权码
password = patuodowqfzlbfch
# 发信邮箱
from_address = 896096254@qq.com
# 发信人
from_name = zirui
(5)用docker
compose启动grafana,访问grafana页面http://192.168.182.100:3000,用户名为admin,密码为admin,如下:
登录进去首页如下:
4.监控Linux服务器性能指标
(1)下载linux监控的exporter镜像
docker pull prom/node-exporter
(2)启动监控的数据库连接,容器创建的时候需要指定
docker run -d -p 9100:9100 prom/node-exporter
(3)在prometheus.yml文件末尾追加如下配置:
- job_name: 'linux'
scrape_interval: 10s
static_configs:
- targets: ['192.168.182.100:9100']
labels:
instance: linux-1
4、重新启动Prometheus镜像,查看Prometheus是否启动完成,访问:http://服务器ip:9090
docker-compose up --force-recreate -d
5、在Grafana中导入Prometheus模板
这里给了大家两个dashboard模板ID
11074是英文的,8919是中文的,这都是官方的id
导入成功页面: