docker部署ELK

启动elasticsearch

  • 拉取elasticsearch镜像
docker pull elasticsearch:7.8.0
  • 启动elasticsearch容器
docker run -d -p 9200:9200 -p 9300:9300 -e "http.cors.enabled=true" -e "http.cors.allow-origin=*" -e "discovery.type=single-node" --name elasticsearch elasticsearch:7.8.0

启动kibana

  • 拉取kibana镜像
docker pull kibana:7.8.0
  • 启动kibana容器
docker run --name kibana -d -p 5601:5601 --link elasticsearch:elasticsearch kibana:7.8.0

启动logstash

  • 拉取logstash镜像
docker pull logstash:7.8.0
  • 启动logstash容器
docker run -d -v /logs:/logs -p 5044:5044 --name logstash logstash:7.8.0
  • 进入容器logstash
docker exec -it logstash bash
  • 修改容器logstash配置文件
bash-4.2$ vi config/logstash.yml 
bash-4.2$ cat config/logstash.yml 
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.0.148:9200" ]
bash-4.2$ vi /usr/share/logstash/pipeline/logstash.conf
bash-4.2$ cat /usr/share/logstash/pipeline/logstash.conf
input{
	file{
		codec=>json
		path=>"/logs/*.json"
	}
}
filter{
	grok{
		match=>{
			"message"=>"%{DATA:timestamp}\|%{IP:serverIp}\|%{IP:clientIp}\|%{DATA:logSource}\|%{DATA:userId}\|%{DATA:reqUrl}\|%{DATA:reqUri}\|%{DATA:refer}\|%{DATA:device}\|%{DATA:textDuring}\|%{DATA:duringTime:int}\|\|"
		}
	}
}
output{
	elasticsearch{
		hosts=>"http://192.168.0.148:9200"
	}
}
  • 验证容器logstash配置文件是否正确
bash-4.2$ logstash -f /usr/share/logstash/pipeline/logstash.conf -t
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.headius.backport9.modules.Modules (file:/usr/share/logstash/logstash-core/lib/jars/jruby-complete-9.2.11.1.jar) to method sun.nio.ch.NativeThread.signal(long)
WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Sending Logstash logs to /usr/share/logstash/logs which is now configured via log4j2.properties
[2024-10-25T16:22:54,512][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2024-10-25T16:22:55,831][INFO ][org.reflections.Reflections] Reflections took 47 ms to scan 1 urls, producing 21 keys and 41 values 
Configuration OK
[2024-10-25T16:22:56,424][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
  • 退出logstash容器
bash-4.2$ exit
exit
(base) [root@localhost logs]# 
  • 重启logstash容器
(base) [root@localhost logs]# docker restart logstash
logstash
(base) [root@localhost logs]# 
  • 往/logs/a.json写入数据
(base) [root@localhost logs]# echo '{"serverIp":"xxxxxxxxxxxxxxxxx"}' >> /logs/a.json 
(base) [root@localhost logs]# 
  • 配置kibana页面

如下图所示表示配置完成

点击如下图所示

此时就能看到数据

你可以使用Docker部署ELK(Elasticsearch, Logstash, Kibana)堆栈。以下是一些步骤: 1. 安装DockerDocker Compose:请确保你的机器上已经安装了DockerDocker Compose。 2. 创建一个新的目录并在该目录下创建一个`docker-compose.yml`文件。 3. 在`docker-compose.yml`文件中添加以下内容: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 volumes: - ./data:/usr/share/elasticsearch/data logstash: image: docker.elastic.co/logstash/logstash:7.14.0 container_name: logstash volumes: - ./logstash/config:/usr/share/logstash/pipeline ports: - 5044:5044 kibana: image: docker.elastic.co/kibana/kibana:7.14.0 container_name: kibana ports: - 5601:5601 ``` 这个`docker-compose.yml`文件定义了三个服务:Elasticsearch、Logstash和Kibana。每个服务都使用了ELK堆栈的官方Docker镜像。 4. 创建一个`data`目录,用于保存Elasticsearch的数据。 5. 在一个终端窗口中,导航到包含`docker-compose.yml`文件的目录,并运行以下命令来启动ELK堆栈: ```bash docker-compose up ``` 这将启动Elasticsearch、Logstash和Kibana容器,并将它们连接在一起。 6. 访问Kibana:在浏览器中访问`http://localhost:5601`,你将看到Kibana的登录界面。 现在,你已经成功地使用Docker部署ELK堆栈。你可以通过Logstash将日志数据发送到Elasticsearch,并使用Kibana来可视化和分析这些日志数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值