- A+
Prometheus+Grafana监控部署实践
前言:说明
原博客: https://blog.csdn.net/baidu_38432732/article/details/97003079 , 本文指令大部分复制原博客,所以版本号需要注意一下,不能原样复制
在部署之前,需要关闭防火墙(firewalld)和selinux
# 查看防火墙状态
[root@prometheus src]# systemctl status firewalld.service
# 临时关闭防火墙
[root@prometheus src]# systemctl stop firewalld.service
# 禁止防火墙开机启动,永久关闭
[root@prometheus src]# systemctl disable firewalld.service
[root@prometheus src]# removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service
[root@prometheus src]# removed symlink /etc/systemd/system/basic.target.wants/firewalld.service
#查看selinux状态
[root@prometheus src]# getenforce
#临时关闭selinux
[root@prometheus src]# setenforce 0
[root@prometheus src]# getenforce
Permissive
#永久关闭|禁止开机启动,进入到/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,重启生效。
[root@prometheus src]# vim /etc/selinux/config
参考文档:
Prometheus github:https://github.com/prometheus
grafana github:https://github.com/grafana/grafana
Prometheus getting_started:https://prometheus.io/docs/prometheus/latest/getting_started/
Prometheus node_exporter:https://github.com/prometheus/node_exporter
Prometheus部署(docker,optional):https://prometheus.io/docs/prometheus/latest/installation/
Prometheus配置文件详解:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/
grafana 部署:http://docs.grafana.org/installation/rpm/
一、环境
1.拓扑
2.节点
*Node* | *OS* | *Hostname* | *IP* | *Remark* |
---|---|---|---|---|
prometheus& grafana server | centos 7.4 | prometheus | 172.20.1.211 | |
prometheus node | centos 7.4 | node1 | 172.20.1.212 |
3.版本
二、搭建Go环境
-
执行
tar
解压到/usr/loacl
目录下,得到go
文件夹tar -C /usr/local -zxvf go1.10.3.linux-amd64.tar.gz
-
添加
/usr/loacl/go/bin
目录到PATH变量中。添加到/etc/profile
或$HOME/.profile
都可以// 习惯用vim,没有的话可以用命令`sudo apt-get install vim`安装一个
vim /etc/profile
// 在最后一行添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
// wq保存退出后source一下
source /etc/profile -
执行
go version
,如果显示版本号,则Go环境安装成功。
三、部署prometheus
1.下载部署
# 下载
[root@prometheus src]# cd /usr/local/src/
[root@prometheus src]# wget https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz
# 部署到/usr/local/目录
# promethus不用编译安装,解压目录中有配置文件与启动文件
[root@prometheus src]# tar -zxvf prometheus-2.0.0.linux-amd64.tar.gz -C /usr/local/
[root@prometheus src]# cd /usr/local/
[root@prometheus local]# mv prometheus-2.0.0.linux-amd64/ prometheus/
# 验证
[root@prometheus local]# cd prometheus/
[root@prometheus prometheus]# ./prometheus --version
2.配置文件
# 解压目录中的prometheus.yml
# 简单验证,主要配置采用默认文件配置,有修改/新增处用红色标示
[root@prometheus prometheus]# vim prometheus.yml
# 全局配置global:
scrape_interval: 15s # 设置抓取(pull)时间间隔,默认是1m
evaluation_interval: 15s # 设置rules评估时间间隔,默认是1m
# scrape_timeout is set to the global default (10s).
# 告警管理配置,暂未使用,默认配置alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 加载rules,并根据设置的时间间隔定期评估,暂未使用,默认配置rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 抓取(pull),即监控目标配置
# 默认只有主机本身的监控配置scrape_configs:
# 监控目标的label(这里的监控目标只是一个metric,而不是指某特定主机,可以在特定主机取多个监控目标),在抓取的每条时间序列表中都会添加此label
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
# 可覆盖全局配置设置的抓取间隔,由15秒重写成5秒。
scrape_interval: 5s
# 静态指定监控目标,暂不涉及使用一些服务发现机制发现目标static_configs:
- targets: ['localhost:9090']
# (opentional)再添加一个label,标识了监控目标的主机
labels:
instance: prometheus
- job_name: 'linux'
scrape_interval: 10s
static_configs:
# 采用node_exporter默认开放的端口
- targets: ['localhost:9100']
labels:
instance: node1
3.设置用户
# 添加用户,后期用此账号启动服务
[root@prometheus prom etheus]# groupadd prometheus
[root@prometheus prometheus]# useradd -g prometheus -s /sbin/nologin prometheus
# 赋权
[root@prometheus prometheus]# cd ~
[root@prometheus ~]# chown -R prometheus:prometheus /usr/local/prometheus/
# 创建prometheus运行数据目录
[root@prometheus ~]# mkdir -p /var/lib/prometheus
[root@prometheus ~]# chown -R prometheus:prometheus /var/lib/prometheus/
4.设置开机自启动
[root@prometheus ~]# touch /usr/lib/systemd/system/prometheus.service
[root@prometheus ~]# chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service
[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=prometheus
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 设置开机启动
[root@prometheus ~]# systemctl enable Prometheus
[root@prometheus ~]# systemctl start prometheus
5.设置iptables
[root@prometheus ~]# iptables -I INPUT -p tcp --dport 9090 -j ACCEPT # linux iptables开放端口命令
#下面的命令是修改iptables表的指令,但是我自测行不通
#[root@prometheus ~]# vim /etc/sysconfig/iptables
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT
# 也有说是这种指令 -A INPUT -p udp -m udp --dport 631 -j ACCEPT,也没测试通过
# 具体可以参考链接: https://www.cnblogs.com/xiujin/p/11494471.html
[root@prometheus ~]# service iptables restart
6.启动并验证
-
查看服务状态
[root@prometheus ~]# systemctl status prometheus
[root@prometheus ~]# netstat -tunlp | grep 9090
-
web ui
Prometheus自带有简单的UI,http://localhost:9090
在Status菜单下,Configuration,Rule,Targets等,
Statu-->Configuration展示prometheus.yml的配置,如下:
四、部署node_exporter
Node_exporter收集机器的系统数据,这里采用prometheus官方提供的exporter,除node_exporter外,官方还提供consul,memcached,haproxy,mysqld等exporter,具体可查看官网。
1.下载&部署
# 部署
[root@node1 src]# tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /usr/local/
[root@node1 src]# cd /usr/local/
[root@node1 local]# mv node_exporter-0.18.1.linux-amd64/ node_exporter/
2.设置用户
[root@node1 ~]# groupadd prometheus
[root@node1 ~]# useradd -g prometheus -s /sbin/nologin prometheus
[root@node1 ~]# chown -R prometheus:prometheus /usr/local/node_exporter/
3.设置开机启动
[root@node1 ~]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@node1 ~]# systemctl enable node_exporter
[root@node1 ~]# systemctl start node_exporter
4.设置iptables
# 官方node_exporter默认使用9100端口
[root@node1 ~]# iptables -I INPUT -p tcp --dport 9090 -j ACCEPT # linux iptables开放端口命令
[root@node1 ~]# service iptables restart
5.验证
访问:http://local:9090,可见node1主机已经可被监控,如下:
五、部署grafana
1.下载&部署
# 部署
[root@node1 src]# tar -zxvf grafana-7.1.5.linux-amd64.tar.gz -C /usr/local/
[root@node1 src]# cd /usr/local/
[root@node1 local]# mv grafana-7.1.5.linux-amd64/ grafana/
2.配置文件
配置文件位于/etc/grafana/grafana.ini,这里暂时保持默认配置即可。
3.设置开机启动
[root@localhost system]# vim /usr/lib/systemd/system/grafana-server.service
[Unit]
Description=Grafana
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/grafana/bin/grafana-server -homepath /usr/local/grafana
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@prometheus src]# systemctl enable grafana-server
[root@prometheus src]# systemctl start grafana-server
4.设置iptables
# 官方node_exporter默认使用3000端口
[root@node1 ~]# iptables -I INPUT -p tcp --dport 3000 -j ACCEPT # linux iptables开放端口命令
[root@node1 ~]# service iptables restart
5.添加数据源
-
登录
访问:http://localhost,默认账号/密码:admin/admin
-
添加数据源
在登陆首页,点击"Add data source"按钮,跳转到添加数据源页面,配置如下:
Name: prometheus
Access: Browser
取消Default的勾选,其余默认,点击"Add",如下:
在"Dashboards"页签下"import"自带的模版,如下:
6.导入dashboard
从grafana官网下载相关dashboaed到本地,如:https://grafana.com/dashboards/405
Grafana首页-->左上角图标-->Dashboard-->import
Upload已下载至本地的json文件(或者使用dashboard id,如这里的405),如下:
数据源选择"prometheus",即添加的数据源name,点击"Import"按钮,如下: