后续会在 Docker 中使用 ELK,简单了解一下下述安装
ES 安装 准备工作运行Elasticsearch,需安装并配置JDK
- 各个版本对Java的依赖
- Elasticsearch 5 需要Java 8 以上的版本
- Elasticsearch 从 6.5 开始支持 Java 11
- Elasticsearch 7.0 开始内置了Java环境
也支持 Docker 环境运行
Elasticsearch下载地址
选择对应版本,此处下载 Linux x86_64 版本
通过非root用户启动
如果使用root账户启动会报以下错误
java.lang.RuntimeException: can not run elasticsearch as root
注意通过非root账户启动时,要注意 elasticsearch 和 jdk 目录的权限是否为当前用户权限是否可以访问,如果权限不足,要进行修改
目录介绍 使用 启动服务通过运行 elasticsearch 目录下bin目录中的 elasticsearch 启动 elasticsearch 服务
elasticsearch-7.14.0/bin/elasticsearch
elasticsearch启动后访问:端口号:9200
只能在linux虚拟机中访问,无法通过外部访问
在config/elasticsearch.yml中增加
network.host: 0.0.0.0
再次启动,报错
ERROR: [2] bootstrap checks failed. You must address the points described in the following [2] lines before starting Elasticsearch. bootstrap check failure [1] of [2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535] bootstrap check failure [2] of [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
解决错误1 配置完成后退出当前用户,重新登录
vim /etc/security/limits.conf
wcj hard nofile 65536 wcj soft nofile 65536
解决错误2
修改 config/elasticsearch.yml 文件
cluster.initial_master_nodes: ["node-1"]
解决上述错误后,再次启动服务,可以访问到虚拟机中的 ES 服务
JVM 配置- 修改 JVM - config/jvm.options
- 7.1 下载的默认设置是 1 GB
- 配置建议
- Xmx 和 Xms 设置成一样
- Xmx 不要超过机器内存的 50%
- 不要超过 30 GB - https://www.elastic.co/cn/blog/a-heap-of-trouble
查看已安装插件
命令方式
bin/elasticsearch-plugin list
浏览器方式
访问 ip:9200/_cat/plugins
插件安装
安装 analysis-icu 插件
bin/elasticsearch-plugin install analysis-icu集群模拟
bin/elasticsearch -E node.name=node1 - E cluster.name=集群名称 -E path.data=node1_data -d bin/elasticsearch -E node.name=node2 - E cluster.name=集群名称 -E path.data=node2_data -d bin/elasticsearch -E node.name=node3 - E cluster.name=集群名称 -E path.data=node3_data -d
查看节点
ip:9200/_cat/nodes
Kibana 安装 下载注意Kibana版本要和Elasticsearch版本一致
Kibana下载地址
下载完成后解压文件
使用 启动访问 ip:5601
bin/kibana
kibana 启动后外网无法访问
修改 config 目录下的 kibana.yml 文件
#server.host: "localhost" server.host: "0.0.0.0"
配置kibana为中文
在配置文件(config/kibana.yml )中增加 i18n.locale: “zh-CN”
i18n.locale: "zh-CN"插件
安装方式和 ES 类似
# 安装插件 bin/kibana-plugin install /插件路径 # 查看已安装插件 bin/kibana-plugin list # 移除插件 bin/kibana-plugin removeDocker 安装 ELK 准备 安装docker-compose
下载docker-compose
移动到/usr/local/bin目录下
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
修改文件的执行权限
sudo chmod +x /usr/local/bin/docker-composedocker-compose.yaml 文件
同时将 cerebro、kibana、elasticsearch 运行在 docker compose 容器中
- cerebro 可以查看 ES 集群的状态
version: '2.2'
services:
cerebro:
image: lmenezes/cerebro:0.8.3
container_name: cerebro
ports:
- "9000:9000"
command:
- -Dhosts.0.host=http://elasticsearch:9200
networks:
- es7net
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
container_name: kibana7
environment:
- I18N_LOCALE=zh-CN
- XPACK_GRAPH_ENABLED=true
- TIMELION_ENABLED=true
- XPACK_MONITORING_COLLECTION_ENABLED="true"
ports:
- "5601:5601"
networks:
- es7net
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
container_name: es7_01
environment:
- cluster.name=geektime
- node.name=es7_01
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es7_01,es7_02
- cluster.initial_master_nodes=es7_01,es7_02
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es7data1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- es7net
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
container_name: es7_02
environment:
- cluster.name=geektime
- node.name=es7_02
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es7_01,es7_02
- cluster.initial_master_nodes=es7_01,es7_02
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es7data2:/usr/share/elasticsearch/data
networks:
- es7net
volumes:
es7data1:
driver: local
es7data2:
driver: local
networks:
es7net:
driver: bridge
运行
在 docker-compose.yml 文件所在的路径执行 docker-compose up 命令
执行命令报错
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
错误原因:最大虚拟内存区域 vm.max_map_count 65530 太低了,增加到至少 262144
解决方式
编辑 /etc/sysctl.conf,添加 以下信息
vm.max_map_count=262144
执行以下命令使配置生效
sysctl -pLogstash
安装 下载通过logstash将csv文件转换为json格式数据
注意Logstash版本要和elasticserach和kibana版本一致
下载Logstash
下载完成后解压文件
使用 准备 测试数据下载测试数据下载
测试数据处理将下载好的压缩包解压,movies.csv是要导入的测试数据
logstash.conf文件(放在了Logstash的bin目录下),将movies.csv中的数据输出到Elasticsearch
logstash.conf文件
input {
file {
## 数据文件存放地址,注意下面地址要换成movies.csv存放的地址
path => "/Users/yiruan/dev/elk7/logstash-7.0.1/bin/movies.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["id","content","genre"]
}
mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
}
mutate {
split => ["content", "("]
add_field => { "title" => "%{[content][0]}"}
add_field => { "year" => "%{[content][1]}"}
}
mutate {
convert => {
"year" => "integer"
}
strip => ["title"]
remove_field => ["path", "host","@timestamp","message","content"]
}
}
## 上面对数据进行逻辑处理
## 最后将处理好的数据输出到localhost:9200端口
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "movies"
document_id => "%{id}"
}
stdout {}
}
启动Logstash
bin 目录下运行
./logstash -f logstash.conf
数据输入到了Elasticsearch
使用后续使用通过 docker 启动这些服务



