## 一、監控組件
### 監控需要的組件
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']
```