二十七、prometheus部署安装配置告警

本文详细介绍了如何部署和配置Prometheus监控系统,包括prometheus、alertmanager、Grafana、各种exporter的安装,以及配置启动服务,设置告警规则,建立联邦集群的步骤,提供了一份全面的实践指南。

1.部署前简介

本次监控部署应用到的相关软件如下
prometheus			数据采集和存储 提供PromQL语法查询
alertmanager		警告管理 进行报警
node_exporter		收集主机的基本性能监控指标
blackbox_exporter	收集http,https,tcp等监控指标
redis_exporter		收集redis相关的监控指标
mysqld_exporter		收集mysql相关的监控指标
pushgateway			向prometheus推送监控指标
PrometheusAlert		运维告警转发系统 结合alertmanager
grafana				监控数据大盘展示
部署规划
主机prometheus(172.19.120.164) 	部署 prometheus alertmanager PrometheusAlert grafana 这四个服务部署在了一台上 也可以分开单独部署
主机game(172.19.120.4)			部署 node_exporter redis_exporter pushgateway mysqld_exporter
blackbox_exporter 本次也部署在了主机prometheus上
各服务端口说明
prometheus 			启动 9090 端口
alertmanager 		启动 9093 端口
PrometheusAlert		启动 8080 端口
grafana				启动 3000 端口
blackbox_exporter 	启动 9115 端口
node_exporter		启动 9100 端口
redis_exporter		启动 9121 端口
mysqld_exporter		启动 9104 端口
pushgateway			启动 9091 端口

prometheus alertmanager blackbox_exporter node_exporter redis_exporter pushgateway mysqld_exporter 其启动端口都可以通过启动命令 -h 查看帮助信息 找到其指定启动端口的参数
PrometheusAler 的启动端口在 配置文件中设置

2.部署服务

主机prometheus上部署服务
prometheus安装
软件包地址 https://github.com/prometheus/prometheus/releases

tar xvf prometheus-2.20.1.linux-amd64.tar.gz
mv prometheus-2.20.1.linux-amd64 /usr/local/prometheus

cat > /usr/lib/systemd/system/prometheus.service << EOF
[Unit]
Description=prometheus
After=network.target 
[Service]
Restart=on-failure
WorkingDirectory=/usr/local/prometheus
ExecStart=/usr/local/prometheus/prometheus --web.enable-lifecycle --storage.tsdb.retention.time=90d --web.enable-admin-api --storage.tsdb.path=/usr/local/prometheus/data --web.external-url=http://prometheus-dd.aaaa.com
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload 
systemctl enable prometheus.service

启动参数相关说明:
--web.enable-lifecycle							在修改了prometheus.yml之后 可以通过下面的方式 进行热加载不需要通过重启
--storage.tsdb.retention.time=90d				设置数据保留时间为90天
--web.enable-admin-api							启用api 可以进行数据清理功能
--storage.tsdb.path=/usr/local/prometheus/data	指定数据落地的目录
--web.external-url=http://prometheus-dd.aaaa.com			指定域名 此域名用于报警消息中超链接跳转所用

当修改了prometheus.yml文件后 热加载配置命令
curl -X POST http://localhost:9090/-/reload
alertmanager安装
软件包地址 https://github.com/prometheus/alertmanager/releases

tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
mv alertmanager-0.21.0.linux-amd64 /usr/local/alertmanager

cat > /usr/lib/systemd/system/alertmanager.service << EOF
[Unit]
Description=alertmanager
After=network.target 
[Service]
Restart=on-failure
WorkingDirectory=/usr/local/alertmanager
ExecStart=/usr/local/alertmanager/alertmanager --web.external-url=http://alertmanager-dd.aaaa.com
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload 
systemctl enable alertmanager.service

启动参数相关说明:
--web.external-url=http://alertmanager-dd.aaaa.com 指定域名 此域名用于报警消息中超链接跳转所用
PrometheusAlert安装
软件包地址 https://github.com/feiyu563/PrometheusAlert
此软件安装和使用文档 https://feiyu563.gitbook.io/prometheusalert/

git clone https://github.com/feiyu563/PrometheusAlert.git
mv PrometheusAlert /usr/local/
chmod 755 /usr/local/PrometheusAlert/example/linux/PrometheusAlert

cat > /usr/lib/systemd/system/PrometheusAlert.service << EOF
[Unit]
Description=PrometheusAlert
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/usr/local/PrometheusAlert
ExecStart=/usr/local/PrometheusAlert/example/linux/PrometheusAlert
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload 
systemctl enable PrometheusAlert.service
grafana安装
软件包地址 https://grafana.com/grafana/download

wget https://dl.grafana.com/oss/release/grafana-7.1.5-1.x86_64.rpm
yum install grafana-7.1.5-1.x86_64.rpm
systemctl daemon-reload
systemctl enable grafana-server.service
systemctl start grafana-server.service
blackbox_exporter安装
软件包地址 https://github.com/prometheus/blackbox_exporter/releases

