集群的日志监控系统基础配置及nginx负载均衡配置
- 前文
- 环境及准备工作
- 开始搭建
- Java配置
- Java应用部署
- nginx配置负载均衡
- 避坑点
- 总结
前文
上次给大家讲解单台应用服务器的plg日志系统搭建细节,下面给大家讲解应用集群的配置方式。
Promtail + Loki + Grafana 日志监控系统搭建
环境及准备工作
四台虚机,系统为centos8,总体框架图为
开始搭建
三台应用服务器配置类型,我以一台作为示例来搭建,其余两台参照这两台
Java配置
centos预装了JAVA8 ,这项可以跳过,如果 你们用的其他版本的系统,可以自行安装jdk。
Java应用部署
本次搭建了springBoot项目,作为应用服务。预留一个方法用来做后面的功能验证。这个方法主要就是两个方面,第一个日志记录调用情况,第二个日志,记录耗时。这个会在后续的日志监控中用到。
项目打包成jar包,上传至应用服务器的home路径下,使用如下命令进行启动。由于本次只是为了做演示,所以运行内存之类的参数并没有加,大家有兴趣可以自己去研究研究。
java -jar main-0.0.1-SNAPSHOT.jar >/home/logs/Startup.Log 2>&1 &
项目的日志目录放在/home/log/info.log下,打开日志,调用日志,此时调用正常。应用部署完毕
参照之前部署的教程,部署Promtail。但Promtail的配置有所变动,修改之前的job标签变成host标签,用来区分不同的主机,启动Promtail,命令参照上篇博客
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://192.168.175.131:3100/loki/api/v1/push
scrape_configs:
- job_name: info
static_configs:
- targets:
- localhost
labels:
host: 192.168.175.128
__path__: /home/log/info.log
配置完成后,在grafana就可以找到刚刚配置的主机
按照这个步骤配置和部署其余两台应用服务器,注意每台服务器都需要部署Promtail。配置完成后,grafana的标签,就会出现刚刚配置好的三台host
此时完成的是对三台服务器的日志监控,严格意义上来说,现在不能算是一个集群,只能算是多台服务器。下面开始集群的配置。采用nginx实现
nginx配置负载均衡
centos8已经默认安装了nginx服务,我们只需要修改nginx的配置来实现负载均衡。默认安装下的nginx配置文件在 /etc/nginx下,进入该目录下,修改相关配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#对应刚刚配置的三台服务器
#gzip on;
upstream test.miaohr.com {
server 192.168.175.128:8070;
server 192.168.175.129:8070;
server 192.168.175.130:8070;
}
server {
listen 80;
server_name test.miaohr.com;
charset utf-8;
location / {
root html;
index index.html index.htm;
proxy_pass http://test.miaohr.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
}
}
配置完成后,启动nginx。nginx负载均衡的模式有多种,本次默认为缺省状态下的时间片轮询机制。
此刻,访问http://192.168.175.131/getSxbm 便可以访问到三台应用服务器节点的随机一台。为了更直接的体现这种效果,我们就通过grafana配置一个可视化页面来观察
间隔若干秒分别调用此接口,就发现,三次请求,都打到了不同的机器上。简易版的负载均衡实现完毕。
避坑点
- centos8需要开放端口,或者更简单暴力一点,直接关闭防火墙
systemctl disable firewalld.service 关闭完要重启
- nginx配置时如若不生效可以查看/var/log/nginx 下的日志,我遇到的问题是配置的节点地址一直访问不过去日志提示解决Nginx的13: Permission denied) while connecting to upstream
- 解决方案`
- 1.关闭SeLinux
1.临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2.修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
2.执行下面的命令
setsebool -P httpd_can_network_connect 1`
亲测可用。
总结
plg模式的日志监控系统,原理在于将每一台节点的日志推送到loki服务器进行集中处理。每新增一台节点,都需要同步配置一个Promtail。plg模式搭建到此结束,下次给大家搭搭elk模式的日志监控系统。