1.安装promehues-server
Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。
Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖。用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动Prometheus Server。
1.1二进制包安装
服务端口:9090
#找到对应的安装包版本,下载,解压
# 定义一个系统环境变量
export VERSION=2.13.0
curl -LO https://github.com/prometheus/prometheus/releases/download/v$VERSION/prometheus-$VERSION.darwin-amd64.tar.gz
tar -xzf prometheus-${VERSION}.darwin-amd64.tar.gz
cd prometheus-${VERSION}.darwin-amd64
1.2 配置promethes.yml
解压后当前目录会包含默认的Prometheus配置文件promethes.yml:
【1】为了能够让Prometheus Server能够从当前node exporter获取到监控数据,这里需要修改Prometheus配置文件。
编辑prometheus.yml并在scrape_configs节点下添加以下内容:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 采集单个node exporter监控数据【可以直接写ip:端口,当要监控大批服务器时可以写一个json文件】
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
#采集大批量的node exporter监控数据
##################ALL hosts####################
##add linux hosts with company
- job_name: 'linux_server'
basic_auth:
username: prometheus
password: 121212
file_sd_configs:
- files:
- /data_vdb/prometheus/conf/HOST/TJ_linux_system_config_all.json
refresh_interval: 60m
relabel_configs:
- source_labels: [__address__]
regex: '(.*):(.*)'
replacement: '$1'
target_label: ip
action: replace
#其中 /data_vdb/prometheus/conf/HOST/TJ_linux_system_config_all.json文件中服务器信息如下:
[
{
"targets": [
"10.66.13.207:9100",
"10.66.14.87:9100",
"10.66.13.17:9100",
"10.66.14.162:9100"
],
"labels": {
"area": "TJ",
"team": "DC",
"service_type": "DB",
"job": "DC_linux_node"
}
},
{
"targets": [
"10.66.14.32:9100"
],
"labels": {
"area": "TJ",
"team": "SAP",
"job": "SAP_linux_node"
}
}
]
1.3 启动promethus服务
systemctl restart promethues
访问http://localhost:9090,进入到Prometheus Server。如果输入“up”并且点击执行按钮以后,可以看到如下结果:
其中“1”表示正常,反之“0”则为异常。
prometheus作为一个时间序列数据库,器采集的数据会以文件的形式存储在本地中,默认的存储路径为data/,因此我们需要先手动创建该目录:
用户也可以通过参数--storage.tsdb.path="data/"修改本地数据存储的路径。
1.4使用容器安装
对于Docker用户,直接使用Prometheus的镜像即可启动Prometheus Server:
docker run -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
启动完成后,可以通过http://localhost:9090访问Prometheus的UI界面如上图效果
2.Node Exporter采集主机运行数据
2.1 安装Node expoter
服务端口:9100
Node Exporter能够采集到主机的运行指标如CPU, 内存,磁盘等信息
Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从https://prometheus.io/download/获取最新的node exporter版本的二进制包。
下载安装包,解压,创建软连接,增加server配置文件
curl -OL https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar -xzf node_exporter-0.17.0.linux-amd64.tar.gz
ln -s /opt/node_exporter-1.7.0.linux-amd64 /apps/node_exporter
#cat /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
ExecStart=/apps/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
#启动node_export
systemctl daemon-reload
systemctl enable --now node_exporter.service
3.使用PromQL查询监控数据
Prometheus UI是Prometheus内置的一个可视化管理界面,通过Prometheus UI用户能够轻松的了解Prometheus当前的配置,监控任务运行状态等。 通过Graph面板,用户还能直接使用PromQL实时查询监控数据:
访问:https:/localhost:9090,可以通过promQL语句查询。
4.使用Grafana创建可视化Dashboard
使用第三方的可视化工具如Grafana,Grafana是一个开源的可视化平台,并且提供了对Prometheus的完整支持。
4.1 安装并启动grafana服务
docker run -d -p 3000:3000 grafana/grafana
4.2 访问界面并对界面进行配置
访问http://localhost:3000就可以进入到Grafana的界面中,手写添加数据源。
向导页面如下:
1.添加数据源
访问界面,添加数据源,一般添加promethus,指定数据源类型为Prometheus并且设置Prometheus的访问地址即可。
2.在完成数据源的添加之后就可以在Grafana中创建我们可视化Dashboard了。Grafana提供了对PromQL的完整支持。Dashboard模板参考网址:https://grafana.com/dashboards
5.任务和实例
在promethus.yml文件中添加获取的不同类型的expoter的监控指标数据。
scrape_configs:
- job_name: 'prometheus'
static_configs:
#监控本机数据指标
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
#监控node_exporter的数据指标
- targets: ['localhost:9100']
- job_name: 'node'
static_configs:
#监控mysqld_export
- targets: ['localhost:9100']
6.prometheus核心组件
基础架构:
6.1 Prometheus Server
Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
- 获取监控目标(客户端)的方式
(1)使用静态配置获取
(2)使用Service Discovery的方式动态获取 - 存储
Prometheus Server需要对采集到的监控数据进行存储。它本身是一个时序数据库,将采集到的数据按照时间序列的方式存储在本地磁盘当中。 - 查询
Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。
Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对Prometheus Server进行扩展
6.2 Exporters
EXport将监控数据采集的端点通过HTTP服务的形式暴露给prometheus Server ,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。
6.3 AlertManager
在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。