安装docker环境
使用命令
sudo yum update //更新到最新 yum install docker //安装docker
启动docker并设置成开机自启动
systemctl start docker systemctl enable docker
关闭防火墙,禁用selinux
systemctl stop firewalld.service sudo setenforce 0
使用sestatus查看selinux状态,这里只是暂时禁用
部署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']
本机输入IP地址进行测试
192.168.248.133:8080
遇到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']
重启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
修改prometheus.yml文件,添加rules规则
vim /prometheus/prometheus.yml
重启普罗米修斯
在prometheus上查看相应的规则
如上就是配置成功了。
触发报警发送邮件
我们关闭客户机中其中一个服务,这里举例关闭容器cadvisor
使用命令 docker stop b8d26c109f64
15s会发一条邮箱到指定的邮箱当中,至此配置完成
问题1
在配置前一定要关闭防火墙,禁用selinux,否则会没办法下载组件
问题2
在创建prometheus文件夹时,一定要给这个文件夹设置权限,这里我给了最高权限
Chmod 777 Prometheus
问题3
编辑报警组件的配置文件alertmanager.yml时,要注意smtp_auth_password这个参数不是
邮箱密码,而是我们生成的授权码
问题4
在添加rules路径的时候,前面有个小横杠不能忘
有问题请指出。



