目录
一,部署prometheus (192.168.135.195)
1,环境准备工作
2,普罗米修斯的部署
2.1 上传prometheus到、opt目录中,解压
2.2 修改配置文件
2.3 配置系统启动文件,设置开机自启
2.4 开启prometheus,并访问网页验证
编辑
二,部署Exporters(192.168.135.90)
1,监控远程Linux主机192.168.135.90
1.1上传node_exporter到opt目录中,并且解压
1.2 启动node_exporter
1.3 修改prometheus服务器的配置文件
1.5 访问prometheus服务器
2,监控远程mysql
配置Prometheus获取监控数据
三、部署Grafana进行展示
1、下载安装Grafana(192.168.135.112)
2,配置数据源
3,导入模板
4、为数据源做数据展示
6、Grafana 图形显示 MySQL 监控数据
7、Grafana+onealert报警
7.2 测试CPU负载告警
四、总结
服务器类型 | IP地址 | 组件 |
prometheus服务器 | 192.168.135.195 | prometheus,node_exporter |
mysql服务器 | 192.168.135.91 | mysql——exporter和mariadb |
agent服务器 | 192.168.135.90 | node-exporter |
agent服务器 | 192.168.135.113 | node-exporter |
Grafana服务器 | 192.168.135.112 | Grafana |
prometheus下载地址:
https://prometheus.io/download/
[root@docker1195 ~]#cd /opt/
[root@docker1195 opt]#ls
apache containerd cpu.sh cxk docker-compose harbor nginx
[root@docker1195 opt]#rz -E
rz waiting to receive.
[root@docker1195 opt]#ls
apache cpu.sh docker-compose nginx
containerd cxk harbor prometheus-2.27.1.linux-amd64.tar.gz
[root@docker1195 opt]#tar zxvf prometheus-2.27.1.linux-amd64.tar.gz
[root@docker1195 opt]#ls
apache cxk nginx
containerd docker-compose prometheus-2.27.1.linux-amd64
cpu.sh harbor prometheus-2.27.1.linux-amd64.tar.gz
[root@docker1195 opt]#mv prometheus-2.27.1.linux-amd64 /usr/local/prometheus
[root@docker1195 opt]#cd /usr/local/prometheus/
[root@docker1195 prometheus]#ls
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
[root@docker1195 prometheus]#
cat /usr/local/prometheus/prometheus.yml | grep -v "^#"
global: #用于prometheus的全局配置,比如采集间隔,抓取超时时间等
scrape_interval: 15s #采集目标主机监控数据的时间间隔,默认为1m
evaluation_interval: 15s #触发告警生成alert的时间间隔,默认是1m
# scrape_timeout is set to the global default (10s).
scrape_timeout: 10s #数据采集超时时间,默认10s
alerting: #用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files: #用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs: #用于采集时序数据源的配置
# The job name is added as a label `job=` to any timeseries scraped from this config.
- job_name: "prometheus" #每个被监控实例的集合用job_name命名,支持静态配置(static_configs)和动态服务发现的机制(*_sd_configs)
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs: #静态目标配置,固定从某个target拉取数据
- targets: ["localhost:9090"]
[root@prometheus prometheus]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data/ \
--storage.tsdb.retention=15d \
--web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl start prometheus
systemctl enable prometheus
netstat -natp | grep :9090
浏览器访问:http://192.168.109.18:9090 ,访问到 Prometheus 的 Web UI 界面
点击页面的 Status -> Targets,如看到 Target 状态都为 UP,说明 Prometheus 能正常采集到数据
http://192.168.109.18:9090/metrics ,可以看到 Prometheus 采集到自己的指标数据
通过http:// 192.168.135.195/metrics 可以查看到监控的数据:
在远程linux主机(被监控端agent)上安装node_exporter组件
下载地址
https://prometheus.io/download/
cd /opt/
tar xf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin
./node_exporter
netstat -natp | grep :9100
浏览器访问:http://192.168.109.20:9100/metrics ,可以看到 Node Exporter 采集到的指标数据
vim /usr/local/prometheus/prometheus.yml
- job_name: 'aaaaa90'
static_configs:
- targets: ['192.168.135.90:9100']
改完配置文件后,重启服务
回到 web 管理界面→点 Status→点 Targets→可以看到多了一台监控目标
注:也可以在本机安装 node_exporter,使用上面的方式监控本机。
在 192.168.135.91上安装 mysqld_exporter组件
mysqld_exporter 是 Prometheus 的 MySQL 指标导出插件。Github 地址:GitHub - prometheus/mysqld_exporter: Exporter for MySQL server metrics。这里来演示它的部署。
tar -xvf mysqld_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local
mv mysqld_exporter-0.14.0.linux-amd64/ mysqld_exporter
在mysql中创建监控用户,并赋权
create user 'exporter'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'exporter'@'localhost';
为mysqld_exporter 创建个配置文件
vim /usr/local/mysqld_exporter/mysqld_exporter.cnf
[client]
user=exporter
password=123456
启动组件
nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/mysqld_exporter.cnf &
浏览器访问一下默认端口为9104
这样就启动成功了
在Prometheus的配置文件中添加node_exporter 和 mysqld_exporter 的配置
然后重启一下
看到新增的被监控节点,就是说明配置成功
会主界面搜索 MySQL 相关参数,比如:mysql_global_variables_auto_increment_increment
Grafana 是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。
下载地址
https://grafana.com/grafana/download/
#使用yum解决依赖关系 我这边直接上传软件包到opt
yum install -y grafana-7.4.0-1.x86_64.rpm
或
rpm -ivh /opt/grafana-7.3.6-1.x86_64.rpm
systemctl start grafana-server
systemctl enable grafana-server
netstat -natp | grep :3000
浏览器访问:http://192.168.109.19:3000 ,默认账号和密码为 admin/admin
通过浏览器访问 http:// grafana 服务器 IP:3000 就到了登录界面,使用默认的 admin 用户,admin 密码就可以登陆了。
下面我们把 Prometheus 服务器收集的数据做为一个数据源添加到 grafana,让 grafana 可以得到 Prometheus 的数据。
点击prometheus_data,选择Dashboards
自定义名称,点击保存
最后在dashboard可以查看到
注:有多条数据的时候,可以在查询的键值后面加个大括号,括号里的条件表示只匹配当前的监控项
浏览器访问:https://grafana.com/grafana/dashboards ,在页面中搜索 node exporter ,选择适合的面板,点击 Copy ID 或者 Download JSON
在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板
在 grafana 上修改配置文件,并下载安装 mysql 监控的 dashboard(包含相关 json 文件,这些 json 文件可以看作是开发人员开发的一个监控模板)。
在grafana图形化界面导入相关的json文件
用grafana服务器上的firefox浏览器打开,方便上传
点 import 导入后,报 prometheus 数据源找不到,因为这些 json 文件里默认要找的就是叫 Prometheus 的数据源,但我们前面建立的数据源却是叫 prometheus_data。
那么请自行把原来的 prometheus_data 源改名为 Prometheus 即可(注意:第一个字母 P 是大写)。然后再回去刷新一下,就有数据了。
Prometheus 报警需要使用 alertmanager 这个组件,而且报警规则需要手动编写(对运维来说不友好)。所以我这里选用 grafana+onealert 报警。注意:实现报警前把所有机器时间同步再检查一遍。
登陆http://www.onealert.com/→注册帐户→登入后台管理
现在可以去设置一个报警来测试了(这里以我们前面加的 cpu 负载监控来做测试)
保存后就可以测试了,如果 agent1上的 cpu 负载还没有到 0.3,你可以试试 0.1,或者运行一些程序把 agent1负载调大。
最终的邮件报警效果:
报警不成功的可能原因