| 知乎专栏 |
将 ERROR 和 WARN 级别的日志发送到钉钉群
[root@netkiller ~]# cat /etc/logstash/conf.d/file.conf
input {
tcp {
port => 4567
codec => json_lines
}
gelf {
port => 12201
use_udp => true
#use_tcp => true
}
}
filter {
ruby {
code => "event.set('datetime', event.get('@timestamp').time.localtime.strftime('%Y-%m-%d %H:%M:%S'))"
}
}
output {
file {
path => "/opt/log/%{marker}.%{+yyyy}-%{+MM}-%{+dd}.log"
codec => line { format => "[%{datetime}] %{level} %{message}"}
}
file {
path => "/opt/log/origin.%{+yyyy}-%{+MM}-%{+dd}.log.gz"
codec => json_lines
gzip => true
}
if "ERROR" in [level] or "WARN" in [level] {
http {
url => "https://oapi.dingtalk.com/robot/send?access_token=56c27cb734a56cf549f6977ecc2761c4a16473db02d9d2881d008f9a239ba3e0"
http_method => "post"
content_type => "application/json; charset=utf-8"
format => "message"
message => '{"msgtype":"text","text":{"content":"Monitor: %{host} - %{message}"}}'
}
}
}
neo@MacBook-Pro-M2 ~ % cat workspace/bottleneck/src/main/java/cn/netkiller/Application.java
package cn.netkiller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MarkerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
private static final Logger logger = LoggerFactory.getLogger(Application.class);
@PostConstruct
public void init() {
System.out.printf("==================== init ====================");
logger.warn(MarkerFactory.getMarker("finance"), "XXX 系统启动");
}
@PreDestroy
public void destroy() {
System.out.printf("==================== destroy ====================");
logger.error(MarkerFactory.getMarker("finance"), "XXX 系统销毁");
}
public static void main(String[] args) {
System.out.println("Netkiller bottleneck tool!");
SpringApplication.run(Application.class, args);
}
}
@PostConstruct 可以监控 启动情况
@PreDestroy 可以监控 退出情况