博客+普罗米修斯+grafana

一、项目经历(简历版,突出技术栈与成果)

项目名称:基于Docker+K8s的高可用Web服务与全链路监控平台搭建

项目描述

负责搭建企业级高可用Web服务集群与全链路监控体系,基于Docker容器化部署WordPress博客、Prometheus+Grafana监控系统,通过Nginx反向代理+Keepalived实现负载均衡与高可用,完成全站HTTPS加密与域名解析配置,保障服务稳定、安全、可观测运行。

核心职责与成果

  1. 容器化服务部署:基于Docker部署WordPress博客、Prometheus、Grafana等服务,配置数据卷持久化,实现服务开机自启与环境隔离,解决传统部署的环境一致性问题。
  2. Nginx反向代理与HTTPS配置:配置Nginx反向代理,将博客、Grafana、Prometheus服务分别绑定www.ljycara.topmonitor.ljycara.topprometheus.ljycara.top子域名,申请并部署SSL证书,实现全站HTTPS加密,解决浏览器不安全提示与数据传输安全问题。
  3. 监控体系搭建:部署Prometheus作为时序数据采集引擎,Grafana作为可视化面板,配置Prometheus数据源,导入Linux主机监控模板(ID:1860),实现服务器CPU、内存、磁盘、带宽等核心指标的实时监控与可视化展示。
  4. 域名与DNS配置:在阿里云域名控制台配置A记录,完成子域名解析与DNS生效,保障多服务域名正常访问;排查证书域名不匹配、文件路径错误、Nginx启动失败等问题,保障服务高可用。
  5. 问题排查与优化:解决Docker容器网络通信、Nginx端口冲突、证书格式错误、DNS解析延迟等常见运维问题,优化服务配置,提升系统稳定性与安全性。

技术栈

  • 容器化:Docker、Docker Compose
  • Web服务:Nginx、WordPress
  • 监控系统:Prometheus、Grafana、mysqld_exporter(可选)
  • 域名与安全:阿里云DNS、SSL证书(Let’s Encrypt/阿里云DV证书)、HTTPS
  • 操作系统:Rocky Linux、Linux命令行
  • 其他:Shell脚本、acme.sh证书申请工具

二、核心命令汇总(运维排查速查手册)

一、Nginx相关(反向代理、HTTPS、证书配置)

1. 配置文件操作

# 查看证书目录文件
ls /etc/nginx/ssl/

# 写入/重写Nginx配置(博客)
cat > /etc/nginx/conf.d/wordpress.conf << EOF
server {
    listen 80;
    server_name www.ljycara.top ljycara.top;
    return 301 https://\$host\$request_uri;
}
server {
    listen 443 ssl;
    server_name www.ljycara.top ljycara.top;
    ssl_certificate /etc/nginx/ssl/www.ljycara.top.pem;
    ssl_certificate_key /etc/nginx/ssl/www.ljycara.top.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}
EOF

# 写入/重写Nginx配置(Grafana监控)
cat > /etc/nginx/conf.d/monitor.conf << EOF
server {
    listen 443 ssl;
    server_name monitor.ljycara.top;
    ssl_certificate /etc/nginx/ssl/www.ljycara.top.pem;
    ssl_certificate_key /etc/nginx/ssl/www.ljycara.top.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}
EOF

