docker入门:elk环境安装记录

1,160 阅读3分钟

这是我参与 8 月更文挑战的第 18 天,活动详情查看: 8月更文挑战

上文介绍了elasticsearch的安装,本文将介绍elk环境的搭建,楼主保证亲测,无异常抛出,建议收藏。

elk为日志收集系统,主要包括kibana(可视化界面),logstash(日志收集)。本篇将记录楼主安装的过程。

1.kibana安装

 1.下载镜像

docker pull kibana:7.10.1

注意:需要与elasitcsearch版本相同

2.启动

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.xx.xx:9200 -p 5601:5601 -d kibana:7.10.1

参数解释

  • docker run
  • --name kibana -e :指定容器名称
  • ELASTICSEARCH_HOSTS=192.168.xx.xx:9200:指定es地址
  • -p 5601:5601 :指定端口号
  • -d kibana:7.10.1:指定镜像名称

3.更改配置文件 设置xpack

因为上文中,我们的es配置了xpack,所以在连接时候也要设置xpack,此时需要进入docker容器修改配置文件。

1.进入容器

docker exec -it 容器id /bin/bash

image.png

2.修改配置文件

cd config
vi kibana.yml

kibana.yml配置

i18n.locale: "zh-CN"
server.port: 5601
server.host: 0.0.0.0
elasticsearch.username: "elastic" #es中配置
elasticsearch.password: "xxxx"    #es中配置
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"

配置修改完之后需要重启docker容器。

5.验证

访问ip:5601,输入es中配置的xpack账号密码即可,如:elastic/123456.。 image.png

如果此处账号密码不了解,可以参考上文elasticsearch安装。

2.logstash安装

 1.下载镜像

老生常谈,没啥好说的。

 docker pull logstash:7.5.1

2.新建挂载文件

此处不详谈,如果有疑问可以参考上文redis安装,有具体解释。

mkdir -p /usr/local/logstash/conf.d
mkdir -p /usr/local/logstash/config
mkdir -p /usr/local/logstash/logs

3.赋权

chmod -777 /usr/local/logstash

4.挂载配置文件

1.挂载配置文件

将logstash.yml放入/usr/local/logstash/config/中,在容器启动后,使用的就是该文件配置。

logstash.yml

http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: "http://192.168.xx.xx:9200"  #es地址
xpack.monitoring.elasticsearch.username: "elastic"  #es xpack账号密码
xpack.monitoring.elasticsearch.password: "xxxx"     #es xpack账号密码
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs

注意 http.host: "0.0.0.0" 而不是指定ip

2.挂载日志收集文件

将log_to_es.conf放入/usr/local/logstash/conf.d/,在收集日志时,使用的就是该配置。

3.log_to_es.conf配置

如果想具体了解配置含义,后续楼主会开展elk专栏,请持续关注楼主。

log_to_es.conf

input{
        tcp {
			    mode => "server"
				host => "0.0.0.0"
                port => 5000
                codec => json_lines
				type=> "datalog"
        }
		tcp {
			    mode => "server"
				host => "0.0.0.0"
                port => 4999
                codec => json_lines
				type=> "loginlog"
 
        }
}
filter{
			if[type] == "loginlog"{
			    grok {
					match => {"message" => "|%{GREEDYDATA:loginMsg}|%{GREEDYDATA:timeFormat}|%{GREEDYDATA:userName}"}
				}
				if([message] =~  "^(?!.*?登录系统).*$") {
					### 丢弃
					drop{}
				   }
				}
			if[type] == "datalog"{	
				grok {
					match => {"message" => "|%{DATA:userName}|%{GREEDYDATA:operationName}|%{DATA:timeFormat}|%{DATA:ip}|%{DATA:systemType}|%{GREEDYDATA:logType}|%{GREEDYDATA:method}|%{GREEDYDATA:input}"}
				}	
			}
            ruby {
				code => "event['time'] = event['@timestamp']"
			}
			mutate
			{
				add_field => ["time", "%{@timestamp}"]
			}				 
}
output{
       
				if[type] == "datalog"{
				    elasticsearch{
						hosts=>["192.168.xx.xx:9200"]
						user => "elastic"
						password => "xxxx"
						index => "xxxx-%{+YYYY.MM.dd}"
						    }
						}
				if[type] == "loginlog"{
				    elasticsearch{
						hosts=>["192.168.xx.xx:9200"]
						user => "elastic"
						password => "xxxx"
						index => "xxxx-%{+YYYY.MM.dd}"
					        }					
                        }
}

5.启动

docker run -p 5044:5044 -p 5000:5000-p 4999:4999--name=logstash \
  --restart=always --privileged=true\
  -e ES_JAVA_OPTS="-Xms1g -Xmx2g" \
  -v /usr/local/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
  -v /usr/local/logstash/conf.d:/usr/share/logstash/config/conf.d \
  -v /usr/local/logstash/logs:/usr/share/logstash/logs  \
  -d logstash:7.5.1

参数详解:

  • -p 5044:5044 -p 5000:5000-p 4999:4999 :映射的端口号 这里与上文log_to_es.conf input中一定要相同!!!!额外价格一个5044 为logstash地址
  • --name=logstash:容器名称
  • --restart=always --privileged=true:启动配置
  • -e ES_JAVA_OPTS="-Xms1g -Xmx2g":指定内存
  • -v /usr/local/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:配置文件挂载
  • -v /usr/local/logstash/conf.d:/usr/share/logstash/config/conf.d:日志收集配置挂载位置
  • -v /usr/local/logstash/logs:/usr/share/logstash/logs:日志挂载位置
  • -d logstash:7.5.1:指定镜像

6.验证

访问kibana可以看到是否连接成功。 image.png