Prometheus监控

Prometheus

##### Prometheus架构图

<img src="architecture.png" style="zoom:80%;" />

> prometheus作为一款监控软件,也是一个时序数据库,收集指标并存储为时间序列数据,即的时间戳(指标信息与记录时间)与可选键值对(标签)一起存储。主要用在容器监控方面,也可以用于常规的主机监控。
>
> 模块化安装:service_discovery(自动发现),alertmanager(监控),pull(被动监控)与push(主动监控),需要哪个安装哪个占用资源少

#### 一、部署Prometheus服务器

> ##### 环境配置
>
> ```shell
> # 环境配置
> Prometheus:
>     eth0 -> 192.168.88.5
> web1:
>     eth0 -> 192.168.88.100
> ```
>
> ##### 配置时间服务
>
> ​    与容器有关的服务都需要配置时间服务,与yum、ssh一样默认开启
>
> ##### 配置模块
>
> ​    `global`块控制 Prometheus 服务器的全局配置
>
> ​    `rule_files`块定义警告规则的位置
>
> ​    `scrape_configs`控制 Prometheus 监控的资源

##### 控制端部署

```shell
# 拷贝Prometheus相关软件包到服务器,解压即部署
tar xf prometheus-2.37.5.linux-amd64.tar.gz
mv prometheus-2.37.5.linux-amd64 /usr/local/prometheus

# 创建服务文件:/usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
After=network.target

[Service]
ExecStart=/usr/local/prometheus/prometheus \
  --config.file=/usr/local/prometheus/prometheus.yml \
  --storage.tsdb.path=/usr/local/prometheus/data/

[Install]
WantedBy=multi-user.target

# 启动服务
systemctl daemon-reload
systemctl enable prometheus.service --now
ss -tlnp | grep :9090

# 访问页面
http://192.168.88.5:9090/
```

##### 被控端部署

```shell
# 拷贝node_exporter到web1,解压即部署
tar xf node_exporter-1.5.0.linux-amd64.tar.gz
mv node_exporter-1.5.0.linux-amd64 /usr/local/node_exporter

# 创建服务文件:/usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

# 启动服务
systemctl daemon-reload
systemctl enable node_exporter.service --now
ss -tlnp | grep :9100
```

> ##### 验证
>
> ​    在Prometheus服务器上添加监控节点
>
> ```shell
> # 修改配置文件追加内容,注意缩进:/usr/local/prometheus/prometheus.yml 
> ...
>   - job_name: "web1"
>     static_configs:
>       - targets: ["192.168.88.100:9100"]
>       
> # 重启服务
> systemctl restart prometheus.service
> # 访问页面
> http://192.168.88.5:9090/
> ```

##### Grafana替换监控web端UI界面

>Grafana是一款开源的、跨平台的、基于web的度量分析和可视化工具,可以使用客户端图表或面板插件来展示热图、折线图和图表等多样化的展示方式,其数据源可以来自于prometheus或者其他监控平台的各种源

> ###### 初始用户名和密码都是admin,第一次登陆时要求改密码

```shell
## 部署Grafana
# 装包、启服务
yum install -y prometheus_soft/grafana-enterprise-9.3.2-1.x86_64.rpm
systemctl enable grafana-server.service --now

# 检验端口
ss -tlnp | grep 3000
# 访问页面初始化
http://192.168.88.5:3000
```

> 配置json改变UI界面

#### 二、监控MySQL数据库

> 被控端安装mysql并重启服务
>
> ```shell
> # 进入mysql创建用户
> mysql> create user dbuser1@localhost identified by '123456';
> # 给用户添加权限
> mysql> grant all privileges on *.* to dbuser1@localhost;
> ```

##### 配置mysql-exporter

