Prometheus+Grafana部署
环境:Linux
发行版:CentOS7.6
Core:3.10
配置:2C4M
部署方式:二进制
注:本次实验只针对监控物理机资源和物理机上的容器资源
# 请提前准备好以下二进制文件
# 环境准备
prometheus-2.28.0.linux-amd64.tar.gz
node_exporter-1.2.2.linux-amd64.tar.gz
grafana-enterprise-8.3.3.linux-amd64.tar.gz
alertmanager-0.23.0.linux-amd64.tar.gz
pushgateway-1.4.1.linux-amd64.tar.gz
cadvisor-0.44.0.tar.gz
# 链接地址
# 建议在Windows下载好再上传Linux系统
https://github.com/prometheus/prometheus/releases/download/v2.28.0/prometheus-2.28.0.linux-amd64.tar.gz
https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3.linux-amd64.tar.gz
https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
https://github.com/prometheus/pushgateway/releases/download/v1.4.1/pushgateway-1.4.1.linux-amd64.tar.gz
https://github.com/google/cadvisor/archive/refs/tags/v0.44.0.tar.gz
规划
1、所有配置都在(/data)目录下
2、所有服务都添加systemd管理
3、所有机器都采用同样的配置
4、所有服务都配置开机自启动
5、所有服务器必须使用ntp时间同步,因为prometheus T_S对系统时间的准确性要求极高,必须保证本机时间实时同步
一、prometheus server部署
# 创建服务配置文件存放位置
mkdir -p /data/prometheus
# 解压二进制文件并改名
tar xvf prometheus-2.28.0.linux-amd64.tar.gz -C /data/prometheus
cd /data/prometheus
mv prometheus-2.28.0.linux-amd64 prometheus-2.28
# 添加systemd管理
cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=prometheus
[Service]
ExecStart=/data/prometheus/prometheus-2.28/prometheus --config.file=/data/prometheus/prometheus-2.28/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 加载配置并启动
systemctl daemon-reload && systemctl enable prometheus.service --now
修改prometheus.yml配置
热加载配置文件
- kill -1 32360或kill -HUP 32360
根据约定,当您发送一个挂起信号(信号 1 或 HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件
访问prometheus自带的web页面:
访问方式:ip+端口
http://172.31.10.11:9090
二、node exporter部署
注:此步骤在需要被监控的主机上部署,部署完后在prometheus.yml配置文件中添加相应的目标,然后热加载配置
# 创建服务配置文件存放位置
mkdir -p /data/node_exporter
# 解压二进制文件并改名
tar xvf node_exporter-1.2.2.tar.gz -C /data/node_exporter/
cd /data/node_exporter
mv node_exporter-1.2.2.linux-amd64/ node_exporter-1.2.2
# 添加systemd管理
cat > /usr/lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=node_exporter
[Service]
ExecStart=/data/node_exporter/node_exporter-1.2.2/node_exporter --collector.systemd --collector.systemd.unit-include=(docker|sshd|nginx).service
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 加载配置并启动
systemctl daemon-reload && systemctl enable node_exporter.service --now
访问测试:
三、Grafana部署
注:此步骤只需在某一台主机上安装即可
# 创建服务配置文件存放位置
mkdir -p /data/grafana
# 解压二进制文件并改名
tar xvf grafana-enterprise-8.3.3.linux-amd64.tar.gz -C /data/grafana/
# 添加systemd管理
cat > /usr/lib/systemd/system/grafana.service <<EOF
[Unit]
Description=grafana
[Service]
ExecStart=/data/grafana/grafana-8.3.3/bin/grafana-server -homepath=/data/grafana/grafana-8.3.3
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 加载配置并启动
systemctl daemon-reload && systemctl enable grafana.service --now
访问测试:
ip+端口
默认用户密码:admin+admin
# grafana模板下载地址
https://grafana.com/grafana/dashboards
常用模板
193 docke监控r模板
9276 node节点监控模板
7362 mysql监控模板
四、Alertmanager部署
注:此步骤只需在某一台主机上安装即可
# 创建服务配置文件存放位置
mkdir -p /data/alertmanager
# 解压二进制文件并改名
tar xvf alertmanager-0.23.0.linux-amd64.tar.gz -C /data/alertmanager/
cd /data/alertmanager/
mv alertmanager-0.23.0.linux-amd64/ alertmanager-0.23
# 添加systemd管理
cat > /usr/lib/systemd/system/alertmanager.service <<EOF
[Unit]
Description=alertmanager
[Service]
ExecStart=/data/alertmanager/alertmanager-0.23/alertmanager --config.file=/data/alertmanager/alertmanager-0.23/alertmanager.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 加载配置并启动
systemctl daemon-reload && systemctl enable alertmanager.service --now
5、修改alertmanager配置(钉钉告警版)
[root@prometheus alertmanager]# cat alertmanager.yml
global:
resolve_timeout: 5m
templates:
- '/data/alertmanager/alertmanager-0.23/template/*.tmpl'
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 1m
repeat_interval: 2m
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://localhost:8060/dingtalk/webhook1/send'
send_resolved: true
inhibit_rules:
- source_match:
alertname: 'ApplicationDown'
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname',"target","job","instance"]
6、修改alertmanager配置(邮件告警版)
[root@prometheus alertmanager]# cat alertmanager.yml.bak20210830
global:
resolve_timeout: 5m
#邮箱服务器
smtp_smarthost: 'smtp.126.com:25'
smtp_from: 'xxx@126.com'
smtp_auth_username: 'xxx@126.com'
smtp_auth_password: 'xxx'
smtp_require_tls: false
#配置路由树
route:
group_by: ['alertname'] # 根据告警规则组名进行分组
group_wait: 10s # 分组内第一个告警等待时间,10s内如有第二个告警会合并一个告警
group_interval: 10s # 发送新告警间隔时间
repeat_interval: 1h # 重复告警间隔发送时间
receiver: 'mail'
#接收人
receivers:
- name: 'mail'
email_configs:
- to: '1665111913@qq.com'
五、PushGateway部署
注:此步骤只需在某一台主机上安装即可
# 创建服务配置文件存放位置
mkdir -p /data/pushgateway
# 解压二进制文件并改名
tar xf pushgateway-1.4.1.linux-amd64.tar.gz -C /data/pushgateway/
cd /data/pushgateway/
mv pushgateway-1.4.1.linux-amd64/ pushgateway-1.4.1
# 添加systemd管理
cat > /usr/lib/systemd/system/pushgateway.service <<EOF
[Unit]
Description=pushgateway
After=network.target
[Service]
User=root
Type=simple
ExecStart=/data/pushgateway/pushgateway-1.4.1/pushgateway
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 加载配置并启动
systemctl daemon-reload && systemctl enable pushgateway.service --now
访问:http://XX.XX.XX.XX:9091/metrics
# 配置prometheus.yml主配置文件
- job_name: 'pushgateway'
honor_labels: true # 避免收集数据本身的 job 和 instance被pushgateway实例信息覆盖
scrape_interval: 5s # 抓取时间间隔为5秒
static_configs:
- targets: ['172.31.10.20:9091']
instance: pushgateway
# 重新热加载配置文件
kill -1 prometheus服务进程
六、cAdvisor部署
注:此步骤只需在某一台主机上安装即可
# 创建服务配置文件存放位置
mkdir -p /data/cadvisor
# 解压二进制文件并改名
tar xf cadvisor-0.44.0.tar.gz -C /data/cadvisor/
# 添加systemd管理
cat > /usr/lib/systemd/system/cadvisor.service <<EOF
[Unit]
Description=cadvisor
After=network.target
[Service]
User=root
Type=simple
ExecStart=/data/pushgateway/pushgateway-1.4.1/pushgateway
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 加载配置并启动
systemctl daemon-reload && systemctl enable pushgateway.service --now
访问:http://XX.XX.XX.XX:9091/metrics
# 配置prometheus.yml主配置文件
- job_name: 'pushgateway'
honor_labels: true # 避免收集数据本身的 job 和 instance被pushgateway实例信息覆盖
scrape_interval: 5s # 抓取时间间隔为5秒
static_configs:
- targets: ['172.31.10.20:9091']
instance: pushgateway
# 重新热加载配置文件
kill -1 prometheus服务进程