概述
Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。该项目有非常活跃的社区和开发人员,目前是独立的开源项目,现在最常见的Kubernetes容器管理系统中,通常也会搭配Prometheus进行监控。
prometheus大多数组件都是用Go编写的,他们可以非常轻松的基于二进制文件部署和构建
Prometheus的主要特点自定义多维数据模型(时序列数据由metric名和一组key/value标签组成)
内置PromQL是一种灵活的多维度查询语言
不依赖分布式存储; 支持单个服务器节点自治工作
基于HTTP的pull方式采集时序数据
可以通过push gateway进行时序列数据推送(pushing)
可以通过服务发现或者静态配置去获取要采集的目标服务器
内置简单实用的可视化图表及仪表盘
组件(Prometheus server)最主要的就是Prometheus Server,它用来收集和存储时序数据
(client libraries) 客户端用来检测被监控的应用程序代码
(push gateway) 支持瞬时的网关推送处理
(*. exporters)包括对 HAProxy, StatsD, Graphite等的额外支持
(alertmanager)监控预警管理、以及各种工具
大量的支持工具
结构图  适用场景Prometheus能够更好的记录数字类型的时序数据,它既可用于对服务器自身性能参数的监视,也适用于高度动态的面向各个服务的监视。在微服务的场景中,它对多维数据收集和查询的支持有很特殊的优势。
为可靠性而设计的Prometheus可以让您在宕机的时候快速诊断分析问题。每个Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务,当基础结构的其他部分损坏时,您可以依赖它,并且不需要设置更多额外的基础结构来使用它。
不适用场景Prometheus非常重视可靠性,即使在发生故障的情况下,你也可以查看有关系统中的可用统计信息,但是如果你需要百分之百精准统计(如:每次账单请求信息)对Prometheus而言是不适用的,因为收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析数据,并使用Prometheus进行其余额外的监视。
安装node_exporter,系统性能指数收集(收集系统性能情况)node_exporter 主要用于系统监控, 用 Golang 编写,其默认是9100端口,可以通过/metrics访问
下载文件cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar xvf node_exporter-0.17.0.linux-amd64.tar.gz
sudo cp node_exporter-0.17.0.linux-amd64/node_exporter /usr/local/bin
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
rm -rf node_exporter-0.17.0.linux-amd64.tar.gz node_exporter-0.17.0.linux-amd64
添加自启动服务 添加服务配置文件sudo vim /etc/systemd/system/node_exporter.service
写入配置内容[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=http://www.likecs.com/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
默认node_exporter会启动一些收集器,你也可以通过服务配置文件进行配置
比如:
ExecStart=http://www.likecs.com/usr/local/bin/node_exporter --collectors.enabled meminfo,hwmon,entropy
启动服务并配置自启动sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.8.0/prometheus-2.8.0.linux-amd64.tar.gz
tar xfz prometheus-2.8.0.linux-amd64.tar.gz
cd cd prometheus-2.8.0.linux-amd64
sudo cp ./prometheus /usr/local/bin/
sudo cp ./promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo cp -r ./console_libraries /etc/prometheus
sudo cp -r ./consoles /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
cd .. && rm -rf prometheus-*
创建Prometheus配置文件