```shell
# 安装配置
tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.14.0.linux-amd64 /usr/local/mysqld_exporter

# 创建连接mysql服务的配置文件:/usr/local/mysqld_exporter/.my.cnf
[client]
host=127.0.0.1        #声明本机
port=3306
user=dbuser1
password=123456

# 创建服务文件:/usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target

[Service]
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
--config.my-cnf=/usr/local/mysqld_exporter/.my.cnf

[Install]
WantedBy=multi-user.target

# 重启服务
systemctl daemon-reload
systemctl enable mysqld_exporter.service --now
# 检验端口
ss -tlnp | grep 9104
```

##### 配置prometheus监控mysql

```shell
# 修改配置文件并启动服务
# 在配置文件中追加内容:/usr/local/prometheus/prometheus.yml
...
  - job_name: "mysql"
    static_configs:
      - targets: ["192.168.88.100:9104"]
      
# 重启服务
systemctl restart prometheus.service

# 在网页端验证连接
http://192.168.88.5:3000
# 并在Crafana导入json更改mysql监控UI
http://192.168.88.5:9090
```

#### 三、自动发现机制

> Prometheus自动对节点进行监控,等同于zabbix自动发现、自动注册
>
> Prometheus有多种自动发现发现,比如`file_sd_configs`基于文件自动发现、基于K8S自动发现、基于openstack自动发现、基于consul自动发现等。

##### 基于文件自动发现

```shell
## 修改Prometheus配置文件前做个备份

# 删除静态配置,添加自动发现配置:/usr/local/prometheus/prometheus.yml
# 将scrape_configs及以下内容修改为:
scrape_configs:
  - job_name: "prometheus"
    file_sd_configs:
      - refresh_interval: 120s
        files:
          - /usr/local/prometheus/sd_config/*.yml
          - /etc/passwd
          - /etc/hosts

# 重启服务
systemctl restart prometheus.service

# 创建自动发现规则文件
mkdir /usr/local/prometheus/sd_config
vim /usr/local/prometheus/sd_config/discovery.yml
- targets:
    - 192.168.88.5:9090
    - 192.168.88.100:9100
    - 192.168.88.100:9104
```

##### 配置web2自动发现Prometheus监控

 ```shell
# 将web1的.service、node-exporter拷贝到web2
# 启动web2被控端的服务
systemctl daemon-reload
systemctl enable node_exporter.service --now

# 修改控制端自动发现文件:/usr/local/prometheus/sd_config/discovery.yml 
- targets:
    - 192.168.88.5:9090
    - 192.168.88.100:9100
    - 192.168.88.100:9104
    - 192.168.88.200:9100
 ```

#### 四、Alertmanager

> Prometheus服务器中的告警规则向Alertmanager发送告警。由Alertmanager管理这些告警包括静默、抑制、分组以及通过电子邮件、即时消息系统和聊天平台等方法发出通知。
>

##### 在控制端部署Alertmanager

```shell
# 解压即部署,移动到/usr/local下
tar xf alertmanager-0.25.0.linux-amd64.tar.gz
mv alertmanager-0.25.0.linux-amd64 /usr/local/alertmanager

# 编写服务文件并启动:/usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager System

[Service]
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml

[Install]
WantedBy=multi-user.target

# 启动服务
systemctl daemon-reload
systemctl enable alertmanager.service --now
# 检验端口
ss -tlnp | grep 9093

# 访问网页端配置页面
http://192.168.88.5:9093
```

##### Prometheus与Alertmanager对接

```shell
# 修改配置文件:/usr/local/prometheus/prometheus.yml
...
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - localhost:9093
# 重启服务
systemctl restart prometheus.service
```

##### 配置Alertmanager通过邮件发送告警

```shell
# 修改配置文件,修改前做备份:/usr/local/alertmanager/alertmanager.yml
global:
  smtp_from: "test@gmail.cn"        # 发件人地址
  smtp_smarthost: "localhost:25"    # 邮件服务器地址
  smtp_require_tls: false            # 是否使用TLS安全连接
route:
...
  receiver: 'default-receiver'        # 接收器
receivers:
  - name: 'default-receiver'        # 配置接收器为邮件
    email_configs:
      - to: 'root@localhost.localdomain'

# 定义告警规则

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值