# 写入/重写Nginx配置(Prometheus监控)
cat > /etc/nginx/conf.d/prometheus.conf << EOF
server {
    listen 443 ssl;
    server_name prometheus.ljycara.top;
    ssl_certificate /etc/nginx/ssl/www.ljycara.top.pem;
    ssl_certificate_key /etc/nginx/ssl/www.ljycara.top.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://127.0.0.1:9090;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}
EOF

# 删除错误配置
rm -f /etc/nginx/conf.d/xxx.conf

# 移动证书文件
mv xxx.key /etc/nginx/ssl/
mv xxx.pem /etc/nginx/ssl/

# 删除证书文件
rm -f /etc/nginx/ssl/xxx.key /etc/nginx/ssl/xxx.pem

2. Nginx服务管理

# 验证Nginx配置语法(必做,排查启动失败核心命令)
nginx -t

# 重启Nginx服务
systemctl restart nginx

# 查看Nginx运行状态
systemctl status nginx

# 强制终止Nginx进程
pkill nginx

# 查看Nginx日志(排查错误)
journalctl -u nginx -f
tail -f /var/log/nginx/error.log

3. 证书相关

# 上传证书文件(rz命令,需本地选中文件)
rz

# 校验证书域名是否匹配
openssl s_client -connect monitor.ljycara.top:443 -servername monitor.ljycara.top

# 用acme.sh申请通配符证书(需阿里云AccessKey)
~/.acme.sh/acme.sh --issue --dns dns_ali -d *.ljycara.top -d ljycara.top

# 安装证书到Nginx目录
~/.acme.sh/acme.sh --install-cert -d *.ljycara.top \
--key-file /etc/nginx/ssl/ljycara.top.wildcard.key \
--fullchain-file /etc/nginx/ssl/ljycara.top.wildcard.pem \
--reloadcmd "systemctl restart nginx"

二、Docker相关(容器部署、服务管理)

# 查看运行中的容器
docker ps

# 查看所有容器(含停止)
docker ps -a

# 启动/停止/重启容器
docker start/stop/restart 容器名/容器ID

# 删除容器
docker rm -f 容器名/容器ID

# 创建Docker网络(Prometheus+Grafana通信)
docker network create monitor

# 运行Prometheus容器(持久化+网络配置)
docker run -d \
  --name prometheus \
  --network monitor \
  -p 9090:9090 \
  --restart always \
  -v prom_data:/prometheus \
  prom/prometheus:latest

# 运行Grafana容器(持久化+网络配置)
docker run -d \
  --name grafana \
  --network monitor \
  -p 3000:3000 \
  --restart always \
  -v grafana_data:/var/lib/grafana \
  grafana/grafana:latest

# 进入容器(修改配置/排查问题)
docker exec -u root -it 容器名 bash

# 重启Grafana(安装插件后)
docker restart grafana

# 查看容器日志
docker logs -f 容器名

三、Grafana相关(数据源、面板配置)

# 安装Grafana插件(饼图)
docker exec grafana grafana-cli plugins install grafana-piechart-panel

# 重启Grafana生效
docker restart grafana

# 修改Grafana配置(关闭匿名访问/注册)
docker exec -u root -it grafana bash -c "
sed -i 's/;allow_sign_up = true/allow_sign_up = false/' /etc/grafana/grafana.ini &&
sed -i 's/;enable_anonymous_access = true/enable_anonymous_access = false/' /etc/grafana/grafana.ini
"
docker restart grafana

四、Linux系统相关(基础运维、文件操作)

# 查看文件内容
cat 文件名

# 查看目录文件
ls -l

# 切换目录
cd 目录名

# 创建目录
mkdir -p 目录名

# 复制文件
cp 源文件 目标文件

# 移动/重命名文件
mv 源文件 目标文件

# 删除文件/目录
rm -rf 文件/目录

# 查看系统进程
ps -ef | grep 进程名

# 查看端口占用
netstat -tulnp | grep 端口号
lsof -i:端口号

# 防火墙管理(Rocky Linux)
systemctl status firewalld
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --permanent --add-port=9090/tcp
firewall-cmd --reload

# 查看系统时间/日期
date

五、域名与DNS相关(阿里云控制台操作)

核心操作步骤

  1. 进入阿里云域名控制台 → 找到ljycara.top → 点击「DNS管理/域名解析」
  2. 点击「添加记录」,分别添加3条A记录:
  • 主机记录:www,记录值:服务器公网IP(如47.108.59.208)
  • 主机记录:monitor,记录值:服务器公网IP
  • 主机记录:prometheus,记录值:服务器公网IP
  1. 等待DNS生效(1-5分钟),验证域名访问

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注