文章目录
本次我们利用Docker和Prometheus以及周边的其他生态来搭建一套属于自己的全时监控告警平台,系统采用Centos7.6。
首先在系统中安装Docker
#升级yum
sudo yum update
#卸载旧版本docker
sudo yum remove docker docker-common docker-selinux docker-engine
#安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
#安装docker
sudo yum install docker-ce
#启动服务
sudo systemctl start docker
安装成功后查看版本:
[root@instance-53r3vagg tmp]# docker -v
Docker version 19.03.14, build 5eb3275d40
设置镜像源
在下载镜像之前,我们需要设置一下国内源,用来提高下载速度,执行sudo vim /etc/docker/daemon.json 命令创建新文件,并添加如下代码
{
"registry-mirrors": ["https://d7grpode.mirror.aliyuncs.com"]
}
重启Docker:
sudo systemctl restart docker
随后拉取Prometheus的Docker镜像:
docker pull prom/prometheus:latest
监控redis例子
这里我们以监控Redis数据库为例子,所以还需要拉取redis和redis状态收集器两个镜像:
拉取镜像
docker pull redis
docker pull oliver006/redis_exporter:latest
分别启动redis和redis状态收集器:
启动redis:
docker run -d --name redis -p 6379:6379 redis
启动redis状态收集器
docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter:latest --redis.addr redis://192.168.0.1:6379
这里redis_exporter监听服务器上的redis服务,而redis_exporter运行在9121端口上,注意redis的地址写服务器的公网ip。
运行docker ps 查看服务:
[root@instance-53r3vagg tmp]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51349113892a redis "docker-entrypoint.s…" 52 minutes ago Up 52 minutes 0.0.0.0:6379->6379/tcp redis
0ffcf81ea7ff oliver006/redis_exporter:latest "/redis_exporter --r…" About an hour ago Up About an hour 0.0.0.0:9121->9121/tcp redis_exporter
随后创建prometheus的配置文件
vim /tmp/prometheus.yml
配置下面代码:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'redis'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['120.48.20.113:9121']
这里每隔5秒就获取一下服务运行信息,注意服务器地址要写公网ip,随后启动prometheus服务
启动Prometheus
docker run -d -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest
浏览器查看界面
此时,prometheus就运行在9090端口上,访问一下:http://192.168.0.1:9090/targets
就可以看到redis服务正在运行,与此同时,也可以查询一些参数,比如内存占用:
重启prometheus服务:
#把宿主机Prometheus配置文件挂载镜像中
docker run -d -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml -v /tmp/redis.rules:/etc/prometheus/redis.rules prom/prometheus:latest
使用grafana图形化
整个过程滴水不漏,当然了,如果你觉得prometheus的监控界面过于简陋,可以使用Grafana将监控数据可视化:
docker run -d --name prom-dashboard -p 3000:3000
访问地址:http://192.168.0.1:3000/
默认账号密码是admin/amdin。
导入数据:
选择prometheus
配置prometheus地址和端口:
导入redis 模板
访问地址
https://grafana.com/grafana/dashboards
点击Download,下载json文件