一. Prometheus介绍
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。
Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。
Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。
输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。
二. Prometheus安装
官网地址>> https://github.com/prometheus/prometheus/releases/
将软件包上传到/usr/local目录下并解压
tar -xvf prometheus-2.33.1.linux-amd64.tar.gz
修改配置文件,配置要监控的项
vim prometheus-2.33.1.linux-amd64/prometheus.yml
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
# 这是prometheus自身监控
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
#监控Linux主机状态
- job_name: 'linux'
static_configs:
# 被监控主机IP和端口(node_exporter端口,默认9100),多个主机可以使用英文逗号分隔
- targets: ['172.16.0.4:9100','172.16.0.5:9100']
#监控mysql服务状态
- job_name: 'mysql'
static_configs:
# 被监控主机IP和端口(mysqld_exporter端口,默认9104)
- targets: ['192.168.153.138:9104']
添加启动脚本
cd prometheus-2.33.1.linux-amd64
vim start.sh
#!/bin/bash
# nohup ... & 以后台进程运行prometheus
nohup ./prometheus --config.file=/usr/local/prometheus-2.33.1.linux-amd64/prometheus.yml &
启动脚本添加执行权限
chmod +x start.sh
启动prometheus
./start.sh
验证,浏览器输入http://ip:9090/targets
此时State应该为DOWN状态
三. 安装exporter
1. 安装node_exporter(服务器报告器)
下载地址:https://github.com/prometheus/node_exporter/releases
上传到需要被监控的服务器/usr/local目录并解压
tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz
创建启动脚本
cd ./node_exporter-1.3.1.linux-amd64
vim start.sh
#!/bin/bash
nohup ./node_exporter &
启动脚本添加可执行权限
chmod +x start.sh
启动
./start.sh
2. 安装mysqld_exporter
下载地址:https://github.com/prometheus/mysqld_exporter/releases
上传到mysql所在服务器并解压
tar -xvf mysqld_exporter-0.13.0.linux-amd64.tar.gz
创建.my.cnf配置文件
cd mysqld_exporter-0.13.0.linux-amd64
vim .my.cnf
# .my.cnf文件内容,user为mysql的用户名,提前在mysql中创建好并授权
# grant select,replication client, process on *.* to 'mysql_monitor'@'localhost' identified by 'mysql_monitor';
[client]
user=mysql_monitor
password=mysql_monitor
创建启动脚本
vim start.sh
#!/bin/bash
nohup ./mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter-0.13.0.linux-amd64/.my.cnf" &
启动脚本添加可执行权限
chmod +x start.sh
启动
./start.sh
3. 刷新proemtheus页面,被监控的对象state状态变为UP
四. Granfana安装配置
下载 :https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/
yum安装
yum -y install grafana-7.3.3-1.x86_64.rpm
开启grafana服务
systemctl start grafana-server
打开浏览器访问: http://ip:3000
默认的用户名和密码均为:admin
添加promethus数据源
添加服务器监控的dashboard
相同方法添加mysql的dashboard, granfana id为:7362