学习目标
- 能够安装prometheus服务器
- 能够通过安装node_exporter监控远程linux
- 能够通过安装mysqld_exporter监控远程mysql数据库
- 能够安装grafana
- 能够在grafana添加prometheus数据源
- 能够在grafana添加监控cpu负载的图形
- 能够在grafana图形显示mysql监控数据
- 能够通过grafana+onealert实现报警
一、普罗米修斯概述
Prometheus(由go语言开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为k8s的流行,带动了promethues的发展
https://www.prometheus.io/docs/introduction/overview/
二、时间序列数据
1.什么是时间序列数据
时间序列指在连续等间隔的时间点上获取的数据值,存储时间序列数据的数据库称为时间序列数据库Time Series Database (TSDB),时间序列数据库特点是写远大于读,并且写入平稳,基本不会涉及更新操作。
2.基于时间序列数据特点
- 性能好
- 存储成本低
3.Prometheus的主要特征
- 多维度数据模型
- 灵活的查询语言
- 不依赖分布式存储,单个服务器节点是自主的
- 以http方式,通过pull模型拉取时间序列数据
- 也可以通过中间网关支持push模型
- 通过服务发现或者静态配置,来发现目标服务对象
- 支持多种多样的图表和界面展示
4.普罗米修斯原理架构图
三、实验环境准备
机器 | 角色 | 系统 | 端口 |
---|---|---|---|
192.168.75.144 | Prometheus 服务端 | centos7 | 9090 |
192.168.75.149 | grafana客户端 | centos7 | 3000 |
192.168.75.145 | node_exporter 客户端 | centos7 | 9100 |
修改uuid
因为是克隆的机器,所以三台的uuid都一样,需要修改一下uuid
vi /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
时间同步
yum install -y ntpdate
ntpdate cn.ntp.org.cn
四、安装普罗米修斯系统
1.下载软件
https://www.prometheus.io/download/
2.安装普罗米修斯软件
上传至服务器并解压
tar -xvf prometheus-2.37.9.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-2.37.9.linux-amd64/ /usr/local/prometheus
使用默认配置启动
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
检查端口
[root@192 ~]# lsof -i:9090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
prometheu 41813 root 3u IPv6 64430 0t0 TCP localhost:36296->localhost:websm (ESTABLISHED)
prometheu 41813 root 7u IPv6 64422 0t0 TCP *:websm (LISTEN)
prometheu 41813 root 11u IPv6 64431 0t0 TCP localhost:websm->localhost:36296 (ESTABLISHED)
开放9090端口
[root@192 ~]# firewall-cmd --zone=public --add-port=9090/tcp --permanent
success
[root@192 ~]# firewall-cmd --reload
success
3.prometheus界面
通过浏览器访问:http://ip:9090就可以访问prometheus主界面
默认只监控了本机一台点status>>点targets可以看到只监控了本机
在web界面可以通过关键字查询监控项
4.监控远程linux主机
在远程linux主机(被监控端)上安装node_exporter组件
下载地址:https://prometheus.io/download/
上传并解压
tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/node_exporter-1.6.1.linux-amd64/ /usr/local/node_exporter
启动
nohup ./node_exporter &
查看端口
[root@192 node_exporter]# ss -naltp|grep 9100
LISTEN 0 128 [::]:9100 [::]:* users:(("node_exporter",pid=41870,fd=3))
开放9100端口
firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --reload
在浏览器中查看监控端收集的监控信息
5.在prometheus中拉取监控端机器信息
修改/usr/local/prometheus/prometheus.yml
在文件的最下面加这几行信息,格式需保持一致
- job_name: "ansible01"
static_configs:
- targets: ["192.168.75.150:9100"]
改完进行重启
pkill prometheus
ss -naltp|grep 9090
nohup ./prometheus --config.file=prometheus.yml &
通过浏览器访问
7.远程监控mysql
在远程linux主机(被监控端)上安装mysqld_exporter组件
下载地址:https://prometheus.io/download/
上传并解压
tar -xvf mysqld_exporter-0.15.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/mysqld_exporter-0.15.0.linux-amd64/ /usr/local/mysqld_exporter
登录mysql创建一个监控用户
create user 'mysqld_exporter'@'localhost' identified by 'xxxxx';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'mysqld_exporter'@'localhost';
flush privileges;
在mysqld_exporter组件中配置mysql信息
[client]
user=mysqld_exporter
password=xxxxx
启动
nohup ./mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/my.cnf &
查看端口
[root@192 mysqld_exporter]# ss -naltp|grep 9104
LISTEN 0 128 :::9104 :::* users:(("mysqld_exporter",pid=1328,fd=3))
开放9104端口
firewall-cmd --zone=public --add-port=9104/tcp --permanent
firewall-cmd --reload
在浏览器中查看监控端收集的监控信息
http://ip:9104
8.回到prometheus服务器中添加mysql组件配置
修改/usr/local/prometheus/prometheus.yml
在文件的最下面加这几行信息,格式需保持一致
- job_name: "mysql01"
static_configs:
- targets: ["192.168.75.139:9104"]
改完进行重启
pkill prometheus
ss -naltp|grep 9090
nohup ./prometheus --config.file=prometheus.yml &
通过浏览器访问
五、Grafana可视化图形工具
1.什么是Grafana
- Grafana是一款近几年比较流行的开源数据绘图工具平台。
- Grafana原生支持包括但不限于InfluxDB,MySQL,OpenTSDB,PostgreSQL和Prometheus等多种数据源作为输入源数据。
官方地址:https://grafana.com/
下载地址:https://grafana.com/grafana/download
2.安装软件
上传并安装
yum install -y grafana-10.0.1-1.x86_64.rpm
设置开机自启
systemctl start grafana-server
systemctl enable grafana-server
检查端口3000
[root@192 ~]# ss -naltp|grep 3000
LISTEN 0 128 [::]:3000 [::]:* users:(("grafana",pid=50386,fd=9))
开放3000端口
firewall-cmd --zone=public --add-port=3000/tcp --permanent && firewall-cmd --reload
浏览器打开
初始账号密码都是admin
3.添加普罗米修斯数据源
添加数据源
选择prometheus
设置ip端口等
设置完成保存
查看添加的数据源
4.为添加好的数据源做图形显示
选择图表类型
导入模板
选择8919这个id
5.grafana图形显示mysql监控数据
导入json
6.grafana+onealert报警
prometheus告警需要使用alertmanager这个组件,而且告警规则需要手动编写
这里使用grafana+onealert告警
在grafana中配置webhook url
7.配置邮件发送
修改/etc/grafana/grafana.ini
[smtp]
enabled = true
host = smtp.163.com:465
user = xxxxx@163.com
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = DIXXXXXXXXXXXXON
;cert_file =
;key_file =
skip_verify = true
from_address = xxxxxxxxx@163.com
from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')
startTLS_policy = NoStartTLS
需要去对应的邮箱客户端开通smtp服务,并且拿到授权密码
修改完重启
六、创建告警顺序
转载优秀博主:https://blog.51cto.com/u_11529070/9174855