监控平台搭建-日志-alloy篇(八)

基于grafana和loki的轻量级日志平台目前有2种选择Promtail和alloy,查阅各方资料都说Promtail将在后续版本迭代中放弃,deep seek对两者对比如下

deepseek对将来组件分析以及预测,长远来看因我们是新项目所以直接使用alloy,这样不需要将来考虑迁移以及版本升级问题

如下进入对alloy部署

alloy版本:https://github.com/grafana/alloy/releases

alloy升级日志:https://github.com/grafana/alloy/blob/main/CHANGELOG.md

因网络不稳定原因下载了很多次,终于下载成功,在此上传csdn平台,如遇同样问题可以这里下载最新版本1.12.1:https://download.csdn.net/download/goodlook0123/92533514

centos7在github上下载的包

下载完成后,直接解压并非一个文件夹是一个文件

bash 复制代码
# 1. 查看解压出的文件
ls -lh alloy-linux-amd64

# 2. 检查文件类型(应该是可执行二进制文件)
file alloy-linux-amd64

# 3. 查看文件大小(应该比较大,几十MB)
du -h alloy-linux-amd64

# 4. 检查是否有执行权限
ls -la alloy-linux-amd64

# 5.添加执行权限
chmod +x alloy-linux-amd64

执行如上命令会有如下结果为正常

bash 复制代码
#移动到系统目录,方便执行命令,systemd 服务容易配置
mv alloy-linux-amd64 /usr/local/bin/alloy

#遵循linux的结构标准(FHS)标准,/etc/      - 配置文件(静态,可读) /var/lib/ - 状态数据(动态,可写)、/var/log/ - 日志文件、/var/run/ - 运行时文件、/tmp/     - 临时文件
mkdir -p /etc/alloy /var/lib/alloy
#授权
chown -R alloy:alloy /etc/alloy /var/lib/alloy
bash 复制代码
sudo chown -R root:root /etc/alloy        # 配置文件:root 所有
sudo chown -R root :root /var/lib/alloy  # 数据文件:alloy 所有
sudo chown -R root :root /var/log/alloy  # 日志文件:alloy 所有

# 设置权限
sudo chmod 755 /etc/alloy                 # root可读写,其他只读执行
sudo chmod 750 /var/lib/alloy             # alloy可读写,其他无权限
sudo chmod 750 /var/log/alloy             # alloy可读写,其他无权限

查看启动状态

bash 复制代码
#加载配置
systemctl daemon-reload

#启动服务
systemctl start alloy


#停止服务
systemctl stop alloy

#查看启动状态
systemctl status alloy

# 查看 Alloy 服务的实时日志
sudo journalctl -u alloy -f

# 查看完整的服务日志
sudo journalctl -u alloy

# 查看特定时间段的日志
sudo journalctl -u alloy --since "10:00" --until "11:00"

# 查看最近100行日志
sudo journalctl -u alloy -n 100

# 以 JSON 格式输出日志
sudo journalctl -u alloy -o json

# 查看错误级别的日志
sudo journalctl -u alloy -p err

至此启动完成,但是有个问题就是推送9090端口有点问题继续调试

登录控制台

上述问题调整中遇到了很多问题,最终配置信息如下,复制粘贴即可使用

重要配置文件 vim alloy_config.conf

bash 复制代码
// 方法2:为每个应用配置不同的 loki.write
loki.source.file "cloudapp_a_logs" {
  targets = [{
    __path__ = "xxxx日志文件.log",
  }]

  forward_to = [loki.write.a.receiver]
}

loki.source.file "bn_logs" {
  targets = [{
    __path__ = "xxxx日志文件2.log",
  }]

  forward_to = [loki.write.b.receiver]
}

// 后端应用写入配置
loki.write "a" {
  endpoint {
    url = "http://loki的ip:13100/loki/api/v1/push"
  }

  external_labels = {
    job  = "a",
    app  = "cloudapp",
    type = "a",
    host = "iZ2zegh3s8azjnbtcvatevZ",
    env  = "production",
  }
}

// 区块链应用写入配置
loki.write "bn" {
  endpoint {
    url = "http://loki的ip:13100/loki/api/v1/push"
  }

  external_labels = {
    job  = "b",
    app  = "cloudapp",
    type = "b",
    host = "iZ2zegh3s8azjnbtcvatevZ",
    env  = "production",
  }
}
~                                                                                                                                                                                                                                                  
~            

创建并启动脚本如下

复制代码
cat << EOF | sudo tee /etc/systemd/system/alloy.service
bash 复制代码
[Unit]
Description=Grafana Alloy
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/alloy run 上述配置文件.conf
#/etc/alloy/alloy_config.conf

# 将所有输出(stdout/stderr)重定向到 journal
StandardOutput=journal
StandardError=journal
SyslogIdentifier=alloy

# 设置日志标签,便于过滤
LogExtraFields=SYSLOG_IDENTIFIER=alloy

# 创建日志目录(如果需要文件备份)
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /日志文件夹路径/logs
ExecStartPre=/bin/chown -R root:root /日志文件夹路径

Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

上述配置完成,启动后

我是单机,红线为集群问题没有深入研究,查看启动日志如下 journalctl -u alloy -f

上述配置完成,测试推送后在granfa上可以正常查看日志

为此在2处配置label信息,label配置信息对照alloy_config.conf配置文件

TypeScript 复制代码
1. job(必填 - 最重要的标签)
含义:标识具体的服务/应用名称

示例:

a - 云应用后端服务

b - 云区块链服务

user-service - 用户服务

order-service - 订单服务

建议:使用应用的唯一标识名,在 Grafana 中常用作筛选条件

2. app(推荐)
含义:标识应用组/产品线

示例:

cloudapp - 云应用产品线

finance-app - 金融应用

erp-system - ERP系统

建议:同一业务线的多个微服务使用相同的 app 标签

3. type(推荐)
含义:标识服务类型/角色

示例:

backend - 后端服务

frontend - 前端服务

api-gateway - API网关

database - 数据库

cache - 缓存服务

middleware - 中间件

blockchain - 区块链服务

建议:用于按技术栈分类

4. host(推荐)
含义:运行的主机标识

示例:

iZ2zegh3s8azjnbtc - 主机名

192.168.1.100 - IP地址

server-01 - 服务器编号

建议:使用主机名或易于识别的标识

5. env(必填)
含义:环境标识

示例:

production - 生产环境

staging - 预发布环境

testing - 测试环境

development - 开发环境

uat - 用户验收测试环境

建议:区分不同环境,便于权限控制和故障排查
相关推荐
goodlook01231 天前
监控平台搭建-日志-springboot直接推送loki篇(九)
java·spring boot·后端·grafana
三不原则1 天前
实战:Prometheus 监控 GPU 使用率,设置智能告警阈值
prometheus
新钛云服1 天前
Grafana Polystat面板与腾讯云可观测平台的深度融合实践
大数据·云计算·腾讯云·grafana
flying robot2 天前
Prometheus[2.33.3]grafana[12.3.1]监控安装
grafana·prometheus
flying robot2 天前
Grafana对xx-export监控和AlertManager 告警
grafana
一只懒鱼a5 天前
Prometheus和Grafana的安装和使用
grafana·prometheus
YanDDDeat5 天前
Prometheus + Grafana 搭建应用监控体系
java·后端·eureka·grafana·prometheus
goodlook01235 天前
监控平台搭建-日志-loki篇-最新版3.6.3(七)
服务器·grafana·prometheus
世界尽头与你5 天前
CVE-2025-4123_ Grafana 安全漏洞
安全·网络安全·渗透测试·grafana