docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.1 docker pull docker.elastic.co/kibana/kibana:7.15.1 docker pull docker.elastic.co/logstash/logstash:7.15.1 docker pull docker.elastic.co/beats/filebeat:7.15.1配置文件路径
/nfs/d6g/elk/
mkdir logstash elasticsearch kibana filebeat部署elasticsearch 设置max_map_count不能启动es会启动不起来
查看max_map_count的值 默认是65530
cat /proc/sys/vm/max_map_count
重新设置max_map_count的值
sysctl -w vm.max_map_count=262144
docker run --name es -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 docker.elastic.co/elasticsearch/elasticsearch:7.15.1 复制配置文件 docker cp es:/usr/share/elasticsearch/data /nfs/d6g/elk/elasticsearch/ docker cp es:/usr/share/elasticsearch/logs /nfs/d6g/elk/elasticsearch/ docker cp es:/usr/share/elasticsearch/config /nfs/d6g/elk/elasticsearch/
docker run --name es -d --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 -v /nfs/d6g/elk/elasticsearch/config:/usr/share/elasticsearch/config -v /nfs/d6g/elk/elasticsearch/data:/usr/share/elasticsearch/data -v /nfs/d6g/elk/elasticsearch/logs:/usr/share/elasticsearch/logs docker.elastic.co/elasticsearch/elasticsearch:7.15.1配置文件
vim elasticsearch.yml
network:
host: 0.0.0.0
xpack:
ml:
enabled: false
monitoring:
enabled: false
security:
enabled: false
watcher:
enabled: false
验证成功
访问 http://192.168.6.71:9200
部署kibana 启动镜像docker run -d --name=kibana --restart=always -p 5601:5601 -v /nfs/d6g/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:7.15.1配置文件
vim kibana.yml
server.host: "0.0.0.0" elasticsearch.hosts: ["http://192.168.6.71:9200"] #elasticsearch.url: http://192.168.6.71:9200 i18n.locale: "zh-CN" xpack: apm.ui.enabled: false graph.enabled: false ml.enabled: false monitoring.enabled: false reporting.enabled: false security.enabled: false grokdebugger.enabled: false searchprofiler.enabled: false验证成功
访问 http://192.168.6.71:5601
部署logstash 启动镜像docker run -d --name logstash --restart=always -p 5044:5044 docker.elastic.co/logstash/logstash:7.15.1 复制配置文件 docker cp logstash:/usr/share/logstash/config /nfs/d6g/elk/logstash/config docker cp logstash:/usr/share/logstash/data /nfs/d6g/elk/logstash/data
docker run -itd --name logstash --restart=always --privileged=true --net=host -v /nfs/d6g/elk/logstash/config:/usr/share/logstash/config -v /nfs/d6g/elk/logstash/conf.d:/usr/share/logstash/conf.d -v /nfs/d6g/elk/logstash/data:/usr/share/logstash/data -v /nfs/d6g/elk/logstash/logs:/usr/share/logstash/logs docker.elastic.co/logstash/logstash:7.15.1
logstash.yml
http.host: "0.0.0.0" #根据实际修改es的ip:port xpack.monitoring.elasticsearch.hosts: [ "http://192.168.6.70:9200" ] # 主管道的Logstash配置路径,如果指定目录或通配符,配置文件将按字母顺序从目录中读取 path.config: /usr/share/logstash/conf.d/*.conf #Logstash将其日志写到的目录 path.logs: /usr/share/logstash/logs path.data: /usr/share/logstash/data
pipelines.yml
- pipeline.id: main
path.config: "/usr/share/logstash/conf.d*json.log
document_type: "filebeat" # 定义写入 ES 时的 _type 值
multiline:
#pattern: '^s*(d{4}|d{2})-(d{2}|[a-zA-Z]{3})-(d{2}|d{4})' # 指定匹配的表达式(匹配以 2017-11-15 08:04:23:889 时间格式开头的字符串)
# pattern: '^s*("{)' # 指定匹配的表达式(匹配以 "{ 开头的字符串)
# negate: true # 是否匹配到
# match: after # 合并到上一行的末尾
# max_lines: 1000 # 最大的行数
timeout: 30s # 如果在规定的时候没有新的日志事件就不等待后面的日志
# fields:
# logsource: node1
# logtype: spring-boot-log4j2
#output.elasticsearch:
#hosts: ["node1:9200"]
# output.logstash:
# hosts: ["node1:10515"]
output.elasticsearch:
hosts: 'http://192.168.6.71:9200'
indices:
- index: "filebeat-%{+yyyy.MM.dd}"
lockback配置
使用apollo中的logstash主机${CONSOLE_LOG_PATTERN} ${LOG_HOST:- }:${LOG_PORT:- } { "code": "${code}", "appName": "${appName}", "level": "%level", "thread": "%thread", "class": "%logger{40}", "message": "%message", "stack_trace": "%exception{10}" }
#logstash服务器地址 #logstash.host=192.168.6.70 #logstash.port=5044 #Bootstrap 阶段注入配置开关 apollo.bootstrap.enabled=true #Apollo 配置加载提到初始化日志系统之前 apollo.bootstrap.eagerLoad.enabled=true #Bootstrap 阶段注入配置 application.yml,logback-spring 配置 #apollo.bootstrap.namespaces=application.yml,logback-spring
https://www.kuangstudy.com/bbs/1354069127022583809
elasticsearch ElasticSearch概述Elaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
据国际权威的数据库产品评测机构DB Engines的统计,在2016年1月,ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用。
ES和Solr ElasticSearch简介- Elasticsearch是一个实时分布式搜索和分析引擎。 它让你以前所未有的速度处理大数据成为可能。
- 它用于全文搜索、结构化搜索、分析以及将这三者混合使用:
- 维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。
- 英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。
- StackOverflow结合全文搜索与地理位置查询,以及more-like-this功能来找到相关的问题和答案。
- Github使用Elasticsearch检索1300亿行的代码。
- 但是Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决方案。
- Elasticsearch可以在你的笔记本上运行,也可以在数以百计的服务器上处理PB级别的数据。
- Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域, Lucene可被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
- 但是, Lucene只是一个库。 想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是, Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
- Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
- Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
- Solr可以独立运行,运行在letty. Tomcat等这些Selrvlet容器中 , Solr 索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档, Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送HTTP GET请求,然后对Solr返回xml、json等格式的查询结果进行解析,组织页面布局。
- Solr不提供构建UI的功能, Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
- Solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene.
- Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交-定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。
1、es基本是开箱即用(解压就可以用!) ,非常简单。Solr安装略微复杂一丢丢!
2、Solr 利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。
3、Solr 支持更多格式的数据,比如JSON、XML、 CSV ,而Elasticsearch仅支持json文件格式。
4、Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
5、Solr 查询快,但更新索引时慢(即插入删除慢) ,用于电商等查询多的应用;
- ES建立索引快(即查询慢) ,即实时性查询快,用于facebook新浪等搜索。
- Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。
6、Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。
Api查询索引:
curl -XGET 'http://127.0.0.1:9200/_cat/indices/?v'
删除索引:
curl -XDELETE 'http://127.0.0.1:9200/logstash-2021-11-*'定时删除索引
#/bin/bash
#指定日期(7天前)
DATA=`date -d "1 week ago" +%Y.%m.%d`
#当前日期
time=`date`
#删除7天前的日志
curl -XDELETE http://127.0.0.1:9200/*-${DATA}
if [ $? -eq 0 ];then
echo $time"-->del $DATA log success.." >> /tmp/es-index-clear.log
else
echo $time"-->del $DATA log fail.." >> /tmp/es-index-clear.log
fi
执行
* * * 1/1 * /root/es-index-clear.sh > /dev/null 2>&1
重启服务
sudo service cron restart
查看是否运行
ps -ef | grep cron
更多内容:https://gitee.com/lofxve/note