tar xvf blackbox_exporter-0.17.0.linux-amd64.tar.gz
mv blackbox_exporter-0.17.0.linux-amd64 /usr/local/blackbox_exporter

cat > /usr/lib/systemd/system/blackbox_exporter.service << EOF
[Unit]
Description=blackbox_exporter
After=network.target 
[Service]
Restart=on-failure
WorkingDirectory=/usr/local/blackbox_exporter
ExecStart=/usr/local/blackbox_exporter/blackbox_exporter
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload 
systemctl enable blackbox_exporter.service
systemctl start blackbox_exporter.service
使用nginx访问对应服务
由于 prometheus alertmanager PrometheusAlert 服务没有用户系统 所以我们使用nginx来做认证

nginx的配置文件内容如下

grafana.aaaa.com 跳转到grafana的3000端口 无需nginx认证 grafana自带认证 初始账户和密码 Admin Admin
prometheus.aaaa.com 跳转到prometheus的9090端口 使用nginx认证
prometheus-dd.aaaa.com 跳转到prometheus的9090端口 无需nginx认证 此域名与启动服务参数里的域名一致 但设置了转发规则 通过钉钉APP访问无需认证直接 否则跳转到 prometheus.aaaa.com 域名下
alert.aaaa.com 跳转到PrometheusAlert的8080端口 使用nginx认证
alertmanager.aaaa.com 跳转到alertmanager的9093端口 使用nginx认证
alertmanager-dd.aaaa.com 跳转到alertmanager的9093端口 无需nginx认证 此域名与启动服务参数里的域名一致 但设置了转发规则 通过钉钉APP访问无需认证直接 否则跳转到 alertmanager.aaaa.com 域名下

可以看到prometheus-dd.aaaa.com alertmanager-dd.aaaa.com为服务启动参数 --web.external-url指定的url 
这2个域名在nginx配置文件中设置了转发限制 在使用钉钉APP访问的时候没有nginx认证 其他方式的访问都会跳转到需要认证的域名下

yum -y install httpd-tools
htpasswd -bc /usr/local/nginx/prometheus.passwd 用户名 密码

server {
    listen  80;
    server_name grafana.aaaa.com;
    location / {
        proxy_pass http://172.19.120.164:3000;
        rewrite ^/grafana/(.*) /$1 break;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    access_log  /usr/local/nginx/logs/grafana.log main;
}

server {
    listen  80;
    server_name  prometheus.aaaa.com;
    location / {
        auth_basic "Prometheus Auth";
        auth_basic_user_file /usr/local/nginx/prometheus.passwd;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://172.19.120.164:9090;
    }
    access_log  /usr/local/nginx/logs/prometheus.log main;
}

server {
    listen  80;
    server_name  prometheus-dd.aaaa.com;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        if ($http_user_agent ~ "com.laiwang.DingTalk")
        #if ($remote_addr ~ "139.196.8.74")
        {
            proxy_pass http://172.19.120.164:9090;
            break;
        }
        rewrite ^/(.*) http://prometheus.aaaa.com/$1 permanent;
    }
    access_log  /usr/local/nginx/logs/prometheus-dd.log main;
}

server {
    listen  80;
    server_name  alert.aaaa.com;
    location / {
        auth_basic "Alert Auth";
        auth_basic_user_file /usr/local/nginx/prometheus.passwd;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://172.19.120.164:8080;
    }
    access_log  /usr/local/nginx/logs/alert.log main;
}

server {
    listen  80;
    server_name  alertmanager.aaaa.com;
    location / {
        auth_basic "Alert Auth";
        auth_basic_user_file /usr/local/nginx/prometheus.passwd;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://172.19.120.164:9093;
    }
    access_log  /usr/local/nginx/logs/alertmanager.log main;
}

server {
    listen  80;
    server_name  alertmanager-dd.aaaa.com;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        if ($http_user_agent ~ "com.laiwang.DingTalk")
        #if ($remote_addr ~ "139.196.8.74")
        {
            proxy_pass http://172.19.120.164:9093;
            break;
        }
        rewrite ^/(.*) http://alertmanager.aaaa.com/$1 permanent;
    }
    access_log  /usr/local/nginx/logs/alertmanager-dd.log main;
}
主机game上部署服务
node_exporter安装
软件包地址 https://github.com/prometheus/node_exporter/releases

tar xvf node_exporter-1.0.1.linux-amd64.tar.gz 
mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter

cat > /usr/lib/systemd/system/node_exporter.service << EOF
[Unit]
Description=node_exporter
[Service]
Restart=on-failure
WorkingDirectory=/usr/local/node_exporter
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload 
systemctl enable node_exporter.service
systemctl start node_exporter.service 
redis_exporter安装
软件包地址 https://github.com/oliver006/redis_exporter/releases

建议每台机器上部署一个redis_exporter来监控此服务器上的redis实例
作者的建议是一个redis实例使用一个redis_exporter

tar xvf redis_exporter-v1.11.1.linux-amd64.t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值