怎么增加网站关键词库,余姚做网站设计的公司,网站开发对企业的关键,嘉兴微网站建设1. 普罗米修斯概述 Prometheus(是由go语言(golang)开发)是一套开源的监控报警时间序列数 据库的组合。适合监控docker容器。
Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来#xff0c;许多公司和组织都采用了Prometheus#…1. 普罗米修斯概述 Prometheus(是由go语言(golang)开发)是一套开源的监控报警时间序列数 据库的组合。适合监控docker容器。
Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来许多公司和组织都采用了Prometheus该项目拥有非常活跃的开发人员和用户社区。现在它是一个独立的开源项目并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构Prometheus 于2016年加入了 Cloud Native Computing Foundation这是继Kubernetes之后的第二个托管项目。
Prometheus是一个时间序列数据库。但是它不仅仅是一个时间序列数据库。
它涵盖了可以绑定的整个生态系统工具集及其功能。
Prometheus主要用于对基础设施的监控。包括服务器数据库VPS几乎所有东西都可以通过Prometheus进行监控。Prometheus希望通过对Prometheus配置中定义的某些端点执行的HTTP调用来检索度量标准。
Prometheus 的优点
非常少的外部依赖安装使用超简单已经有非常多的系统集成 例如docker HAProxy Nginx JMX等等服务自动化发现直接集成到代码设计思想是按照分布式、微服务架构来实现的可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端可以通过服务发现或者静态配置去获取监控的 targets。有多种可视化图形界面。易于伸缩。
Prometheus 的特性
一个多维数据模型其中包含通过度量标准名称和键/值对标识的时间序列数据PromQL一种灵活的查询语言 可利用此维度不依赖分布式存储单服务器节点是自治的时间序列收集通过HTTP上的拉模型进行通过中间网关支持推送时间序列通过服务发现或静态配置发现目标多种图形和仪表板支持模式
2. 时间序列数据 什么是序列数据 时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化 的数据被称为时序数据。 应用的场景很多, 如
无人驾驶车辆运行中要记录的经度纬度速度方向旁边物体的距 离等等。每时每刻都要将数据记录下来做分析。 某一个地区的各车辆的行驶轨迹数据 传统证券行业实时交易数据 实时运维监控数据等
2.1 时间序列数据特点 性能好
关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理 大规模数据让依然比不上时间序列数据库。
存储成本低
高效的压缩算法节省存储空间有效降低IO Prometheus有着非常高效的时间序列数据存储方法每个采样数据仅仅占 用3.5byte左右空间上百万条时间序列30秒间隔保留60天大概花了 200多G来自官方数据)
3. Prometheus原理架构图 下图说明了Prometheus的体系结构及其某些生态系统组件 prometheus直接或通过中介推送网关从已检测作业中删除指标以处理短暂的作业。它在本地存储所有报废的样本并对这些数据运行规则以汇总和记录现有数据中的新时间序列或生成警报。Grafana或其他API使用者可以用来可视化收集的数据。
Prometheus可以很好地记录任何纯数字时间序列。它既适用于以机器为中心的监视也适用于高度动态的面向服务的体系结构的监视。在微服务世界中它对多维数据收集和查询的支持是一种特别的优势。
Prometheus的设计旨在提高可靠性使其成为中断期间要使用的系统以使您能够快速诊断问题。每个Prometheus服务器都是独立的而不依赖于网络存储或其他远程服务。当基础结构的其他部分损坏时您可以依靠它并且无需设置广泛的基础结构即可使用它。
普罗米修斯重视可靠性。即使在故障情况下您始终可以查看有关系统的可用统计信息。如果您需要100的准确性例如按请求计费则Prometheus并不是一个好的选择因为所收集的数据可能不够详细和完整。在这种情况下最好使用其他系统来收集和分析数据以进行计费并使用Prometheus进行其余的监视。
4. 部署Prometheus
实验环境
主机名IP服务node2192.168.8.121prometheusnode1192.168.8.120node_exporter 4.1准备工作
下载最新版的服务端prometheus和客户端node_exporter 服务端Download | Prometheus客户端Download | Prometheus
4.2下载软件包 选择对应的系统进行下载
4.3解压缩包
[rootnode2 ~]# tar xf prometheus-2.47.0.linux-amd64.tar.gz -C /usr/local/
[rootnode2 src]# cd /usr/local/
[rootnode2 local]# ls
bin games lib libexec redis share
etc include lib64 prometheus-2.47.0.linux-amd64 sbin src[rootnode2 local]# mv prometheus-47.0.linux-amd64/ prometheus4.4尝试运行Prometheus server成功后停止服务
[rootnode2 local]# cd prometheus/
[rootnode2 prometheus]# ./prometheus --config.fileprometheus.yml4.5 配置Prometheus
在Prometheus.yml中有配置文件我们可以对其进行配置当然第一次安装也可以不用配置
rootnode2 prometheus]# vim /usr/local/prometheus/prometheus.yml#全局配置
global:scrape_interval: 15s #每隔15秒向目标抓取一次数默认为一分钟evaluation_interval: 15s #每隔15秒执行一次告警规则默认为一分钟# scrape_timeout: 600s #抓取数据的超时时间默认为10s#告警配置
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093 #alertmanager所部署机器的ip和端口#定义告警规则和阈值的yml文件
rule_files:# - first_rules.yml# - second_rules.yml#收集数据配置
#以下是Prometheus自身的一个配置.
scrape_configs:#这个配置是表示在这个配置内的时间序例每一条都会自动添加上这个{job_name:prometheus}的标签.- job_name: prometheus# metrics_path defaults to /metrics# scheme defaults to http.static_configs: #静态配置- targets: [localhost:9090]其配置大致可分为四部分
global全局配置其中scrape_interval表示抓取一次数据的间隔时间evaluation_interval表示进行告警规则检测的间隔时间alerting告警管理器Alertmanager的配置目前还没有安装Alertmanagerrule_files告警规则有哪些scrape_configs抓取监控信息的目标。一个job_name就是一个目标其targets就是采集信息的IP和端口。这里默认监控了Prometheus自己可以通过修改这里来修改Prometheus的监控端口。Prometheus的每个exporter都会是一个目标它们可以上报不同的监控信息比如机器状态或者mysql性能等等不同语言sdk也会是一个目标它们会上报你自定义的业务监控信息。
4.6 校验配置文件
[rootnode2 prometheus]# ./promtool check config ./prometheus.yml
Checking ./prometheus.ymlSUCCESS: 0 rule files found4.7配置service启动文件
[rootnode2 prometheus]# cat /usr/lib/systemd/system/prometheus.service EOF
[Unit]
DescriptionThe Prometheus Server
Afternetwork.target[Service]
Restarton-failure
ExecStart/usr/local/prometheus/prometheus --config.file/usr/local/prometheus/prometheus.yml
RestartSec15s[Install]
WantedBymulti-user.targetEOF[rootnode2 prometheus]# systemctl daemon-reload
[rootnode2 prometheus]# systemctl restart prometheus
[rootnode2 local]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:6379 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:9090 *:* 4.8启动参数介绍
##启动
/usr/local/prometheus/prometheus --config.file/usr/local/prometheus/prometheus.yml ##启动参数介绍
--config.file #加载prometheus的配置文件
--web.listen-address #监听prometheus的web地址和端口
--web.enable-lifecycle #热启动参数可以在不中断服务的情况下重启加载配置文件
--storage.tsdb.retention #数据持久化的时间
--storage.tsdb.path #数据持久化的保存路径
4.9访问测试
输入 “ip地址”:9090 在浏览器中进行访问如果出现可视化界面说明成功 6. node_exporter部署
6.1 下载软件包 6.2 解压软件包
[rootnode1 ~]# ls
anaconda-ks.cfg node_exporter-1.6.1.linux-amd64.tar.gz[rootnode1 ~]# tar xf node_exporter-1.6.1.linux-amd64.tar.gz -C /usr/local/
[rootnode1 ~]#
[rootnode1 ~]# cd /usr/local/
[rootnode1 local]# ls
bin games lib libexec sbin src
etc include lib64 node_exporter-1.6.1.linux-amd64 share[rootnode1 local]# mv node_exporter-1.6.1.linux-amd64/ node_exporter
[rootnode1 local]# 6.3 启动参数介绍
注意相关启动的参数
--web.listen-address #node_expoetrt暴露的端口
--collector.systemd #从systemd中收集
--collector.systemd.unit-whitelist ##白名单收集目标. #从systemd中循环正则匹配单元(docker|sshd|nginx).service #白名单收集目标收集参数node_systemd_unit_state
6.4 配置service文件
[rootnode1 local]# vi /usr/lib/systemd/system/node_exporter.service
[unit]
DescriptionThe node_exporter Server
Afternetwork.target[Service]
ExecStart/usr/local/node_exporter/node_exporter
Restarton-failure
RestartSec15s
SyslogIdentifiernode_exporter[Install]
WantedBymulti-user.target[rootnode1 local]# systemctl daemon-reload
[rootnode1 local]# systemctl enable node_exporter
[rootnode1 local]# systemctl restart node_exporter
Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /usr/lib/systemd/system/node_exporter.service.[rootnode1 local]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:9100 *:*
[rootnode1 local]# 6.5 在Prometheus主机上修改prometheus.yml配置文件
[rootnode2 prometheus]# vim /usr/local/prometheus/prometheus.yml
......rule_files:# - first_rules.yml# - second_rules.yml# A scrape configuration containing exactly one endpoint to scrape:
# Here its Prometheus itself.
scrape_configs:# The job name is added as a label jobjob_name to any timeseries scraped from this config.- job_name: prometheus# metrics_path defaults to /metrics# scheme defaults to http.static_configs:- targets: [192.168.8.120:9100] //此处指定客户端ip和端口
6.6访问测试是否连接成功
使用Prometheus主机IP地址和端口号 http://192.168.8.121:9090/targets访问 本文到这里搭建就结束了接下来大家自己去体会吧总之还是很强的