Loki 通过 Logstash 采集 Oracle云 对象存储中 FLB 日志数据 (兼容S3协议)
本文将介绍如何利用 Logstash 采集 OCI FLB 服务产生的日志数据,通过 logstash 从兼容S3协议的对象存储中获取FLB日志数据,并存储至Loki。OCI(Oracle Cloud Infrastructure)是由 Oracle 提供的云计算服务,提供强大的基础设施和平台服务,包括计算、存储、数据库、网络和安全等,为企业提供灵活、可扩展和安全的云解决方案。FLB: OCI 负
本文将介绍如何利用 Logstash 采集 OCI FLB 服务产生的日志数据,通过 logstash 从兼容S3协议的对象存储中获取FLB日志数据,并存储至Loki。
OCI(Oracle Cloud Infrastructure)是由 Oracle 提供的云计算服务,提供强大的基础设施和平台服务,包括计算、存储、数据库、网络和安全等,为企业提供灵活、可扩展和安全的云解决方案。
FLB: OCI 负载均衡是 Oracle 提供的一项重要服务,用于转发传入的流量以确保应用程序的高可用性和性能。
Connector Hub: OCI提供的数据流集成工具,可以对接多种数据流;
Logstash: Logstash 是一个强大的开源数据收集引擎,用于实时处理和转换日志和事件数据流。它支持各种输入源和输出目的地,包括 Elasticsearch、Loki、Kafka 等。
Loki: Loki 是一个轻量级的日志聚合工具,专注于容器化环境和微服务架构,提供高效的日志收集和查询。Loki 使用 Prometheus 的标签模型来存储和查询日志数据,使得快速、灵活的日志监控成为可能。
1 架构
示例展示从 OCI FLB 中输出日志到 logging, 由 hub 服务 将 logging 日志输出到 对象存储,然后 logstash 进行数据处理,存储到loki,最后由Grafana进行展示。
2 启动 FLB 日志
FLB有access和error两种类型的日志,默认 OCI LB 日志默认是关闭的,需要开启和配置存储信息。
2.1 开启 FLB 日志
2.2 配置日志启动选项
3 配置 OCI 负载均衡日志输出至对象存储
3.1 配置 connector hub
3.2 配置数据源
3.3 配置 lb 源端日志
3.4 配置目标端对象存储
4 logstash 服务安装
# 配置初始化
# selinux
setenforce 0 && sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && getenforce
systemctl disable firewalld && systemctl stop firewalld
# swap 关闭
swapoff -a
vim /etc/fstab
# 创建 logstash 管理用户
useradd -s /sbin/nologin loki
# 下载 & 安装 logstash
wget <https://artifacts.elastic.co/downloads/logstash/logstash-8.11.3-linux-x86_64.tar.gz>
tar xf logstash-8.11.3-linux-x86_64.tar.gz
mv logstash-8.11.3 /usr/local/logstash
chown loki.loki -R /usr/local/logstash
5 安装 logstash-output-loki插件
# 默认情况下,logstash 没有安装 loki 插件
cd /usr/local/logstash/
bin/logstash-plugin install logstash-output-loki
6 配置 logstash 采集 OCI 对象存储日志
# vim /usr/local/logstash/config/logstash-s3.conf
input {
s3 {
bucket => "loki-storage"
access_key_id => "ak"
secret_access_key => "sk"
endpoint => "region-s3.endpoint"
region => "ap-tokyo-1"
additional_settings => {
force_path_style => true
follow_redirects => false
}
}
}
filter {
json {
source => "message"
target => "jsoncontent"
}
if [jsoncontent][type] == "com.oraclecloud.loadbalancer.access" { # 判断, 如果是access日志增加如下标签
mutate {
add_field => {
"listenerName" => "%{[jsoncontent][data][listenerName]}"
"lbStatusCode" => "%{[jsoncontent][data][lbStatusCode]}"
}
}
} else if [jsoncontent][type] == "com.oraclecloud.loadbalancer.error" { # 判断, 如果是error日志增加如下标签
mutate {
add_field => {
"listenerName" => "%{[jsoncontent][data][listenerName]}"
"lbStatusCode" => "%{[jsoncontent][data][lbStatusCode]}"
}
}
}
mutate {
add_field => {
"job" => "%{[jsoncontent][source]}"
"logtype" => "%{[jsoncontent][type]}"
}
}
}
output {
# stdout { # 标准输出,调试用
# codec => rubydebug
# }
loki {
url => "<http://127.0.0.1:8001/loki/api/v1/push>" # 输出到loki
}
}
7 Logstash 开机启动服务
cat > /usr/lib/systemd/system/logstash.service << EOF
[Unit]
Description=Logstash
Documentation=https://www.elastic.co/products/logstash
After=network.target
ConditionPathExists=/usr/local/logstash/config/logstash-s3.conf
[Service]
Type=simple
User=loki
Group=loki
ExecStart=/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-s3.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
8 启动 Logstash
systemctl start logstash
systemctl enable logstash
9 logstash日志输出
10 参考资料
logstash 表达式
Accessing event data and fields | Logstash Reference [8.12] | Elastic
安装 logstash-output-loki
Logstash plugin | Grafana Loki documentation
🚀 炸鸡物料库 🚀
🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。
🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。
🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。
🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。
💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。
🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!
更多推荐
所有评论(0)