Prometheus安装及部署,监控主机和docker容器(图文)

安装docker环境
使用命令

sudo yum update	//更新到最新
yum install docker	//安装docker

启动docker并设置成开机自启动

systemctl start docker
systemctl enable docker

关闭防火墙,临时禁用selinux

systemctl stop firewalld.service
sudo setenforce 0

永久禁用selinux

vim /etc/selinux/config

在这里插入图片描述
永久关闭防火墙

systemctl disable firewalld.service

在这里插入图片描述

使用sestatus查看selinux状态,这里只是暂时禁用
在这里插入图片描述

确保自己的网卡和主机是否在同一网段上,因为我这里用到了本地主机,所以需要联网,如果你没有用到本地主机,设置桥接就行,其实问题也不大:
配置博客链接虚拟机中Centos7 修改网卡IP连通主机

部署node-EXporter,收集硬件和系统信息,端口9100,客户机和服务器都需要安装

docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

部署过程中会出现报错如下

unable to find image ‘prom/node-exporter:last’ locally

这里需要更换镜像源,我们换成阿里云
命令如下

vim /etc/docker/daemon.json

添加如下内容

{ 
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"] 
}

然后重启docker服务

systemctl restart docker
#systemctl status docker

然后重新执行部署命令
在这里插入图片描述

这里出现的警告,是因为docker容器启动时指定–network=host或-net=host,如果还指定了-p或-P,那这个时候就会有此警告,并且通过-p或-P设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。

进行验证,在本地主机上,输入地址
http://192.168.248.133:9100/metrics
在这里插入图片描述
出现如上就是安装成功了

部署安装cAdvisor,收集节点容器信息,服务器和客户机都需要安装,端口8080

docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor

验证收集效果传递
在本地主机浏览器输入地址http://192.168.248.133:8080/containers/
在这里插入图片描述

部署prometheus-server服务,服务器安装即可
先启动一个prometheus服务,目的是复制他的配置文件,修改配置文件,prometheus挂载这个文件

mkdir /Prometheus
chmod 777 /Prometheus   #给文件夹权限
docker run -d --name test -P prom/Prometheus
docker cp test:/etc/prometheus/prometheus.yml /Prometheus
vim /prometheus/prometheus.yml     #修改配置文件

编辑prometheus配置文件,在配置文件最底部的static_configs下面修改为如下所示,可以把[]中的地址复制过去就行。
以下添加的地址都将会被监控起来

- targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.248.133:8080','192.168.248.133:9100']

修改完成后,我们删除刚才创建的名为test的容器,重新启动一个prometheus容器。

docker rm -f test
docker run -d --name prometheus --net host -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

本机输入IP地址进行测试
192.168.248.133:9090
在这里插入图片描述
在【Status】->【Targets】中查看监控地址是否正常监控
在这里插入图片描述

遇到down的情况可以查看一下是否是容器关闭了,我中间有重启过docker服务,所以有容器关掉了,重新开起来就好,重启步骤如下所示

docker restart 容器名称
docker rm -f prometheus
docker run -d --name prometheus -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus/rules:/usr/local/prometheus/rules --net host prom/Prometheus

在prometheus服务器上部署Grafana,端口3000

mkdir /grafana
chmod 777 -R /grafana
docker run -d -p 3000:3000 --name grafana -v /grafana:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana

在这里插入图片描述

访问测试,浏览器地址输入192.168.248.134:3000
默认账号密码为
username:admin
password:123.com
在这里插入图片描述
如上就是安装成功的样子。

登录进去,添加数据源
左侧选择【设置按钮】->【Data Source】->【 Add Data Source 】->输入服务器地址及端口
->点击【Save&test】,弹出【Data source is working】代表添加成功
在这里插入图片描述
导入8919模板,我们可以监控到客户机的本地资源,这里还监控不到docker资源信息
在这里插入图片描述
在这里插入图片描述
导入模板11600,我们选中监控客户机,然后可以看到客户机中docker的运行情况,如下图
在这里插入图片描述
以上就可以监控到docker容器的状况了。

创建邮箱报警

配置Alertmanager报警,服务端配置即可,端口9093
同样以 Docker 方式启动 AlertManager
同prometheus一样,先启动一个test容器,拷贝下来alertmanager的配置文件
就相当于创建一个模板,然后复制模板的配置文件加以修改后再使用,使用命令如下:

mkdir /alertmanager
sudo chmod 777 /alertmanager #给最高权限,方便读写
docker run -d --name test -p 9093:9093 prom/alertmanager
docker cp test:/etc/alertmanager/alertmanager.yml /alertmanager
cd /alertmanager
cp alertmanager.yml alertmanager.yml.bak

在这里插入图片描述
验证测试,出现如下就是安装成功在这里插入图片描述
配置alertmanager邮箱报警
获取qq邮箱授权码(这个自行百度)
在这里插入图片描述

然后编辑配置文件

vim /alertmanager/alertmanager.yml

在这里插入图片描述
贴一个模板,大家复制黏贴使用

global:
  resolve_timeout: 5m
  smtp_from: '12345678@163.com'
  smtp_smarthost: 'smtp.163.com:465'
  smtp_auth_username: '12345678@163.com'
  smtp_auth_password: 'BPAOGHPPLGKBLYYNKFL'
  smtp_require_tls: false
  smtp_hello: '163.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '12345678@163.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

删除之前启动的名称为test的容器,重新启动一个alertmanager容器

docker rm -f test
docker run -d --name alertmanager -p 9093:9093 -v /alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

在这里插入图片描述

prometheus添加alertmanager报警规则
接下来,我们需要在 Prometheus 配置 AlertManager 服务地址以及告警规则,新建报警规则文件 node-up.rules 如下

mkdir /prometheus/rules
cd /prometheus/rules
vim node-up.rules

在这里插入图片描述
这里建议复制,手打上去容易出错,横杠和空格的格式很容易报错,内容如下:

groups:
- name: node-up
  rules:
  - alert: node-up
    expr: up{job="prometheus"} == 0
    for: 15s
    labels:
      severity: 1
      team: node
    annotations:
      summary: "{{ $labels.instance }} 已停止运行超过 15s!"

修改prometheus.yml文件,添加rules规则,这里和我的一模一样就行,注意一下小横杠必须要加

vim /prometheus/prometheus.yml

在这里插入图片描述

重启普罗米修斯

docker restart prometheus

在prometheus上查看相应的规则【status】->[Rules]

在这里插入图片描述
如上就是配置成功了。

触发报警发送邮件
我们关闭客户机中其中一个服务,这里举例关闭容器cadvisor
使用命令 docker stop b8d26c109f64

在这里插入图片描述
15s会发一条邮箱到指定的邮箱当中,至此配置完成
在这里插入图片描述

结语

问题1
在配置前一定要关闭防火墙,禁用selinux,否则会没办法下载组件
问题2
在创建prometheus文件夹时,一定要给这个文件夹设置权限,这里我给了最高权限

Chmod 777 Prometheus

问题3
编辑报警组件的配置文件alertmanager.yml时,要注意smtp_auth_password这个参数不是
邮箱密码,而是我们生成的授权码
问题4
在添加rules路径的时候,前面有个小横杠不能忘
在这里插入图片描述

有问题请指出。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祖安大龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值