二进制安装promethues+节点监控+网站监控+邮件报警+监控mysql


官方下载二进制

https://prometheus.io/download/

1,prometheus-2.30.3.linux-amd64.tar.gz

root@pro182:/apps# ln -sv /apps/prometheus-2.30.3.linux-amd64 /apps/prometheus

root@pro182:/apps/prometheus# cat /lib/systemd/system/prometheus.service
[Unit]
Description=Monitoring system and time series database
Documentation=https://prometheus.io/docs/introduction/overview/

[Service]
Restart=always
WorkingDirectory=/apps/prometheus
ExecStart=/apps/prometheus/prometheus
--config.file=/apps/prometheus/prometheus.yml

[Install]
WantedBy=multi-user.target

systemctl status prometheus.service

192.168.192.182:9090/metrics

root@pro182:/apps/prometheus# du -sh data/ #数据目录

process_max_fds

2,node_exporter-1.2.2.linux-amd64.tar.gz

root@master001:/apps# ln -sv node_exporter-1.2.2.linux-amd64 node_exporter

root@master001:/apps/node_exporter# cat /lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target

[Service]
ExecStart=/apps/node_exporter/node_exporter --web.listen-address=":9100"

[Install]
WantedBy=multi-user.target

root@slave002:/apps/node_exporter# systemctl start node_exporter.service
root@slave002:/apps/node_exporter# systemctl enable node_exporter.service

192.168.192.153:9100/metrics

root@pro182:/apps/prometheus# ./promtool check config prometheus.yml 
Checking prometheus.yml
  SUCCESS: 0 rule files found
root@pro182:/apps/prometheus# cat prometheus.yml
  - job_name: "node_exporter"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.192.151:9100","192.168.192.152:9100","192.168.192.153:9100"]

 3,blackbox_exporter监控网站

root@ceph-teamplate:/apps/blackbox_exporter# cat  /lib/systemd/system/blackbox_exporter.service
[Unit]
Description=blackbox_exporter
After=network.target

[Service]
Type=simple
user=root
group=root
ExecStart=/apps/blackbox_exporter/blackbox_exporter \
    --config.file=/apps/blackbox_exporter/blackbox.yml \
    --web.listen-address=:9115
Restart=on-failure

[Install]
WantedBy=multi-user.target
root@189:/apps/blackbox_exporter# systemctl daemon-reload
root@189:/apps/blackbox_exporter# systemctl restart blackbox_exporter.service
root@pro182:/apps/prometheus# cat  prometheus.yml
#网站监控
  - job_name: 'http_status'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets: ['http://www.baidu.com', 'http://www.xiaomi.com']
        labels:
          instance: http_status
          group: web
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: url
      - target_label: __address__
        replacement: 192.168.192.189:9115
    relabel_configs:
      - source_labels: [__address__]    #relabel通过__address__(当前目标地址)写入__param_target标签来创建一个label
        target_label: __param_target    #监控目标与www.baidu.com,作为__address__的value  
      - source_labels: [__param_target] #监控目标 
        target_label: url               #将监控目标与url创建一个label

 

#端口监控
  - job_name: 'port_status'
    metrics_path: /probe
    params:
      module: [tcp_connect]
    static_configs:
      - targets: ['192.168.192.151:6443', '192.168.192.152:6443']
        labels:
          instance: port_status
          group: port
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: url
      - target_label: __address__
        replacement: 192.168.192.189:9115

4,grafana展示

https://grafana.com/grafana/download/7.5.11?edition=oss

root@pro182:~# sudo dpkg -i grafana_7.5.11_amd64.deb

root@pro182:~# systemctl status grafana-server.service

root@pro182:~# lsof -i:3000

root@pro182:~# vi /etc/grafana/grafana.ini

 

 8919

 

下载到本地

复制json文件内容导入

 5,PromQl+展示一个指标

 

 node_filesystem_free_bytes{instance="192.168.192.152:9100",device="/dev/sda2"}

node_load15

 选中一台点击展示想看那一台的负载

6,Prometheus+alertmanage配置邮件报警

官方下载编译安装

 https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz

root@ceph-teamplate:/apps# cat /lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
After=network.target

[Service]
ExecStart=/apps/alertmanager/alertmanager
WorkingDirectory=/apps/alertmanager
Restart=on-failure

[Install]
WantedBy=multi-user.target

进入解压后的alertmanager文件夹,修改alertmanager.yml文件,配置报警信息,alertmanager.yml 内容如下:

