1.背景
公司内部服务器都没有公网访问权限,只有少数网关机可以访问公网,但需要将日志采集到阿里云日志服务进行实时分析,因此需要配置网关机转发来实现内网服务器的日志采集。
2.准备材料
一台可以访问外网的网关机 1.1.1.1
一台不能访问外网的服务器 2.2.2.2
3.目的 收集服务器2.2.2.2的日志
4.实现过程
在网关机(1.1.1.1)安装nginx,这里不做赘述 参考 https://www.cnblogs.com/lovexinyi8/p/5845017.html
在内部服务器(2.2.2.2)安装Logtail,这里参考https://help.aliyun.com/document_detail/28982.html安装,注意需要配置aliuid,参考https://help.aliyun.com/document_detail/49007.html配置
配置nginx的配置文件,需要配置两个域名,一个是阿里的区域域名,如果不知道区域的
可以看服务器的/usr/local/ilogtail/ilogtail_config.json
另一个域名是http://{project_name}.ap-northeast-1.log.aliyuncs.com {project_name}. 是你自己的Project名
都需要配置80 和443端口 以logtail.ap-northeast-1.log.aliyuncs.com域名的配置为例
80端口的配置
upstream logtail{
server logtail.ap-northeast-1.log.aliyuncs.com:80;
check interval=1000 rise=2 fall=1 timeout=1000;
}
server {
listen 80;
server_name logtail.ap-northeast-1.log.aliyuncs.com;
access_log /var/log/nginx/logtail.ap-northeast-1.log.aliyuncs.com_access.log main;
error_log /var/log/nginx/logtail.ap-northeast-1.log.aliyuncs.com_error.log debug;
charset utf-8;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://logtail;
break;
}
}
443端口配置
upstream logtail_443{
server logtail.ap-northeast-1.log.aliyuncs.com:443;
check interval=1000 rise=2 fall=1 timeout=1000;
}
server {
listen 443;
server_name logtail.ap-northeast-1.log.aliyuncs.com;
access_log /var/log/nginx/logtail.ap-northeast-1.log.aliyuncs.com_access.log main;
error_log /var/log/nginx/logtail.ap-northeast-1.log.aliyuncs.com_error.log debug;
charset utf-8;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass https://logtail_443;
break;
}
}
配置内部服务器(2.2.2.2)的host解析,将对应的logtail.ap-northeast-1.log.aliyuncs.com和http://{project_name}.ap-northeast-1.log.aliyuncs.com 在/etc/hosts中绑定到1.1.1.1
上述步骤都配置完成后,机器组的心跳应该已经显示OK了但是日志发送不出去,/usr/local/ilogtail/ilogtail.LOG 中提示如下信息:
目前的办法是让阿里的同事开通匿名写,也可以通过提交工单https://selfservice.console.aliyun.com/ticket/category/sls/today让工程师帮忙开通,如果有更好的办法欢迎讨论。
这里要感谢阿里的同事元乙提供的技术支持