环境
CentOS-7 #系统
192.178.124.71 #IP
prometheus-2.16.0.linux-amd64.tar.gz
grafana-6.6.2-1.x86_64.rpm
node_exporter-0.18.1.linux-amd64.tar.gz
准备工作
创建Prometheus运行用户与组
[root@ localhost ~]# groupadd prometheus
[root@ localhost ~]# useradd -M -s /sbin/nologin prometheus -g prometheus
关闭selinux和防火墙
[root@ localhost ~]# systemctl stop firewalld
[root@ localhost ~]# setenforce 0
安装Prometheus
解压并改名
[root@ localhost ~]# tar xf prometheus-2.16.0.linux-amd64.tar.gz -C /usr/local/
[root@ localhost ~]# mv /usr/local/prometheus-2.16.0.linux-amd64 /usr/local/prometheus
创建文件的存储目录
[root@ localhost ~]# mkdir /usr/local/prometheus/{conf,rules,data}
[root@ localhost ~]# chown -R prometheus:prometheus /usr/local/prometheus/
[root@ localhost ~]# cp /usr/local/prometheus/prometheus /usr/local/bin/
[root@ localhost ~]# cp /usr/local/prometheus/promtool /usr/local/bin/
[root@ localhost ~]# cp /usr/local/prometheus/tsdb /usr/local/bin/
[root@ localhost ~]# mv /usr/local/prometheus/prometheus.yml /usr/local/prometheus/conf/
修改Prometheus配置文件
[root@ localhost ~]# vim /usr/local/prometheus/conf/prometheus.yml
#全局配置区域
global:
#该项用于指定抓取数据的周期,默认为15秒
scrape_interval: 15s
#该项用于定义Prometheus评估规则的频率,默认为15秒,规则主要有记录规则与警报规则
evaluation_interval: 15s
#警报配置相关
alerting:
alertmanagers:
- static_configs:
- targets:
#用来指定包含记录规则或警报规则的文件列表
rule_files:
#抓取配置列表
scrape_configs:
#定义监控任务的名称,也可以理解为标签
- job_name: 'prometheus'
#静态定义抓取的目标,默认为本机
static_configs:
- targets: ['192.168.124.71:9090']
将Prometheus添加为系统服务
[root@ localhost ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=prometheus-server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/conf/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/usr/local/prometheus/data --storage.tsdb.retention.time=7d --web.max-connections=512 --web.read-timeout=3m --query.max-concurrency=25 --query.timeout=2m --log.level=debug
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
启动Prometheus并设置为开机启自启
[root@ localhost ~]# systemctl daemon-reload
[root@ localhost ~]# systemctl enable prometheus
[root@ localhost ~]# systemctl start prometheus
[root@ localhost ~]# netstat -anput | grep prometheus
tcp 0 0 127.0.0.1:38418 127.0.0.1:9090 ESTABLISHED 20287/prometheus
tcp 0 0 192.168.124.71:50170 192.168.124.71:9090 ESTABLISHED 20287/prometheus
tcp6 0 0 :::9090 :::* LISTEN 20287/prometheus
tcp6 0 0 192.168.124.71:9090 192.168.124.71:50170 ESTABLISHED 20287/prometheus
tcp6 0 0 127.0.0.1:9090 127.0.0.1:38418 ESTABLISHED 20287/prometheus
安装node_exporter
解压并改名
[root@ localhost ~]# tar xf node_exporter-0.18.1.linux-amd64.tar.gz -C /usr/local/
[root@ localhost ~]# mv /usr/local/node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter
[root@ localhost ~]# chown -R prometheus:prometheus /usr/local/node_exporter
[root@ localhost ~]# cp /usr/local/node_exporter/node_exporter /usr/local/bin/
将node_exporter添加为系统服务
[root@ localhost ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter --log.level=debug
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
启动node_exporter并设置开机自启动
[root@ localhost ~]# systemctl daemon-reload
[root@ localhost ~]# systemctl enable node_exporter
[root@ localhost ~]# systemctl start node_exporter
[root@ localhost ~]# netstat -anput | grep node_exporter
tcp6 0 0 :::9100 :::* LISTEN 21274/node_exporter
将node_exporter添加到Prometheus的配置文件当中
[root@ localhost ~]# vim /usr/local/prometheus/conf/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.124.71:9090']
- job_name: 'node1-system-status'
static_configs:
- targets: ['192.168.124.71:9100']
检查配置文件并启动服务
[root@ localhost ~]# promtool check config /usr/local/prometheus/conf/prometheus.yml
Checking /usr/local/prometheus/conf/prometheus.yml
SUCCESS: 0 rule files found
[root@ localhost ~]# systemctl restart prometheus
[root@ localhost ~]# netstat -anput | grep prometheus
tcp 0 0 192.168.124.71:56018 192.168.124.71:9100 ESTABLISHED 21584/prometheus
tcp 0 0 192.168.124.71:50232 192.168.124.71:9090 ESTABLISHED 21584/prometheus
tcp 0 0 127.0.0.1:38480 127.0.0.1:9090 ESTABLISHED 21584/prometheus
tcp6 0 0 :::9090 :::* LISTEN 21584/prometheus
tcp6 0 0 127.0.0.1:9090 127.0.0.1:38480 ESTABLISHED 21584/prometheus
tcp6 0 0 192.168.124.71:9090 192.168.124.71:50232 ESTABLISHED 21584/prometheus
访问Prometheus
Grafnan搭建
[root@ localhost ~]# yum -y install grafana-6.6.2-1.x86_64.rpm
修改Grafana的配置文件
[root@ localhost ~]# cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.bak
[root@ localhost ~]# vim /etc/grafana/grafana.ini
[paths]
data = /var/lib/grafana
temp_data_lifetime = 24h
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = conf/provisioning
[server]
protocol = http
http_addr = 192.168.124.71
http_port = 3000
root_url = %(protocol)s://%(domain)s:%(http_port)s/
serve_from_sub_path = false
router_logging = false
static_root_path = public
enable_gzip = true
[users]
allow_sign_up = true
allow_org_create = true
auto_assign_org = true
default_theme = dark
启动Grafana并设置开机自启动
[root@ localhost ~]# systemctl enable grafana-server
[root@ localhost ~]# systemctl start grafana-server
访问Grafana
Grafana基本配置
添加仪表盘
成果展示