搭建Prometheus+Grafana监控平台
搭建Prometheus+Grafana监控平台
部署流程
1.安装 Docker
2.安装 Prometheus(收集监控数据)
3.安装 Grafana (用于监控的仪表盘)
4.安装 Node_exporter (上报数据)
5.配置 Prometheus 监控Node节点
1) 修改Prometheus主配置文件
2) 重启Prometheus容器
6.配置Prometheus + Grafana
#安装必备工具
yum install -y vim lsof ntpdate #无法安装时将下文vim替换成自带的vi
#同步时间
ntpdate cn.pool.ntp.org
#防火墙配置命令
firewall-cmd --permanent --list-ports #查看已放开端口
firewall-cmd --permanent --add-port=8868/tcp #增加TCP协议端口8868
firewall-cmd --reload #重载
1安装Docker
联网安装
#Docker一键安装脚本
首选脚本:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
备选脚本:
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
#根据脚本提示一直下一步
#修改Docker镜像仓库
vim /etc/docker/daemon.json
#docker配置中的registry-mirrors
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.1ms.run"]
}
无网络安装
上传docker-20.10.17.tgz到服务器**/root**文件夹下
#解压
tar -zxvf docker-28.1.1.tgz
#解压之后的文件复制到 /usr/bin/ 目录下
cp docker/* /usr/bin/
#在/etc/systemd/system/目录下新增docker.service文件
vim /etc/systemd/system/docker.service
粘贴下面内容到docker.service中并保存
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
启动Dokcer
#给docker.service文件添加执行权限
chmod +x /etc/systemd/system/docker.service
#重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
#启动docker
systemctl restart docker
#设置开机启动
systemctl enable docker.service
#查看docker服务状态
systemctl status docker
#修改Docker镜像仓库
vim /etc/docker/daemon.json
#docker配置中的registry-mirrors
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.1ms.run"]
}
#重新加载配置文件(每次有修改daemon.json文件时都要重新加载下)
systemctl daemon-reload
#启动docker
systemctl restart docker
2安装Prometheus
防火墙开放端口9090
有网环境:
#拉取镜像
docker pull prom/prometheus
docker run -itd --name=prometheus \
--restart=always \
-p 9090:9090 \
prom/prometheus
无网络环境:
#上传prometheus.tar.gz镜像压缩包到/root目录下
#执行命令导入镜像包
docker load -i prometheus.tar.gz
#运行
docker run -itd --name=prometheus \
--restart=always \
-p 9090:9090 \
prom/prometheus
浏览器访问 http://192.168.0.1:9090 来进行验证
安装Grafana
有网环境:
docker pull grafana/grafana
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v /root/grafana-storage:/var/lib/grafana \
grafana/grafana-oss
无网络环境:
#上传grafana.tar.gz镜像压缩包到/root目录下
mkdir /root/grafana-storage
chmod -R 777 /root/grafana-storage
#执行命令导入镜像包
docker load -i grafana.tar.gz
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v /root/grafana-storage:/var/lib/grafana \
grafana/grafana-oss
浏览器访问 http://192.168.0.1:3000 来进行验证
安装Node_exporter
在需要进行监控的服务器上进行安装
docker方式安装:
docker pull prom/node-exporter
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter
通过浏览器访问 http://192.168.0.1:9100/metrics 来查看监控收集的数据
二进制方式安装:
将node_exporter-1.2.2.linux-amd64.tar.gz上传到/root目录下进行解压
#1.添加新的系统用户
useradd --system node_exporter
#2.进行解压缩下载的软件,然后拷贝node_exporter文件到/usr/bin目录中。
tar zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/bin --strip-components=1 --wildcards */node_exporter
#3.添加systemd unit文件
vim node-exporter.service
#粘贴以下内容到node-exporter.service中
[Unit]
Description=Node Exporter
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
User=node_exporter
ExecStart=/usr/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
#4.安装启动服务配置
install -m 0644 ./node-exporter.service /etc/systemd/system/
#5.启动服务
systemctl daemon-reload
systemctl enable node-exporter
systemctl start node-exporter
默认情况下,node_exporter 在端口9100上运行,并在路径/metrics上暴露指标可以通过浏览器访问获取指标数据
安装Mysql_exporter
二进制安装
上传mysqld_exporter-0.17.2.linux-amd64.tar.gz至/root目录下
cd /root
#解压
tar -xvzf mysqld_exporter-0.17.2.linux-amd64.tar.gz
mv mysqld_exporter-0.17.2.linux-amd64 mysqld_exporter
cd mysqld_exporter
-
创建配置文件
.my.cnf
,填入如下内容后保存:wq
vim .my.cnf [client] user = root password = ZHEtang403~! host = 127.0.0.1 port = 3306
-
创建
mysqld_exporter.service
配置文件vim /usr/lib/systemd/system/mysqld_exporter.service #粘贴以下内容进去并保存 [Unit] Description=mysql_exporter After=network.target [Service] Restart=on-failure ExecStart=/root/mysqld_exporter/mysqld_exporter --config.my-cnf=/root/mysqld_exporter/.my.cnf --web.listen-address=:9104 [Install] WantedBy=multi-user.target
-
刷新服务配置并启动服务
systemctl daemon-reload systemctl start mysqld_exporter.service #查看状态 systemctl status mysqld_exporter.service #开机自启动 systemctl enable mysqld_exporter.service #测试服务返回 curl localhost:9104/metrics
docker安装
Mysql_exporter配置文件my.cnf
[client]
host=10.25.140.19
user=root
password=ZHEtang403~!
挂载配置文件my.cnf
docker run -d -p 9104:9104 --name mysqld-exporter --restart=always --volume=/root/my.cnf:/etc/mysql/my.cnf:ro prom/mysqld-exporter --config.my-cnf=/etc/mysql/my.cnf
安装JMX_Exporter(可选)
#监控jar包
java -javaagent:/javaagent/jmx_prometheus_javaagent-1.3.0.jar=7099:/javaagent/config.yaml -jar your_application.jar
#直接监控tomcat,修改catlina.sh
JAVA_OPTS="-javaagent:/javaagent/jmx_prometheus_javaagent-1.3.0.jar=17099:/javaagent/config.yaml -jar"
配置 Prometheus 监控Node节点
docker cp prometheus:/etc/prometheus/prometheus.yml $PWD
vim prometheus.yml
在Prometheus配置文件按以下内容修改:
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: 'node_exporter' #监控服务器
static_configs:
- targets: ['10.25.251.19:9100'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: '10.25.251.19'
- targets: ['10.25.140.25:9100'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: '10.25.140.25'
- targets: ['10.25.140.19:9100'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: '10.25.140.19'
- targets: ['10.25.140.36:9100'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: '10.25.140.36'
- job_name: 'mysqld_exporter' #监控mysql
static_configs:
- targets: ['10.25.251.19:9104'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: '10.25.251.19'
- targets: ['10.25.140.19:9104'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: '10.25.140.19'
- targets: ['10.25.140.36:9104'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: '10.25.140.36'
- job_name: 'tomcat' #监控tomcat
static_configs:
- targets: ['10.25.140.19:17099']
labels:
instance: '10.25.140.19'
加入配置并重启
docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
docker restart prometheus
配置prometheus+Grafana
浏览器访问 http://192.168.0.1:3000 来将Node节点监控
Grafana官方提供模板地址: https://grafana.com/grafana/dashboards
效果图
MySQL_Dashboard
Linux_Dashboard
模板链接
下载地址:Linux_dashboard
下载地址:Mysql_dashboard
官方地址:Node Exporter Dashboard
官方地址:SView tomcat
官方地址:MySQL Exporter