做服务器运维或者开发的人,几乎都绕不开监控这件事。光看命令行里的top和free输出,信息又零散又不直观,出了问题也很难第一时间发现。Grafana作为目前最流行的可视化工具之一,可以把各种监控数据变成漂亮的仪表盘,还能配置告警规则,在服务器出问题的时候自动发通知。本文就以一台Linux云服务器为例,手把手演示Grafana从安装到配置告警通知的完整流程。

一、准备工作与安装Grafana
在动手之前,先确认你的云服务器满足几个基本条件:操作系统建议使用CentOS 7以上、Ubuntu 18.04以上或者Debian 10以上,内存至少1GB,磁盘空间预留500MB以上。如果你的服务器配置太低,Grafana运行起来可能会比较吃力。另外需要拥有root权限或者可以使用sudo的账号,因为整个安装过程都需要较高的权限。
以Ubuntu系统为例,安装Grafana推荐使用官方的APT软件源,这样后续升级维护都比较方便。先用下面的命令添加软件源并导入签名密钥:
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
然后执行安装命令并启动服务:
sudo apt-get update
sudo apt-get install grafana
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
如果是CentOS系统,则改用yum命令,先安装wget下载repo文件到/etc/yum.repos.d/目录下,再执行yum install grafana即可,后续的启动命令是一样的。安装完成后可以用systemctl status grafana-server查看服务状态,看到active (running)字样说明服务已经正常运行。
二、放行端口并登录Web界面
Grafana默认监听3000端口,这个信息很重要。云服务器一般有两层防火墙,一层是系统自带的防火墙(Ubuntu的ufw或者CentOS的firewalld),另一层是云厂商控制台里的安全组规则,两层都要放行3000端口才能正常访问。
以Ubuntu为例,执行sudo ufw allow 3000/tcp放行系统防火墙;CentOS用户执行sudo firewall-cmd --permanent --add-port=3000/tcp和sudo firewall-cmd --reload。然后登录云厂商控制台,在安全组入方向规则里添加一条允许TCP 3000端口的规则,授权对象可以填你自己的IP地址,这样比开放给全网更安全。
端口放行之后,在浏览器地址栏输入http://服务器公网IP:3000,就能看到Grafana的登录页面。默认账号密码都是admin,首次登录会强制要求修改密码,建议设置一个足够复杂的密码并妥善保存。如果担心公网暴露风险,也可以后期在配置文件/etc/grafana/grafana.ini中修改http.port,把端口换成一个不常见的,或者配合Nginx做反向代理并加上HTTPS。
三、添加数据源并搭建可视化仪表盘
Grafana本身不存储监控数据,它只负责展示,所以第一步是接入数据源。最经典的组合是Prometheus加Grafana:Prometheus负责采集和存储指标数据,Grafana负责查询和绘图。登录后台后,点击左侧菜单的Connections(旧版本叫Configuration),选择Data sources,点击Add data source,选中Prometheus,在URL一栏填入Prometheus的访问地址,比如http://127.0.0.1:9090,然后点Save & Test,出现绿色的成功提示就说明连接正常。
除了Prometheus,Grafana还支持MySQL、PostgreSQL、InfluxDB、Zabbix等几十种数据源,你可以根据实际情况选择。如果只是想监控服务器本身的CPU、内存、磁盘,推荐在服务器上部署node_exporter配合Prometheus使用,这个组合资料最多,排查问题也方便。
数据源就绪后就可以搭建仪表盘了。点击左侧加号选择New dashboard,添加一个Panel,在查询编辑器里选择好数据源,输入PromQL查询语句,例如node_cpu_seconds_total相关的表达式就能画出CPU使用率曲线。每个面板支持折线图、柱状图、仪表盘、热力图等多种展示形式,右侧面板设置里还可以配置单位、阈值颜色、图例位置。如果不想从零开始画,还可以访问Grafana官方的模板市场,搜索Node Exporter Full这类现成模板,复制ID号后在导入界面直接使用,几分钟就能得到一个非常专业的监控大屏。
四、配置告警规则与通知渠道
可视化只是第一步,告警才是监控系统真正发挥作用的地方。Grafana的告警分为两部分:告警规则和通知渠道,两者都需要单独配置。
先配置通知渠道。进入Alerting下的Contact points(联系人),点击Add contact point,Grafana支持邮件、钉钉、企业微信、Telegram、Webhook等多种方式。以邮件为例,需要先修改/etc/grafana/grafana.ini中的smtp配置段,填入SMTP服务器地址、端口、发件账号和授权码,改完记得重启Grafana服务。钉钉用户则创建一个钉钉机器人,拿到Webhook地址填进去,勾选钉钉的安全验证方式即可。配置完成后可以用Test按钮发一条测试消息,确认通知能正常送达。
接着配置告警规则。在面板编辑界面切换到Alert页签,点击Create alert rule,设置评估的查询语句和触发条件。比如内存使用率超过90%持续5分钟就触发告警,可以在条件里设置当查询结果高于0.9,并且For字段填写5m,这样可以避免瞬时波动造成误报。还可以自定义告警消息的标题和内容,把服务器名称、当前指标值等变量填进去,让通知信息一目了然。规则保存后,Grafana会按照设定的频率持续评估,一旦条件满足,就会通过前面配置的渠道推送通知。
五、日常维护的几点建议
Grafana搭建完成后,日常使用中还有几件事值得注意。一是及时升级版本,新版本不仅修复安全漏洞,告警功能的体验也在持续改进,升级前记得备份/var/lib/grafana目录,里面保存了所有的仪表盘和配置数据。二是控制面板数量,过于复杂的大屏会拖慢页面加载速度,建议按业务拆分成多个仪表盘。三是定期检查告警规则的有效性,可以人为制造一次指标异常,验证整条告警链路是否通畅,避免关键时候掉链子。
总的来说,Grafana的搭建过程并不复杂,真正的门槛在于数据采集方案的设计和告警阈值的拿捏。建议先从最基础的服务器资源监控入手,跑通整个链路之后再逐步扩展到应用层面的监控,循序渐进地搭建属于自己的监控体系。