最近由于工作上的安排,我们产品的运维工作也落到了我头上,接手发现很多运维工作方式比较原始,尤其时在监控方面的欠缺,使得我们处于很被动的局面,所以想着搭建一套监控系统;在做监控平台选型时,比来比去决定还是用prometheus来搭建我们的监控平台,基于我们做这个决定的原因主要有如下几点:
下面开始搭建:
prometheus :github地址
查阅资料的时候发现很多同学都时直接部署的,这里我推荐用容器的方式部署,这样可以更简洁和便于管理。
docker pull prom/prometheus
vim prometheus.yml
global:
# 全局默认抓取间隔
scrape_interval: 15s
rule_files:
- "*rule.yml"
scrape_configs:
- job_name: 'prometheus'
# 本任务的抓取间隔,覆盖全局配置
scrape_interval: 5s
static_configs:
# 抓取地址同 Prometheus 服务地址,路径为默认的 /metrics
- targets: ['localhost:9090']
docker run --name prometheus -d -p 9090:9090 -v /data/prometheus/:etc/prometheus/ prom/prometheus
node_exporter是负责收集每台物理机的CPU/内存/IO等信息的,所以每台要监控机器都要安装,开发者建议不要用docker部署,所以这个服务我们直接部署在物理机上。
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
tar xvfz node_exporter_*
cd node_exporter*
如果调试用,此时执行 ./node_exporter & 就可以运行成功了。
但是由于是监控服务,所以建议设置自启动。
3.设置开机自启动
# 安全起见,创建一个用户用于node_exporter
useradd prometheus
# 把解压后的node_exporter执行文件copy到/usr/bin下 并赋予执行权限
copy node_exporter /usr/bin
chmod +x /usr/bin/node_exporter
# 设置启动参数node_exporter.service
cat > /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
#启动命令
systemctl start node_exporter
#查看状态
systemctl status node_exporter
#出现下面这个状态代表正常
● node_exporter.service - node_exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-03-16 15:44:23 CST; 1 weeks 0 days ago
Docs: https://prometheus.io/
Main PID: 2858 (node_exporter)
Tasks: 11 (limit: 4509)
CGroup: /system.slice/node_exporter.service
└─2858 /usr/bin/node_exporter
#设置自启动
systemctl enable node_exporter
vim prometheus.yml
global:
# 全局默认抓取间隔
scrape_interval: 15s
rule_files:
- "*rule.yml"
scrape_configs:
- job_name: 'prometheus'
# 本任务的抓取间隔,覆盖全局配置
scrape_interval: 5s
static_configs:
# 抓取地址同 Prometheus 服务地址,路径为默认的 /metrics
- targets: ['localhost:9090']
#########node_exporter新增##############
# 任务名
- job_name: 'node-exporter'
# 本任务的抓取间隔,覆盖全局配置
scrape_interval: 5s
static_configs:
# 抓取地址同 Prometheus 服务地址,路径为默认的 /metrics
- targets: ['机器1IP:9100','机器2IP:9100','机器3IP:9100']
docker restart prometheus
granfa是一个可视化的面板,有着非常漂亮和丰富的图表和布局,我们的监控信息就是要用grafana漂亮的显示出来。
grafana安装也是用docker的方式来部署
#拉去镜像
docker pull grafana/grafana
#启动容器
docker run -d --name=grafana -p 3000:3000 grafana/grafana