docker部署elk环境,附java代码

1.配置logstash配置文件

1.1 配置02-beats-input.conf
vi /app/elk/conf/02-beats-input.conf

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
ruby {
  code => "event.set('index_date', event.get('@timestamp').time.localtime + 8*60*60)"
     }
   }

1.2配置10-syslog.conf

vi /app/elk/conf/10-syslog.conf

input {
  tcp {
    port => 5044
    codec => "json"
   }
}

1.3 配置11-nginx.conf

vi /app/elk/conf/11-nginx.conf

filter {
  if [type] == "nginx-access" {
    grok {
      match => { "message" => "%{NGINXACCESS}" }
    }
  }
}

1.4 配置30-output.conf

vi /app/elk/conf/30-output.conf

output {
  elasticsearch {
    hosts => ["host_ip:9203"]
    index => "%{[product]}.%{[service]}.%{[env]}-%{+YYYY.MM.dd}"
   }
}

2.启动elk服务

docker run -d  \
--ulimit nofile=65536:65536 \
-p 5045:5044 \
-p 5601:5601 \
-p 9203:9200 \
-p 5055:5055 \
-v /app/elk/data:/var/lib/elasticsearch \
-v /app/elk/conf:/etc/logstash/conf.d \
--name=elk \
--restart=always \
sebp/elk

3.Java代码配置elk
3.1引入依赖

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.2</version>
</dependency

3.2 配置logback-spring.xml

注意替换host_ip地址。

<appender name="logstash"
        class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>host_ip:5045</destination>
        <encoder charset="UTF-8"
            class="net.logstash.logback.encoder.LogstashEncoder">
            <includeContext>false</includeContext>
            <customFields>{"product":"cbmp","service":"${appName}","env":"test"}</customFields>
        </encoder>
</appender>

测试代码

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

    @GetMapping("/index")
    public Object index() {
        logger.debug("======ELK2测试=======");
        logger.info("======ELK2测试=======");
        logger.warn("======ELK2测试=======");
        logger.error("======ELK2测试=======");

        return "success";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值