Prometheus部署
Prometheus部署
Prometheus是一套开源的监控&报警&时间序列数据库的组合,其基本原理是通过 HTTP 协议周期性抓取被监控组件的状态。其自带 UI界面,可以方便对数据进行查询和图形化展示;同时还可以对接 Grafana 可视化工具展示精美监控指标。
以下说明集群部署Prometheus、Grafana的流程:
1.准备工作
1.1 准备镜像
需要使用到的容器镜像包括以下4个,需要提前拉取并导出:
- prometheus:v2.39.1
- grafana:8.3.3
- node-exporter:v1.3.1
- alertmanager:v0.23.0
1.2 准备服务器
需要准备至少2台服务器用于集群高可用安装,资源紧张时可以与其他组件共用服务器。
1.3 安装Docker
参考本文档基础环境安装内容,安装Docker及Docker Compose。
1.4 准备负载均衡
参考Nginx的部署内容。
1.5 Mysql数据库
需要部署主备Mysql数据库,参考Mysql部署的内容。创建名为grafana库。
2.部署集群
2.1 导入镜像
将上一步导出的容器镜像,拷贝到医院环境服务器并导入:
docker load -i prometheus.tar
docker load -i grafana.tar
docker load -i node-exporter.tar
docker load -i alertmanager.tar
2.2 配置文件
默认安装在数据盘/hos/下:
mkdir /hos/prometheus
cd /hos/prometheus
创建配置文件docker-compose.yml,输入以下内容:
version: '3.7'
services:
node-exporter:
image: dockerhub.kubekey.local/kubesphereio/node-exporter:v1.3.1
restart: always
ports:
- "9100:9100"
alertmanager:
image: dockerhub.kubekey.local/kubesphereio/alertmanager:v0.23.0
restart: always
volumes:
- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
ports:
- "9093:9093"
- "9094:9094"
prometheus:
image: dockerhub.kubekey.local/kubesphereio/prometheus:v2.39.1
restart: always
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus/alert-rules.yml:/etc/prometheus/alert-rules.yml
- ./prometheus/data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--web.enable-lifecycle'
ports:
- "9090:9090"
depends_on:
- alertmanager
grafana:
image: dockerhub.kubekey.local/kubesphereio/grafana:8.3.3
restart: always
volumes:
- ./grafana/conf/grafana.ini:/etc/grafana/grafana.ini
- ./grafana/data:/var/lib/grafana
ports:
- "3000:3000"
depends_on:
- prometheus
创建prometheus配置文件:
mkdir prometheus
vim prometheus/prometheus.yml
输入以下配置:
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093
rule_files:
- "*rules.yml"
scrape_configs:
- job_name: 'node5'
static_configs:
- targets: ['10.241.12.5:9100']
- job_name: 'mysql-master'
static_configs:
- targets: ['10.241.12.3:9104']
- job_name: 'mysql-slave'
static_configs:
- targets: ['10.241.12.4:9104']
其中,scrape_configs部分可以先去掉,后续根据要监控的对象情况修改。
创建logstash配置文件:
mkdir grafana
vim grafana/grafana.ini
输入以下配置:
[database]
type = mysql
host = 10.241.12.26:3306
name = grafana
user = root
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = password
其中,mysql相关信息修改为实际环境内容。
2.3 启动服务
docker-compose up -d
2.4 配置负载均衡
nginx配置文件中增加以下tcp代理:
stream {
upstream prometheus {
server 10.241.12.5:9090;
server 10.241.12.6:9090 backup;
}
upstream grafana {
server 10.241.12.5:3000;
server 10.241.12.6:3000 backup;
}
server {
listen 9090;
proxy_pass prometheus;
}
server {
listen 3000;
proxy_pass grafana;
}
}
3.访问验证
- 访问prometheus:http://负载ip:9090
- 访问grafana:http://负载ip:3000
4.使用方式
4.1 部署Exporter
在prometheus生态中,需要监控的对象都需要部署对应的Exporter,来采集监控对象的数据,并汇总到prometheus中。所以针对不同的监控对象,需要部署对应的Exporter。下载地址:https://prometheus.io/docs/instrumenting/exporters/,具体部署使用方式参考对应的Exporter说明。
4.2 导入Grafana Dashboard
监控数据可以通过Grafana提供的Dashboard可视化的显示出来,下载地址:https://grafana.com/grafana/dashboards/。
示例:主机监控
1.下载主机监控面板:https://grafana.com/grafana/dashboards/1860-node-exporter-full/
2.在Prometheus中增加配置:编辑配置文件:prometheus/prometheus.yml,在scrape_configs中增加以下配置:
scrape_configs:
- job_name: 'node5'
static_configs:
- targets: ['10.241.12.5:9100']
其中,job_name
设置为主机的名称,targets
设置为主机上部署的node-exporter的地址端口。
重启prometheus服务:
docker-compose restart prometheus
3.在Grafana中导入即可: