ELK 是什么毋庸多说,下面是用filebeat 收集nginx的访问日志和错误日志的实践。
安装
前提条件
- 准备三台主机
10.10.10.1
10.10.10.2
10.10.10.3 - 安装好docker,docker-compose
- 国内主机的话要配置好docker 加速
elasticsearch docker 安装
用普通的下载源码包安装也可以,但是有些设定不对的话,会报各种的错误,如文件描述符个数,进程数量,执行用户权限等等问题。
采用docker 安装非常省事,强烈推荐。
1.进入第一台主机,拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.2.0
- 新建 docker-compose.yaml 文件
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
container_name: es01
environment:
- node.name=es01
- discovery.seed_hosts=0
- network.host=0
- cluster.initial_master_nodes=es01
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
volumes:
esdata01:
driver: local
networks:
esnet:
- 启动
docker-compose up -d
-
docker-compose ps 查看启动结果
kibana 安装
- 进入第二台主机,拉取镜像
docker pull docker.elastic.co/kibana/kibana:7.2.0
- 新建 docker-compose.yaml 文件
version: '2'
services:
kibana:
image: docker.elastic.co/kibana/kibana:7.2.0
environment:
SERVER_NAME: kibana
ELASTICSEARCH_HOSTS: http://10.10.0.1:9200
ports:
- 5601:5601
ELASTICSEARCH_HOSTS 环境变量是elasticsearch 的主机地址,
5601 是对外公开的端口。
- 启动
docker-compose up -d
-
docker-compose ps 查看启动结果
5.浏览器查看kibana
http://公开ip:5601
看到这图就证明以上安装是OK的了。
filebeat 安装
- 进入第三台主机,安装filebeat
kibana 主页面 点击add log data ,有各种log 收集安装的方法,
我们这次收集nginx 日志,选择Nginx logs - 首先安装 nginx
- 安装 Filebeat
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-darwin-x86_64.tar.gz
tar xzvf filebeat-7.2.0-darwin-x86_64.tar.gz
cd filebeat-7.2.0-darwin-x86_64/
- 编辑配置
filebeat.yml
output.elasticsearch:
hosts: ["10.10.0.1:9200"]
setup.kibana:
host: "10.10.0.2:5601"
- 对nginx 日志文件路径进行设定
module/nginx/access/manifest.yml
default:
- /usr/local/nginx/logs/access.log*
/usr/local/nginx/logs/access.log* 是对应nginx 文件的访问日志
module/nginx/error/manifest.yml
default:
- /usr/local/nginx/logs/error.log*
/usr/local/nginx/logs/error.log* 是对应nginx 文件的错误日志
- 启动日志收集
- NGINX 启动
nginx
- filebeat 启动
./filebeat setup
./filebeat -e
生成nginx 日志
多访问几次第三台主机的URL ,
10.10.10.3
10.10.10.3/test
kibana 中查看日志数据
下面的路径进入
[Home] -> Add data -> Nginx logs
下面是效果,按请求地统计的访问数量,一目了然。
-
查看原始log
点击[Nginx access and error logs] 链接
是不是比看文本文件好多了呢?
总结
- docker 容器方式安装,省时省力
- elasticsearch 是数据存储
- kibana 是数据展示
- filebeat 是数据收集,当然不仅仅收集nginx log ,系统性能数据等都可以
需要不断的探索,就能找到属于你的数据。
谢谢!