服务创造价值、存在造就未来
监控与日志管理是现代软件开发中不可或缺的一部分。它们帮助开发人员和运维团队实时了解应用程序的状态,快速诊断和解决问题。
监控与日志管理通常与应用性能管理(APM)、异常检测工具和分布式追踪系统结合使用,以提供全面的应用程序可见性和问题排查能力。
创建 prometheus.yml 文件:
global: scrape_interval: 15s scrape_configs: - job_name: prometheus static_configs: - targets: [localhost:9090]配置 docker-compose.yml 文件:
version: 3 services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 container_name: elasticsearch environment: - discovery.type=single-node ports: - "9200:9200" - "9300:9300" logstash: image: docker.elastic.co/logstash/logstash:7.10.2 container_name: logstash volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf depends_on: - elasticsearch ports: - "5044:5044" kibana: image: docker.elastic.co/kibana/kibana:7.10.2 container_name: kibana depends_on: - elasticsearch ports: - "5601:5601"创建 logstash.conf 文件:
input { tcp { port => 5044 codec => json_lines } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } }使用Prometheus监控一个简单的Java应用:
@RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello, World!"; } }配置 prometheus.yml 文件来抓取Java应用的指标:
scrape_configs: - job_name: java_app static_configs: - targets: [localhost:8080]配置一个简单的Logback配置文件来发送日志到Logstash:
%date %level %logger{36} - %msg%n localhost:5044使用Prometheus进行服务发现:
scrape_configs: - job_name: java_app static_configs: - targets: [localhost:8080] relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: localhost:9090在Logstash中使用过滤器插件进行日志处理:
filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } }使用Prometheus监控一个Spring Boot应用,通过Grafana可视化监控数据。
使用ELK Stack收集并分析日志,设置告警规则,当出现异常时自动发送通知。
通过以上教程,你将能够全面掌握监控与日志管理的技术细节,并能够在实际项目中灵活运用。