一、简介
Prometheus 是一款强大的监控软件,一般会与Grafana和Alertmanager一起配合使用,而且多用于k8s集群。简介的话网上很多,官网 更是详细,这里就不班门弄斧了。k8s集群环境下的安装网上很多,但是k8s集群搭建时间成本较高,所以这里记录下Centos7环境下的安装使用,以供后来者参考。下面直入正题。
二、环境
- VMware
- CentOS7-64
- MySQL
- 其他资源安装包(下面安装步骤中的资源如果无法从官网下载,都可以从本人网盘中获取):
链接:https://pan.baidu.com/s/1MARRrONm9c3Ib0Llc0uyeQ
提取码:rzd3
三、Prometheus安装
-
go语言环境
①Linux环境安装包:go1.8.3.linux-amd64.tar.gz (86MB)
②下载后上传至服务器,执行解压命令[root@localhost soft]# tar -xzf go1.8.3.linux-amd64.tar.gz -C /usr/local/
③配置环境变量
[root@localhost soft]# vim /etc/profile
文件尾部添加:
export PATH=$PATH:/usr/local/go/bin
保存后使配置文件生效:
[root@localhost soft]# source /etc/profile
④验证是否安装成功
[root@localhost soft]# go version
执行结果如下:
-
Prometheus下载安装
①去官网下载安装包:prometheus-2.41.0.linux-amd64.tar.gz
②上传并解压到 /usr/local[root@localhost soft]# tar -vxf prometheus-2.41.0.linux-amd64.tar.gz -C /usr/local/
③修改配置文件
[root@localhost soft]# vim /usr/local/prometheus-2.41.0.linux-amd64/prometheus.yml
在配置文件最底部配置监控内容(如果不配置,默认会有一个监控,监控的自己),示例:
- job_name: 'centOS-mysql' static_configs: - targets: ['192.168.121.128:9104']
注意:targets后面的地址是exporters 的IP和端口号,exporter在后面会有说明
④启动:[root@localhost soft]# cd /usr/local/prometheus-2.41.0.linux-amd64/ [root@localhost prometheus-2.41.0.linux-amd64]# ./prometheus
启动日志如下:
⑤Prometheus启动成功后有默认访问端口9090,可以访问页面,访问如下:
四、 Exporter 安装
- 简介:Exporter进行实际的数据采集,Prometheus实际连接的是Exporter服务,如上面centOS-mysql监控之所以状态为“DOWN”,就是因为没有装Exporter。
- Exporters有多种,可以从官网选用合适自己的,官网地址:https://prometheus.io/docs/instrumenting/exporters/
本次调试监控了服务器本身及MySQL数据库,所以对这两种进行简单说明:
监控服务器需要下载安装:node_exporter-1.5.0.linux-amd64.tar.gz
监控MySQL需要下载安装:mysqld_exporter-0.14.0.linux-amd64.tar.gz - 下载成功后,上传至服务器,并进行解压操作:
[root@localhost soft]# tar -vxf mysqld_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local/
- 在mysqld-exporter安装路径下,创建.my.cnf文件
配置mysql的账户及密码[root@localhost soft]# vim /usr/local/mysqld_exporter-0.14.0.linux-amd64/.my.cnf
建议:监控账户,单独新建一个,并限制权限,例如[client] user=XXX password=XXX
CREATE USER 'mysql_monitor'@'localhost' IDENTIFIED BY 'Mysql@123' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_monitor'@'localhost'; FLUSH PRIVILEGES; EXIT
- 进入mysqld_exporter的安装目录,启动服务
[root@localhost soft]# ./mysqld_exporter --config.my-cnf=./.my.cnf
- 启动成功后,日志乳腺,默认端口9104
- 刷新Prometheus,发现监控服务上线(安装Prometheus时配置过了)
五、Grafana安装使用
- 下载安装包并进行安装,官方下载地址:https://grafana.com/grafana/download,本次使用的为:grafana-5.2.3-1.x86_64.rpm
[root@localhost soft]# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.3-1.x86_64.rpm [root@localhost soft]# sudo yum localinstall grafana-5.2.3-1.x86_64.rpm
- 将Grafana加入服务列表,进行启动
[root@localhost soft]# sudo /sbin/chkconfig --add grafana-server
[root@localhost soft]# sudo service grafana-server start
- 访问:Grafana默认端口3000,默认账户密码:admin/admin,登录后如下:
- 添加数据源:
添加数据源配置如下:
- 展示:
选中Prometheus 2.0 Stats,监控界面如下:
上面的界面不容易理解,所以需要根据需求,在Grafana中导入模板,本文导入了MySQL的展示模板,模板下载地址:https://grafana.com/api/dashboards/8564/revisions/10/download,下载下来是一个json文件:mysql-overview_rev10.json
如下操作导入模板:
导入后,展示界面如下:
六、Alertmanager 的安装使用
-
下载安装包:alertmanager-0.25.0.linux-amd64.tar.gz
下载地址:https://prometheus.io/download/ -
上传至服务器,并进行解压安装
[root@localhost soft]# tar -vxf alertmanager-0.25.0.linux-amd64.tar.gz -C /usr/local/
-
修改配置文件
[root@localhost ~]# vim /usr/local/alertmanager-0.25.0.linux-amd64/alertmanager.yml global: resolve_timeout: 5m smtp_smarthost: 'smtp.163.com:465' smtp_from: '18XXXXXXXX@163.com' smtp_auth_password: 'EBEXXXXXX' smtp_require_tls: false smtp_auth_username: '18XXXXXXXX@163.com' smtp_hello: '163.com' route: group_by: ['alertname'] group_wait: 10s group_interval: 1m repeat_interval: 10m receiver: 'AJ' receivers: - name: 'AJ' email_configs: - to: '79XXXXXXX@163.com' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
-
启动服务
[root@localhost soft]# cd /usr/local/alertmanager-0.25.0.linux-amd64/ [root@localhost soft]# ./alertmanager --config.file=alertmanager.yml
启动日志:
-
修改prometheus配置文件
[root@localhost soft]# vim /usr/local/Prometheus/prometheus.yml # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - 192.168.121.128:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "/home/soft/rules/mysql_rules.yml" # - "first_rules.yml" # - "second_rules.yml"
-
配置告警规则,这里只进行简单配置,测试使用,修改规则后需要重启prometheus生效!
[root@localhost rules]# vim /home/soft/rules/mysql_rules.yml groups: - name: 通用实例监控 rules: - alert: 实例DOWN expr: mysql_up == 0 for: 1m # 如果1m之内,实例都是up==0状态,才会告警 labels: severity: error annotations: description: '{{ $labels.instance }} of job {{ $labels.job }} 挂掉超过1分钟.' summary: '实例:{{ $labels.instance }}已死,请处理...'
测试时,可以把指标灵活调整,方便触发报警,例如 mysql_up == 1(实例数),触发报警后,邮件内容如下:
七、参考文献
- https://prometheus.io/docs/introduction/overview/
- https://blog.csdn.net/csolo/article/details/82460539?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-82460539-blog-124677519.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-82460539-blog-124677519.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=15
- http://t.zoukankan.com/z-qinfeng-p-12748240.html
- https://blog.csdn.net/qq_34556414/article/details/121777449
- https://blog.csdn.net/guiyiba/article/details/122634820