root@blackbox_exporter-189:/apps/alertmanager# cat alertmanager.yml 
global:
  resolve_timeout: 5m
  smtp_from: '8147x@qq.com'   #用于发送邮件的邮箱
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '8147x@qq.com'   #邮箱地址
  smtp_auth_password: 'xxxx'    #邮箱授权密码
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:   #设置报警分发策略
  group_by: ['alertname']  #分组标签
  group_wait: 8s    #告警等待时间,告警产生后等待8s,如果有相同告警一起发出
  group_interval: 3s  #两组告警间隔时间
  repeat_interval: 2m  #重复告警的间隔时间,减少相同邮件发送频率,此处测试设置为2分钟
  receiver: 'email'    #默认接收者  #routes: #指定哪些组可以接受消息  #- receiver: mail
receivers:
- name: 'email'
  email_configs:
  - to: '8147x@qq.com'  接受报警邮箱地址
    send_resolved: true
#inhibit_rules:
#  - source_match:
#      severity: 'critical'
#    target_match:
#      severity: 'warning'
#    equal: ['alertname', 'dev', 'instance']

检查alertmanager.yml 配置是否正确

root@blackbox_exporter-189:/apps/alertmanager# ./amtool check-config alertmanager.yml
Checking 'alertmanager.yml'  SUCCESS
Found:
 - global config
 - route
 - 0 inhibit rules
 - 1 receivers
 - 0 templates

浏览器访问: http://192.168.192.182:9090/rules:9093  (IP:9093)

 进入Prometheus的安装目录下修改Prometheus配置,取消alertmanager有关注释

root@pro182:/apps/prometheus# cat prometheus.yml 
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - 192.168.192.189:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "/apps/prometheus/*.yaml"  #配置告警规则
  # - "first_rules.yml"
  # - "second_rules.yml"

编写告警规则文件rule.yml

(此处用于测试,设置为当内存占用高于1%时,就会告警)

root@pro182:/apps/prometheus# cat neicun.yaml 
groups:
- name: mem-rule
  rules:
  - alert: "内存报警"
    expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 1
    for: 5s
    labels:
      severity: warning
    annotations:
      summary: "服务名:{{$labels.alertname}} 内存报警"
      description: "{{ $labels.alertname }} 内存资源利用率大于 1%"
      value: "{{ $value }}"

 浏览器访问 http://192.168.192.189:9093/#/alerts  ,也能看到告警信息

 7,监控mysql8.0

mysql单库搭建

https://downloads.mysql.com/archives/community/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

https://downloads.mysql.com/archives/shell/mysql-shell-8.0.20-linux-glibc2.12-x86-64bit.tar.gz

MySQL的安装配置

上传并解压软件

cd /usr/local
[root@mysql-132]# tar xf mysql-8.0.20-linux-glibc2.12-x86_64.ta

软连接

ln -sv mysql-8.0.20-linux-glibc2.12-x86_64 mysql

[root@db01 local]# mv mysql-8.0.20-linux-glibc2.12-x86_64 mysq

环境变量

[root@db01 bin]# vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH

生效配置

source /etc/profile

[root@db01 bin]# mysql -V
mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)

创建用户

[root@db01 bin]# useradd mysql

创建所需目录
[root@db01 ~]# mkdir -p /data/3306/data
[root@db01 ~]# chown -R mysql.mysql /data

数据初始化
[root@db01 ~]# mv /etc/my.cnf /tmp
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

配置文件

[root@mysql-191 ~]# vim /etc/my.cnf

[mysql]
socket=/tmp/mysql.sock
[mysqld]
server_id=100
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock

准备启动脚本 

[root@db01 ~]# cd /usr/local/mysql/support-files/
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
[root@db01 support-files]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/3306/data/db01.err'.

. SUCCESS!

修改root密码

mysql> alter user root@'localhost' identified with mysql_native_password by '123';

使用mysqld_exporter监控

mysqld_exporter-0.13.0.linux-amd64.tar.gz
192.168.192.182 prometheus
192.168.192.132 mysql mysqld_exporter
在132 MySQL里配置MySQL监控账号
CREATE USER 'mysql_monitor'@'localhost' identified by 'mysql_monitor';
mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysql_monitor'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT SELECT ON performance_schema.* TO 'mysql_monitor'@'localhost';
Query OK, 0 rows affected (0.00 sec)
[root@mysql-132 mysqld_exporter]# cat my.cnf 
[client]
port=3306
user=mysql_monitor
password=mysql_monitor
[root@mysql-132 mysqld_exporter]# nohup   ./mysqld_exporter --config.my-cnf=my.cnf  &

 182节点

#mysql监控
  - job_name: 'mysql'
    static_configs:
    - targets: ['192.168.192.132:9104']
      labels:
          instance: '192.168.192.132'

Grafana id= 7362

https://grafana.com/grafana/dashboards/7362

下载mysql模板并导入

 mysql监控页面