Prometheus+Grafana 监控服务器基础状态信息
什么是 Prometheus
?
Prometheus
是由 SoundCloud
开发的开源监控报警系统和时序列数据库(TSDB
),自2012
年起,许多公司及组织已经采用 Prometheus
,并且该项目有着非常活跃的开发者和用户社区,现在已经成为一个独立的开源项目,并且保持独立于任何公司,Prometheus
在 2016
加入 CNCF(Cloud Native Computing Foundation)
, 作为在 kubernetes
之后的第二个由基金会主持的项目。
什么是 Grafana
?
Grafana
是一款用 Go
语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。目前使用 grafana
的公司有很多,如 paypal
、ebay
、intel
等。
什么是 Node Exporter
Node Exporter
用于采集服务器层面的运行指标,包括机器的 loadavg
、filesystem
、meminfo
等基础监控,类似于传统主机监控维度的 zabbix-agent
。
Node Exporter
由 prometheus
官方提供、维护,不会捆绑安装,但基本上是必备的 exporter
。
架构图及机器划分
主机名 | IP | 作用 |
---|---|---|
dev-of-test-30 |
10.18.30.30 |
Prometheus+Grafana+Node Exporter |
dev-of-test-31 |
10.18.30.31 |
要监控的机器+Node Exporter |
机器初始化
# 以下操作所有机器都需要
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && systemctl stop firewalld && systemctl disable firewalld && init 6
部署 Prometheus
设置配置文件
# 创建 prometheus 配置文件
mkdir -p /data/prometheus && vim /data/prometheus/prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: Prometheus
# 组名,用来再 Grafana 上更直观查看信息
- job_name: Server
scrape_interval: 10s
scrape_timeout: 5s
static_configs:
- targets:
# 安装 Node Exporter 的机器,Node Exporter 默认端口为 9100
# 30 机器我这里修改为 9200 端口
- 10.18.30.30:9200
- 10.18.30.31:9100
# 创建 prometheus 数据目录
mkdir /data/prometheus/data && chmod -R 777 /data/prometheus/data/
使用 docker
部署 prometheus
# 安装 docker
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo && yum install -y docker-ce.x86_64 && systemctl start docker && systemctl enable docker
# 启动 prometheus
docker run -itd -p 9090:9090 --mount type=bind,source=/data/prometheus/prometheus.yml,target=/etc/prometheus/prometheus.yml --mount type=bind,source=/data/prometheus/data,target=/prometheus --name cf_prometheus prom/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --storage.tsdb.retention=15d --query.max-concurrency=50 --web.enable-lifecycle
部署 Node Exporter
在 30
上部署 Node Exporter
,此处使用 9200
端口,主要是为了展示如何使用其他端口
# 设置开机自动启动 Node Exporter
chmod 755 /etc/rc.d/rc.local && cat >> /etc/rc.d/rc.local <<EOF
nohup /data/node_exporter/node_exporter --web.listen-address=":9200" > /data/node_exporter/node_exporter.log 2>&1 &
EOF
# 创建 Node Exporter 目录和下载对应的包
mkdir -p /data/node_exporter && chmod -R 755 /data/node_exporter/ && cd /data/node_exporter/ && wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz && tar xvf node_exporter-1.0.1.linux-amd64.tar.gz && mv node_exporter-1.0.1.linux-amd64/* . && rm -rf node_exporter-1.0.1.linux-amd64
# 启动 Node Exporter,--web.listen-address=":9200" 指定了 Node Exporter 监听 9200 端口
nohup /data/node_exporter/node_exporter --web.listen-address=":9200" > /data/node_exporter/node_exporter.log 2>&1 &
在 31
上部署 Node Exporter
# 设置开机自动启动 Node Exporter
chmod 755 /etc/rc.d/rc.local && cat >> /etc/rc.d/rc.local <<EOF
nohup /data/node_exporter/node_exporter > /data/node_exporter/node_exporter.log 2>&1 &
EOF
# 创建 Node Exporter 目录和下载对应的包
mkdir -p /data/node_exporter && chmod -R 755 /data/node_exporter/ && cd /data/node_exporter/ && wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz && tar xvf node_exporter-1.0.1.linux-amd64.tar.gz && mv node_exporter-1.0.1.linux-amd64/* . && rm -rf node_exporter-1.0.1.linux-amd64
# 启动 Node Exporter,默认监听的是 9100 端口
nohup /data/node_exporter/node_exporter > /data/node_exporter/node_exporter.log 2>&1 &
部署 Grafana
在 30
上部署 Grafana
# 创建 grafana 数据目录
mkdir -p /data/grafana && chmod -R 755 /data/grafana
# 启动 grafana
docker run -itd -p 3000:3000 --name cf_grafana --mount type=bind,source=/data/grafana,target=/etc/grafana/provisioning grafana/grafana
查看 Prometheus
信息,配置 Grafana
访问 http://10.18.30.30:9090/targets
可以见到两台安装了 Node Exporter
的机器已经正常启动,并有数据到 prometheus
了
访问 http://10.18.30.30:3000/login
默认用户和密码为:admin
/ admin
添加数据源
导入模板
查看状态看板
模板导入成功后会自动跳转到状态看板
至此,就实现了 Prometheus
+Grafana
+Node Exporter
实现监控服务器基础状态了!