当前位置: 首页 > article >正文

Docker:安装 Syslog-ng 的技术指南

1、简述

Syslog-ng 是一种流行的日志管理工具,能够集中处理和分析日志。通过 Docker 安装 Syslog-ng 可以简化部署和管理过程。本文将介绍如何使用 Docker 安装 Syslog-ng,并提供一个 Java 示例来展示如何将日志发送到 Syslog-ng。
在这里插入图片描述

2、安装

2.1 创建 Docker Compose 文件

先创建Syslog-ng 容器外的映射目录:

mkdir -p /data/syslog/conf
mkdir -p /data/syslog/logs

在项目目录下创建一个 docker-compose.yml 文件:

version: '3'

services:
  syslog-ng:
    image: balabit/syslog-ng
    ports:
      - "514:514/udp"
    volumes:
      - /data/syslog/conf:/etc/syslog-ng/
      - /data/syslog/logs:/var/log/syslog-ng

2.2 创建 Syslog-ng 配置文件

在项目目录下创建 /data/syslog/conf 目录,并在该目录下创建一个配置文件 syslog-ng.conf:

@version: 3.30
@include "scl.conf"

source s_network {
    syslog(transport(udp) port(514));
};

destination d_local {
    file("/var/log/syslog-ng/messages.log");
};

log {
    source(s_network);
    destination(d_local);
};
2.3 启动 Syslog-ng 容器

在项目目录下运行以下命令启动 Syslog-ng 容器:

docker-compose up -d

3、样例

3.1 引入依赖

在 Spring Boot 项目的 pom.xml 文件中引入 logback 相关依赖:

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    
    <!-- Logback Classic -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </dependency>

    <!-- Logback Syslog Appender -->
    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>6.6</version>
    </dependency>
</dependencies>
3.2 配置 Logback

在 src/main/resources 目录下创建或编辑log4j.properties 文件:

log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=192.168.157.129
log4j.appender.SYSLOG.facility=local0
log4j.appender.SYSLOG.facilityPrinting=false
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss}  %-5p (%C:%M:%L) - %m%n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss}  %-5p (%C:%M:%L) - %m%n

log4j.rootLogger=info, CONSOLE, SYSLOG
3.3 示例代码

创建一个简单的 Spring Boot 应用程序,包含一个控制器来生成一些日志:

package com.example.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LogController {
    private static final Logger logger = LoggerFactory.getLogger(LogController.class);

    @GetMapping("/log")
    public String log() {
        logger.info("This is an info log message");
        logger.debug("This is a debug log message");
        logger.error("This is an error log message");
        return "Logs have been sent to Syslog-ng";
    }
}

4、验证

启动 Spring Boot 应用程序并访问 http://localhost:8080/log。然后查看 syslog-ng/logs/messages.log 文件,以确保日志已经成功发送到 Syslog-ng:

docker exec -it <container_id> cat /var/log/syslog-ng/messages.log

你应该会看到类似如下的日志内容:

Jul 30 12:34:56 localhost LogController: [main] LogController - This is an info log message
Jul 30 12:34:56 localhost LogController: [main] LogController - This is a debug log message
Jul 30 12:34:56 localhost LogController: [main] LogController - This is an error log message

5、结论

通过上述步骤,我们成功地使用 Docker 安装了 Syslog-ng,并在 Spring Boot 应用程序中集成了日志发送功能。这种方法不仅简化了 Syslog-ng 的部署,还提高了日志管理的灵活性和效率。如果有任何问题或改进建议,欢迎在评论区留言。

希望这篇博客对你有所帮助!


http://www.kler.cn/news/362209.html

相关文章:

  • Jmeter 实战 JDBC配置
  • Android OpenGL天空盒
  • 京东大模型革命电商搜推技术:挑战、实践与未来趋势
  • Python实现文本数据可视化:构建动态词云
  • 人工智能 | 阿里通义千问大模型
  • 【linux】线程 (三)
  • Build an Android project and get a `.apk` file on a Debian 11 command line
  • Java项目-基于Springboot的车辆充电桩项目(源码+说明).zip
  • c++基础算法练习(1)
  • Android SELinux——调试工具audio2allow介绍(十三)
  • Linux系列-Linux的常见指令(三)
  • 错误0x80070522:客户端没有所需的特权
  • C++ set和map的模拟实现
  • 在Debian上安装向日葵
  • 深度学习-卷积神经网络-基于VGG16模型, 实现猫狗二分类(文末附带数据集下载链接, 长期有效)
  • oracle_查询建表语句
  • 【毕业设计】基于SpringBoot的网上商城系统
  • 【C语言刷力扣】2006.差的绝对值为K的数对数目
  • CTFHUB技能树之SQL——布尔盲注
  • 前端模块化技术 IIFE、CMD、UMD
  • 智能去毛刺:2D视觉引导机器人如何重塑制造业未来
  • MySQL 指定字段排序
  • 信息搜集 --前端js打点
  • 九、SQL 进阶之路:深入探索数据库查询的艺术
  • Chromium html<textarea>c++接口定义
  • 刷爆leetccode Day7 DP