赞
踩
Prometheus
特点
强大的数据模型,监控数据以metric{labels}的方式存储在内置的时间序列数据库中
监控数据的精细程度高,可以精确到1~5秒的采集程度
灵活的查询语句(PromQL)
采用HTTP pull/push两种数据采集传输方式
支持本地和远程存储
良好的可视化,自带Prometheus UI,可以直接输入PromQL查询监控指标,自动成图,并且支持用grafana进行数据呈现
支持大量的客户端库(exporter),像nginx,tomcat等,使prometheus可轻易获取服务监控指标
易扩展,当prometheus处理数据量过大时,可以进行联邦集群和功能分区,让多个prometheus产生一个逻辑集群
支持自动发现,动态发现监控目标
• 也是一款监控软件,也是一个时序数据库。
• 主要用在容器监控方面,也可以用于常规的主机监控。
• 使用google公司开发的go语言编写。
• Prometheus是一个框架,可以与其他组件完美结合。
prometheus server: 负责定时轮询采集数据、存储、对外提供数据查询、告警规则检测
exporter:以http的方式,暴露收集的metric,然后Prometheus server会定期来拉取数据,可安装在被监控主机
AlertManager:Prometheus server会将通过规则匹配的告警发送到alertmanager,然后alertmanager会对告警发送到邮箱、企业微信等,期间会对告警进行分组、静默或抑制
PushGateway:出于网络或安全问题,有时数据无法直接暴露给prometheus采集,这时需要pushgateway完成中转工作。用户把数据推送到pushgateway,然后由prometheus采用拉取pull的方式采集数据
数据存储
[root@prometheus ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.20.1/prometheus-2.20.1.linux-amd64.tar.gz
[root@prometheus ~]# tar xf prometheus-2.20.1.linux-amd64.tar.gz
[root@prometheus ~]# mv prometheus-2.20.1.linux-amd64 /usr/local/prometheus
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
29 - targets: ['192.168.4.10:9090']
[root@prometheus ~]# date -s "20220105 14:18:00"
[root@prometheus ~]# /usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
Checking /usr/local/prometheus/prometheus.yml
SUCCESS: 0 rule files found
[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
After=network.target
[Service]
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data/
[Install]
WantedBy=multi-user.target
[root@prometheus ~]# systemctl daemon-reload
[root@prometheus ~]# systemctl enable prometheus.service --now
[root@prometheus ~]# ss -tlnp | grep :9090
LISTEN 0 128 :::9090
查看监控页面
• 访问http://192.168.4.10:9090
• 被监
被监控控的对象称为targets
prometheus已经在监控自己了
查看监控图像:
添加需要查看的监控项:
查看监控项的图形信息:
添加被监控端
• 监控方式:
– 拉取:pull。监控端联系被监控端,采集数据
– 推送:push。被监控端主动把数据发给监控端。在prometheus中,push的方式需要额外的组件pushgateway
• 被监控端根据自身运行的服务,可以运行不同的exporter(被监控端安装的、可以与Prometheus通信,实现数据传递的软件)
• exporter列表:https://prometheus.io/docs/instrumenting/exporters/
部署通用的监控exporter
node_exporter安装
在Prometheus中,不仅提供了丰富的exporter,用于监控基础指标、中间件、网络设备等
在这里,node_exporter用于收集机器基础的监控指标,像cpu、内存、磁盘可用空间等,常用exporter如下:
范围 常用Exporter
数据库 MySQL Exporter, Redis Exporter, MongoDB Exporter, MSSQL Exporter等
硬件 Apcupsd Exporter,IoT Edison Exporter, IPMI Exporter, Node Exporter等
消息队列 Beanstalkd Exporter, Kafka Exporter, NSQ Exporter, RabbitMQ Exporter等
存储 Ceph Exporter, Gluster Exporter, HDFS Exporter, ScaleIO Exporter等
HTTP服务 Apache Exporter, HAProxy Exporter, Nginx Exporter等
API服务 AWS ECS Exporter, Docker Cloud Exporter, Docker Hub Exporter, GitHub Exporter等
日志 Fluentd Exporter, Grok Exporter等
监控系统 Collectd Exporter, Graphite Exporter, InfluxDB Exporter, Nagios Exporter, SNMP Exporter等
其它 Blockbox Exporter, JIRA Exporter, Jenkins Exporter, Confluence Exporter等
• node-exporter用于监控硬件和系统的常用指标
• exporter运行于被监控端,以服务的形式存在。每个exporter所使用的端口号都不一样。
• 在node1[192.168.4.11]上部署node exporter
[r[root@node1 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.0.linux-amd64.tar.gz 【root@node1 ~]# tar xf node_exporter-1.0.0-rc.0.linux-amd64.tar.gz [root@node1 ~]# mv node_exporter-1.0.0-rc.0.linux-amd64 /usr/local/node_exporter [root@node1 ~]# vim /usr/lib/systemd/system/node_exporter.service [Unit] Description=node_exporter After=network.target [Service] Type=simple ExecStart=/usr/local/node_exporter/node_exporter [Install] WantedBy=multi-user.target [root@node1 ~]# systemctl daemon-reload [root@node1 ~]# systemctl enable node_exporter.service --now [root@node1 ~]# ss -tlnp | grep :9100 LISTEN 0 128 :::9100
• 在Prometheus服务器上添加监控节点
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
• 查看node1节点的1分钟平均负载
grafana可视化
• grafana是一款开源的、跨平台的、基于web的可视化工具
• 展示方式:客户端图表、面板插件
• 数据源可以来自于各种源,如prometheus
[root@prometheus ~]# wget https://dl.grafana.com/oss/release/grafana-7.1.5- 1.x86_64.rpm
[root@prometheus prometheus_soft]# yum install -y grafana-7.1.5-1.x86_64.rpm
[root@prometheus ~]# systemctl enable grafana-server.service --now
• 修改配置,对接prometheus
访问http://192.168.4.10:3000。初始用户名和密码都是admin。第一次登陆时,要求改密码,我的密码改为jj123。
对接数据的步骤:
选择展示方式。导入模板文件,展示不同主题风格。
查看结果:
展示node1的监控信息
• grafana模板下载:https://grafana.com/grafana/dashboards/
• 导入主机监控模板
添加本地的模板
在node1节点上安装数据库
[root@node1 ~]# yum install -y mariadb-server
[root@node1 ~]# systemctl enable mariadb --now
mysql exporter需要访问数据库,所以需要在数据库中为exporter创建授权用户
[root@node1 ~]# mysql
MariaDB [(none)]> grant all on *.* to jj123@'localhost' identified by '123'; # 创建用户 jerry,密码是123
MariaDB [(none)]> exit
[root@node1 ~]# tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@node1 ~]# mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter
[root@node1 ~]# vim /usr/local/mysqld_exporter/.my.cnf
[client]
host=127.0.0.1
port=3306
user=jj123
password=123
[root@node1 ~]# vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my- cnf=/usr/local/mysqld_exporter/.my.cnf
[Install]
WantedBy=multi-user.target
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl enable mysqld_exporter.service --now
[root@node1 ~]# ss -tlnp | grep :9104
LISTEN 0 128 :::9104
配置prometheus监控mysql
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysql'
static_configs:
- targets: ['192.168.4.11:9104']
[root@prometheus ~]#
查看状态:
在真机上导入数据库模板mysql-overview_rev5.json
查看其模板
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。