场景是,企业服务器群规模突破五十台之后,仅仅依靠SSH登上去敲命令查日志,已经承受不住凌晨三点出现的故障。
我们所需的,是一整套可视化监控体系,能一眼瞧出哪一台机器的CPU处于夯死状态,能一眼分辨出哪一个进程存在内存泄漏现象。
准备:监控体系选型原则
进行生产环境选型的时候,我毅然决然地坚守着三个要素,分别是,数据采集的时候绝对没有遗漏,可视化呈现时不会出现卡顿现象,告警环节不会出现炸锅的状况。
普罗米修斯与格拉法纳的组合,是当下社区之中最为活跃的,生态最为完整的开源方案,该方案支持从物理机,到虚拟机,再到容器编排工具K8s的全场景。
被Node_Exporter采集的基础指标,由Prometheus负责进行存储以及告警规则计算,而Grafana负责最后的呈现。
分步实操:部署标准LNMP环境用于监控展示端
以CentOS 7.9+宝塔面板9.2为例
实行宝塔面板予以安装,将Grafana反向代理以及SSL开展配置简化处理。
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
目的:此后借由宝塔的Nginx迅速为Grafana配备域名、SSL证书。
要留意,安装完毕后,马上于面板安全组那儿更改默认端口,然后关闭面板HTTP访问,仅仅准许HTTPS。
2. 部署Prometheus主服务
建造用于监控的专门目录,去下载最新版本的Prometheus(当下是v2.53.x)。
useradd --no-create-home --shell /bin/false prometheus
mkdir /etc/prometheus /var/lib/prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz
tar xvf prometheus-.tar.gz
cp prometheus-2.53.0.linux-amd64/{prometheus,promtool} /usr/local/bin/
cp -r prometheus-2.53.0.linux-amd64/{consoles,console_libraries} /etc/prometheus/
给与/etc/prometheus/prometheus.yml进行配置,将需要监控的服务器节点给添加进去:
global:
scrape_interval: 15s
scrape_configs:
job_name: 'linux_servers'
static_configs:
targets:
'192.168.1.10:9100' # 后端API服务器
'192.168.1.11:9100' # 数据库服务器
'192.168.1.12:9100' # 缓存服务器
创建systemd服务启动Prometheus:
[Unit]
Description=Prometheus
After=network.target
[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/
[Install]
WantedBy=multi-user.target
3. 被控端部署Node_Exporter
在所有被监控服务器执行:
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.0/node_exporter-1.8.0.linux-amd64.tar.gz
tar xvf node_exporter-.tar.gz
cp node_exporter-1.8.0.linux-amd64/node_exporter /usr/local/bin/
useradd --no-create-home --shell /bin/false node_exporter
创建systemd服务启动,监听默认9100端口。

留意了,防火墙要放行这个端口,只应允Prometheus服务器IP去访问。
4. 安装Grafana并集成数据源
于Prometheus同一台服务器,或者独立的服务器之上,去部署Grafana,其采用官方YUM源。
wget -q -O gpg.key https://rpm.grafana.com/gpg.key
rpm --import gpg.key
echo '[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1' > /etc/yum.repos.d/grafana.repo
yum install -y grafana
systemctl enable grafana-server --now
第一次进行访问,所访问的链接为http://服务器IP:3000,其默认的账号是admin,默认的密码是admin。
进入之后添加数据源,从中选择Prometheus,然后将URL填写为http://localhost:9090(或者Prometheus实际的IP地址了)。
配置:生产级可视化看板与告警
导入仪表盘,于Grafana官网这个地方(grafana.com/grafana/dashboards),去搜索名为Node Exporter Full的内容(ID:1860)。
在进行导入这个操作之后,就能够看到,以CPU、内存、磁盘IO、网络流量等作为内容的,数量达到几十个的指标图表。
对于“设置HTTPS与域名”,要进行如下操作,在宝塔面板添加网站,将域名填写为“monitor.yourcompany.com”,接着申请Let‘s Encrypt SSL证书,随后设置反向代理到“http://127.0.0.1:3000”。
启动安全加固措施,于Grafana配置文件所在路径,也就是那个名为“/etc/grafana/grafana.ini”的文件里,开启登录功能,将匿名访问予以关闭,把“domain”以及“root_url”设定为采用HTTPS协议的域名。
将关键告警规则设定为,在Prometheus里去新建告警文件,像那个位于 /etc/prometheus/alert_rules.yml 的文件,接着去添加规则,比如CPU持续处于95%的状态、磁盘根分区使用率超过85%的状况、Node_Exporter离线这种规则。
排错思路:监控不显示数据怎么办?
1. 对目标连通情况予以检查:于Prometheus服务器之上施行“telnet被控IP 9100”这一操作,若不通畅,那就对防火墙或者安全组展开检查。
去查看Exporter的状态,于被控端那边执行“systemctl status node_exporter”,或者直接去访问“http://被控IP:9100/metrics”,当看到有一堆指标时就表明Exporter处于正常状态。
3. 对Prometheus Targets展开检查:前往Prometheus Web UI(http://监控IP:9090/targets),查看State是不是UP。
若处于DOWN 的状态,对配置文件里的IP端口予以检查,或者查看Exporter服务是不是出现挂掉的情况。
4. Grafana数据源出现报错状况:于Grafana数据源配置页面当中,点击“Save & Test”,只有提示显示成功,这才意味着是真正实现了连通。
失败之际,去查验Prometheus那种地址,是不是被Grafana服务器的防火墙给加以阻拦了。
总结:
这套组合拳部署完毕之后,你能够将域名解析,也就是把monitor.yourcompany.com解析至服务器,以及LNMP环境,由宝塔供给Nginx加PHP,还有SSL证书,以及CDN加,如果存在的话,静态资源能够通过CDN加速,另外还有备份恢复,定期备份Prometheus数据目录具体为/var/lib/prometheus,这些都串联起来。
可视化具备真正意义的价值并非那种色彩斑斓的图表,而是在故障出现之际能够迅速确定故障的范围——是不是因为CPU使用率急剧升高而引发接口出现超时现象,又或者是磁盘IOWait致使数据库运行速度变得迟缓,一眼就能明确知晓。
这套监控体系我跑了五年,扛住过年中大促,你值得拥有。

Comments NOTHING