安装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路径的时候,前面有个小横杠不能忘
有问题请指出。