ELK@Docker
環境:AWS EC2 4G Ram以上的機器
ELK部分
- 安裝docker
1
2
3
4
5sudo yum install docker -y
sudo usermod -a -G docker ec2-user
sudo service docker start
安裝docker-compose1
curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
1 | chmod +x /usr/local/bin/docker-compose |
退出cmd重登,讓剛剛權限設定生效
下載elk dockerfile
先設定vm.max_map_count 不然雙分頁起不起來1
sudo sysctl -w vm.max_map_count=262144
更改folder權限
1
2chmod -R 0777 html/
chmod -R 0777 datas/啟動
1
docker-compose up -d --build
FileBeat部分
Filebeat可以用docker單起向別台ELK send log
原Repo路徑是指向同一包中的nginx,如果要修改成指向系統下的nginx路徑就要修改以下地方
- 修改docker-compose.yml的volumes
volumes:- /var/log/nginx:/var/log/nginx/
1 | filebeat: |
- 修改
filebeat.yml
path
這邊的path也是設定為接收同包nginx的log
要接收本機的要修改為
`paths:
- /var/log/nginx/access.log`
這邊的log設定是配合/etc/nginx/nginx.conf
中的設定
目前皆以預設值做設定,當然也可以自訂其他路徑和檔名,但要與filebeat中ㄧ致
tags
也可以自訂,但要跟ELK接收端filter一致
和output
hosts: ["遠端主機ip或domain:5044"]
1 | filebeat: |
- 修改本機端nginx log權限
這邊是以ec2-user為範例,如果不是這個user自行修改對應的就好
1 | sudo chown nginx:ec2-user nginx |
- 啟動filebeat後進去確認log有無成功匯入
1 | docker exec -u 0 -it [dockerid] bash |
Logstash接收部分
- 修改
filebeat.conf
的tag部分對應filter/output
1 | else if "dev-backend-nginx-access" in [tags] |