Prometheus Server,里面包含了存储引擎和计算引擎
Retrieval组件为取数组件,他会主动从Pushgateway或者Exporter拉取指标数据;
Service discovery,可以动态发现要监控的目标;
TSDB,数据核心存储与查询
HTTP server,对外提供HTTP服务
采集层分为两类,一类是生命周期较短的作业,还有一类是生命周期较长的作业。
短作业:直接通过API,在退出的时候,指标推送给Pushgateway;
长作业:Retrieval组件直接从job或者Exporter拉取数据;
应用层主要分为两种,一种是AlertManager,另一种是数据可视化
AlertManager
对接Pagerduty,是一套付费监控报警系统,可实现短信报警、5分钟无人 ack打电话通知、依然无人ack,通知值班人员Manager
数据可视化
Prometheus build-in WebUI
Grafana
其他基于API开发的客户端
Prometheus服务器 192.168.111.100 Prometheus.glodon.cn
grafana服务器 192.168.111.101 grafana.glodon.cn
被监控服务器 192.168.111.102 apiServer.glodon.cn
IP地址、hostname主机名称、绑定/etc/hosts文件、时间同步(重要)
vim /etc/sysconf/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp-->none/static
uuid 因为3台虚拟机是克隆的,所以保证3台服务器uuid不一致
PREFIX=22 子网掩码,要和本机子网掩码保持一致
IPADDR=192.168.111.100 给虚拟机设置虚拟IP
GATEWAY=192.168.111.254 虚拟机网关,要和本机网关保持一致
DNS1=114.114.114.114 DNS服务器
DNS2=223.5.5.5 备用DNS服务器
hostnamectl set-hostname prometheus.glodon.cn
hostnamectl set-hostname apiServer.glodon.cnwojiu
hostnamectl set-hostname grafana.glodon.cn
使用命令su切换
192.168.111.100 prometheus prometheus.glodon.cn
192.168.111.101 grafana grafana.glodon.cn
192.168.111.102 apiServer apiServer.glodon.cn
mount /dev/cdrom /mnt
yum install ntpdate -y
ntpdate cn.ntp.org.cn
使用date命令来校验
安装目录:/usr/local/prometheus
cd /usr/local
tar -zxvf prometheus-2.36.2.linux-amd64.tar.gz
mv prometheus-2.36.2.linux-amd64 prometheus
cd /usr/local/prometheus
启动prometheus服务
nohup ./prometheus --config.file="/usr/local/prometheus/prometheus.yml" --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 &
关闭防火墙
systemctl stop firewalld
判断是否真正的启动了 lsof -i:9090
http://服务器IP:9090访问prometheus的主界面
系统默认监控自己的主机信息,监控接口:通过http://服务器IP:9090/metrics可以查看到监控数据
prometheus通过关键字查看监控项:process_cpu_secords_total
node组件介绍:在远程linux主机上安装node_exporter组件(这样prometheus就可以接收到其收集系统)
安装wget
yum install -y wget
使用wget下载node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
cd /usr/local
tar -zxvf node_exporter-1.2.2.linux-am
mv node_exporter-1.2.2.linux-amd64.tar.gz node_exporter
cd /usr/local/node_exporter
nohup ./node_exporter &
扩展:nohup命令:如果把启动node_exporter的终端给关闭,那么进程随之也会关闭。nohup命令会帮助你解决这个问题
关闭防火墙
systemctl stop firewalld
lsof -i:9100 端口被占用说明服务启动成功
通过浏览器访问http://被监控端IP:9100/metrics就可以看到node_exporter被监控端收集的监控信息
cd /usr/local/prometheus/
vi prometheus.yml 具体添加信息如下图
kill -9 pid(prometheus的进程ID)
lsof -i:9090 确认端口没有进程占用
再次启动prometheus
nohup ./prometheus --config.file="/usr/local/prometheus/prometheus.yml" --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 &
lsof -i:9090 确认端口被占用,说明重启成功
systemctl stop firewalld 关闭防火墙
回到web管理界面–点击status–点击targets可以看到多了一台监控目标
grafana简介:grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析、查询、然后进行可视化的展示,并能实现报警;
使用命令下载
wget https://dl.grafana.com/oss/release/grafana-7.1.3-1.x86_64.rpm
官网下载
下载地址:https://grafana.com/grafana/download
安装服务
yum -y install grafana-7.1.3-1.x86_64.rpm
服务启动
service grafana-server start
关闭防火墙
systemctl stop firewalld
监听grafana的默认端口3000
lsof -i:3000
用户名:admin
密码:admin
首次登录需要修改默认密码
grafana配置prometheus数据展示
睿象云官网:https://caweb.aiops.com/
优点:可以免费发送告警邮件
模拟CPU过高的代码
安装java环境
yum -y list java*
yum install java-1.8.0-openjdk.x86_64
java -version
执行java命令
javac CPU.java
java CPU
具体代码
import java.util.HashSet;
public class CPU {
private static HashSet hashSet = new HashSet();
public static void main(String[] args) {
cpuHigh();
addHashSetThread();
}
public static void addHashSetThread(){
new Thread(() -> {
int count = 0;
while (true){
try{
hashSet.add("count" + count);
Thread.sleep(10000);
count++;
}catch(InterruptedException e){
e.printStackTrace();
}
}
}).start();
}
public static void cpuHigh(){
new Thread(() ->{
while (true){
System.out.println("666~");
}
}).start();
}
}
模拟CPU高的命令
cat /dev/urandom | md5sum