【前情提要】 PromQL 入门了,小林能查出 CPU、内存、磁盘的使用率了。老周说:“现在你能查数据了,但数据是一堆数字,没人愿意看。你得把它变成图。”小林打开 Grafana 官网,准备装 Grafana。但他不知道,数据源配置、Dashboard 导入、Panel 查询,每一个都可能让他折腾。

一、老周的审美第二击

早上到工位,小林打开 Prometheus 的查询框,得意地敲了一串 PromQL:

1 - avg(rate(node_cpu_seconds_total{mode="idle"}[1m]))

结果:

{} 0.0234

“周哥,你看,CPU 使用率 2.34%。”

老周看了一眼,沉默了三秒。

“你知道这玩意儿像什么吗?”

“像什么?”

“像医院的心电图——全是数字,只有医生能看懂。”老周说,“你老板要看服务器状态,你给他看这个?”

小林想了想:“那给他看什么?”

“图。”老周说,“老板要的不是数字,是红绿黄。绿色正常,黄色警告,红色告警。一眼看懂。”

“那用什么画?”

“Grafana。”老周说,“Prometheus 负责存数据,Grafana 负责把数据变成图。你以后做监控,Prometheus 是后台,Grafana 是前台。老板只看前台。”

小林打开 Grafana 官网。

二、安装 Grafana

“Ubuntu 上装 Grafana,最标准的方式是加官方源。”老周说,“比二进制简单,而且自带 systemd 服务。”

“那跟 apt 装一样?”

“对,但要先加 Grafana 的官方源。”老周说,“你跟着敲。”

小林先装依赖:

sudo apt update
sudo apt install -y apt-transport-https software-properties-common wget

“这几个是啥?”

“apt-transport-https 让 apt 支持 HTTPS 源,software-properties-common 提供 add-apt-repository 命令,wget 下载工具。”老周说,“基础依赖,先装上。”

然后加 Grafana 的 GPG 密钥:

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

“GPG 密钥是啥?”

“软件源的签名验证。”老周说,“你从 Grafana 源下载软件,得验证这个源是不是官方的。GPG 密钥就是‘官方盖章’。没有它,apt 不敢装。”

然后加源:

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

“signed-by 指定密钥路径,stable main 表示稳定版主仓库。”老周说,“现在更新源,装 Grafana。”

sudo apt update
sudo apt install -y grafana

安装完成。

“启动。”

sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server

输出:

● grafana-server.service - Grafana instance
     Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor "=== 5. lsof ==="
    ssh devops@192.168.1.x "sudo lsof -i :80"
    echo "=== 6. nginx -t ==="
    ssh devops@192.168.1.x "sudo nginx -t"
    echo "=== 7. error.log ==="
    ssh devops@192.168.1.x "sudo tail -30 /var/log/nginx/error.log"
    echo "=== 8. curl ==="
    ssh devops@192.168.1.x "curl -I http://localhost"
    echo "=== 9. ufw ==="
    ssh devops@192.168.1.x "sudo ufw status"
} > ~/troubleshoot_log.txt

cat ~/troubleshoot_log.txt

十、下集预告

全链路排错做完了,小林第一次体验了“从浏览器查到服务器”的完整流程。老周说:“你排查能力有了,但你还缺一样东西——预判。”小林问:“预判什么?”老周说:“预判下一次故障。”下一集,老周带小林做最后的综合复盘和结语。

下一集:《完结篇:从“会敲命令”到“能扛事”》