监控平台搭建-日志-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 - 用户验收测试环境

建议:区分不同环境,便于权限控制和故障排查
相关推荐
AC赳赳老秦12 小时前
外文文献精读:DeepSeek翻译并解析顶会论文核心技术要点
前端·flutter·zookeeper·自动化·rabbitmq·prometheus·deepseek
qq_312920112 天前
Proxmox VE 监控:把集群指标秒级推送到 InfluxDB 2.x,Grafana 大屏一步到位
运维·grafana
牛奶咖啡132 天前
Prometheus+Grafana构建云原生分布式监控系统(十二)_基于DNS的服务发现
云原生·prometheus·dns·搭建自己的dns服务器·使用bind搭建dns服务器·配置正向解析·基于dns的服务发现
A-刘晨阳3 天前
Prometheus + Grafana + Alertmanager 实现邮件监控告警及配置告警信息
运维·云计算·grafana·prometheus·监控·邮件
饺子大魔王的男人3 天前
告别服务器失联!Prometheus+Alertmanager+cpolar 让监控告警不局限于内网
运维·服务器·prometheus
电话交换机IPPBX-3CX3 天前
如何使用 Grafana 可视化你的 3CX 呼叫中心电话系统
grafana·ip pbx·电话交换机·企业电话系统
牛奶咖啡134 天前
Prometheus+Grafana构建云原生分布式监控系统(十一)_基于consul的服务发现
云原生·prometheus·consul的安装部署·consul服务自动发现·consul服务的注册删除·consul服务的更新·实现自动去consul注册服务
Otto_10275 天前
在 OpenStack Rocky 中部署 Prometheus + Grafana
openstack·grafana·prometheus
牛奶咖啡135 天前
Prometheus+Grafana构建云原生分布式监控系统(十)_prometheus的服务发现机制(一)
云原生·prometheus·prometheus服务发现·静态服务发现·动态服务发现·基于文件的服务发现配置实践·prometheus标签重写
玄德公笔记5 天前
Prometheus监控k8s的metric详解(第二版)-01-scrape 指标抓取
kubernetes·k8s·prometheus·监控·metric·scrape·k8s监控