## 一、监控组件
### 监控需要的组件
alertmanager-0.21.0.linux-amd64.tar.gz
grafana-7.4.0.linux-amd64.tar.gz
mysqld_exporter-0.12.1.linux-amd64.tar.gz
node_exporter-1.0.1.linux-amd64.tar.gz
prometheus-2.24.0.linux-amd64.tar.gz
### 部署的要求
启动组件的时候,**不要使用root用户启动**,这里我们创建prome用户;我们在prome用户下启动组件。
### 创建prome用户
操作命令(在 root 用户下操作)
```
# 先查看是否有prome用户
su - prome
# 添加prome用户,如果已经存在prome用户,则不用再次添加。
adduser prome
# 修改密码
passwd prome
# 授予prome用户sudo权限
vim /etc/sudoers
```
### 安装 Linux 基线
操作命令 (在 root 用户下操作)
```
## Linux基线安装
yum install wget gcc openssl git autoconf vim screen automake libtool make perl gettext gettext-devel gd gperf ncurses-devel zip unzip net-tools snappy-devel sysstat iftop psmisc ntp logrotate sshpass rsync
```
### Linux 主机时间同步
操作命令(在 root 用户下操作)
```
# 同步NTP服务器(上海)
[root@ncayu618 ~]# ntpdate -u ntp.api.bz
22 Mar 16:08:51 ntpdate[24159]: adjust time server 114.118.7.161 offset -0.000475 sec
[root@ncayu618 ~]# date
2021年 03月 22日 星期一 16:09:33 CST
[root@ncayu618 ~]# hwclock
2021年03月22日 星期一 16时15分40秒 -0.351661 秒
# 将系统时间写入到硬件
[root@ncayu618 ~]# clock -w
# 再次确认时间
[root@ncayu618 ~]# date
2021年 03月 22日 星期一 16:09:33 CST
[root@ncayu618 ~]# hwclock
2021年03月22日 星期一 16时15分40秒 -0.351661 秒
```
### 上传和解压组件
注:文件上传到 Linux 上时,默认用户组为 root,需要把组件的放在prome 用户组下;组件启动和关闭均使用 prome 用户。
操作命令
```
# 查看是否有/data/applications/prometheus文件夹,如果没有就创建
cd /data
mkdir applications
cd applications
mkdir prometheus
# 创建software文件夹(用于存放组件)
mkdir software
# 把prometheus文件夹赋予fivefu用户组
chown prome:prome prometheus/
chown prome:prome software/
# 上传组件到software文件夹
# 解压组件到 /data/applications/prometheus 目录下
tar xvfz node_exporter-1.0.1.linux-amd64.tar.gz -C /data/applications/prometheus
# 重命名文件,创建软连接
mv node_exporter-1.0.1.linux-amd64/ node_exporter-1.0.1
ln -s node_exporter-1.0.1 node_exporter
```
### 二、开始安装
### 1.确定监控部署路径
之前安装的[Prometheus](https://so.csdn.net/so/search?q=Prometheus&spm=1001.2101.3001.7020)监控的路径是:/data/applications 。 由于每一个组件安装后就需要创建一个软连接,/data/applications目录下就会有很多文件夹,于是后期的Prometheus部署可以用下面的路径:
```
# 部署路径:
/data/applications/prometheus
# tar.gz二进制包存放路径
/data/applications/software
```
友情提示:`Linux主机上下载组件比较慢,请上传组件二进制包到/data/applications/software 目录下`。
## 2.部署Prometheus组件
#### 解压Prometheus组件到指定目录
```
# 解压
tar xzvf prometheus-2.24.0.linux-amd64.tar.gz -C /data/applications/prometheus
# 重命名
cd /data/applications/prometheus
mv prometheus-2.24.0.linux-amd64 prometheus-2.24.0
# 创建软连接
ln -s prometheus-2.24.0 prometheus
```
#### 创建目录文件,让目录更美观
```
# 进入Prometheus路径下
cd /data/applications/prometheus/prometheus/
# 创建文件夹 bin、conf、data、logs、script
mkdir bin conf data logs script
# 移动prometheus.yml文件到conf目录
mv prometheus.yml conf/
# 移动prometheus、promtool、LICENSE、NOTICE 文件到bin目录
mv prometheus promtool LICENSE NOTICE bin/
```
### 创建启动脚本
```
# 进入script文件
cd script
# 创建脚本文件run_prometheus.sh
vim run_prometheus.sh
```
### 启动Prometheus脚本文件:run\_prometheus.sh
```
#!/bin/bash
set -e
DEPLOY_DIR=/data/applications/prometheus/prometheus/bin
cd "${DEPLOY_DIR}" || exit 1
# WARNING: This file was auto-generated. Do not edit!
# All your edit might be overwritten!
exec > >(tee -i -a "/data/applications/prometheus/prometheus/logs/prometheus.log")
exec 2>&1
exec ./prometheus \
--config.file="/data/applications/prometheus/prometheus/conf/prometheus.yml" \
--web.listen-address=":9090" \
--web.external-url="http://192-168-70-133:9090/prometheus" \
--web.enable-admin-api \
--log.level="info" \
--storage.tsdb.path="/data/applications/prometheus/prometheus/data" \
--storage.tsdb.retention="30d" 2>&1 &
```
“http://192-168-70-133:9090/prometheus “URL中含有”prometheus“是为了**使用nginx把Prometheus从内网中代理出来**。
### 查看Prometheus进程
```
ss -naltp | grep prometheus
[root@host-192-168-70-133 ~]# ss -naltp | grep prometheus
LISTEN 0 128 [::]:9090 [::]:* users:(("prometheus",pid=18094,fd=8))
```
### 查看prometheus的web页面:
```
# 通过浏览器访问http://服务器IP:9090就可以访问到Prometheus的主界面
例如:http://192.168.70.133:9090/prometheus/targets
```
### prometheus.yml的配置文件:
```
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.70.133:9093
rule_files:
- "node_exporter_rules.yml"
- "windows_exporter_rules.yml"
- job_name: 'Linux'
static_configs:
- targets: ['192.168.70.133:9100']
- targets: ['192.168.70.134:9100']
- targets: ['192.168.70.135:9100']
- targets: ['192.168.70.136:9100']
- targets: ['192.168.70.137:9100']
- targets: ['192.168.70.138:9100']
- job_name: 'MySQL'
static_configs:
- targets: ['192.168.70.139:9104']
```