镇江当地网站,展厅设计公司招聘,做网站无赖客户退款,网站和网店的区别目录
引言
首先#xff0c;下载相关的包
其次#xff0c;安装启动elasticsearch
下一步#xff0c;安装并启动logstash
最后#xff0c;安装并启动kibana
进一步的#xff0c;测试数据的流动 引言
最近整理电脑发现之前的一篇ELK极简入门笔记#xff0c;现整理发出…目录
引言
首先下载相关的包
其次安装启动elasticsearch
下一步安装并启动logstash
最后安装并启动kibana
进一步的测试数据的流动 引言
最近整理电脑发现之前的一篇ELK极简入门笔记现整理发出来希望对感兴趣的小伙伴有帮助。
要说ELK是什么我们先给一个引子。早期计算机方面比较实用的技术是体系结构相关的内容。那时候各个大学的计算机系主任大部分是体系结构方面的专家后来算法逐渐占据上风开始流行起来当年微软将谷歌作为最大的竞争对手不无道理再后来人工智能开始如滔天大浪席卷了几乎所有高科技公司和高校现在再去看各个高校的计算机系主任不沾点人工智能的边都不好意思把简历放出来。在这个历史过程中搜索算法一度被认为是算法皇冠上的明珠尤其是在互联网大潮来临后数据生产呈现爆炸式增长如何快速准确的检索需要的数据成为了算法工程师的终极梦想。这方面的技术仍然在不断的进化演进ELK就是在大数据领域的一个搜索引擎成果包。简而言之ELK由三个子包构成E代表elasticsearch可升缩的查找引擎L代表logstash这里我们比较通用的将其理解为数据解析转换器而非日志K代表kibana可视化的一套组件。放在一起就是logstash将生产的数据按照规则解析过滤转换为结构化的数据提交给elasticsearchkibana提供简洁丰富的可视化界面方便用户查找elasticsearch中的数据。 下面看看如何搭建最基本的ELK环境。 首先下载相关的包
官网国内下载地址过慢可以找国内镜像下载
https://elasticsearch.thans.cn/downloads/logstash/logstash-6.4.3.tar.gz
https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.tar.gz 其次安装启动elasticsearch
elastic 高版本出现一些错误打印不再研究考虑下载低版本
下载6.4版本启动提示killed
修改config目录下的jvm options配置文件将虚拟机内存要求降低从1G到512M
再次运行提示错误can not run elasticsearch as root
因为安全问题elasticsearch 不让用root用户直接运行所以要创建新用户用非root用户启动提示
Exception in thread main java.nio.file.AccessDeniedException: /home/work/ELK/elasticsearch-6.4.3/config/jvm.options
是因为目录没有非root用户的执行权限用root用户chmod -R 777 安装目录
然后再次启动elasticsearch成功
在机器内部执行curl -get http://127.0.0.1:9200可以访问说明elasticsearch启动成功
curl -get http://127.0.0.1:9200{name : DxD9f_v,cluster_name : elasticsearch,cluster_uuid : 7z49ZWMyQR2QYdCfghiVkg,version : {number : 6.4.3,build_flavor : default,build_type : tar,build_hash : fe40335,build_date : 2018-10-30T23:17:19.084789Z,build_snapshot : false,lucene_version : 7.4.0,minimum_wire_compatibility_version : 5.6.0,minimum_index_compatibility_version : 5.0.0},tagline : You Know, for Search}
但是外部网络访问不了打开config下的yml配置文件将里面的net host项打开并指定外部访问的IP地址 0.0.0.0
重启服务提示max fs过小vm max mem过小
对max fs过小按照网上的修改/etc/security/limits配置文件将65535改成65536
对于vm max mem过小按照网上修改将/etc/sysctl.conf配置文件增加一行vm配置按照elasticsearch启动时提示的错误信息补充需要的大小21xxx44
执行sysctl -p 使配置生效
对于第一个修改的生效需要重新登录
之后再次启动elasticsearch成功在浏览器中访问192.168.0.108:9200 成功 向elasticsearch插入数据需要指定头部
curl -XPUT http://localhost:9200/twitter/_doc/1?pretty -H Content-Type: application/json -d {user: kimchy,post_date: 2009-11-15T13:12:00,message: Trying out Elasticsearch, so far so good?}
获取内容
curl -XGET http://localhost:9200/twitter/_doc/1?prettytrue{_index : twitter,_type : _doc,_id : 1,_version : 1,found : true,_source : {user : kimchy,post_date : 2009-11-15T13:12:00,message : Trying out Elasticsearch, so far so good?}}
查看elasticsearch的状态
curl -X GET localhost:9200/_cat
可以查看到支持命令列表 ^.^/_cat/allocation/_cat/shards/_cat/shards/{index}/_cat/master/_cat/nodes/_cat/tasks/_cat/indices/_cat/indices/{index}/_cat/segments/_cat/segments/{index}/_cat/count/_cat/count/{index}/_cat/recovery/_cat/recovery/{index}/_cat/health/_cat/pending_tasks/_cat/aliases/_cat/aliases/{alias}/_cat/thread_pool/_cat/thread_pool/{thread_pools}/_cat/plugins/_cat/fielddata/_cat/fielddata/{fields}/_cat/nodeattrs/_cat/repositories/_cat/snapshots/{repository}/_cat/templates
查看节点健康状态
curl -X GET localhost:9200/_cat/health?vepoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1699100535 20:22:15 elasticsearch yellow 1 1 30 30 0 0 15 0 - 66.7%
查看节点的状态
curl -X GET localhost:9200/_cat/nodes?vip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name192.168.0.99 60 96 2 0.00 0.00 0.00 mdi * DxD9f_v 查看索引
curl -X GET localhost:9200/_cat/indices?vhealth status index uuid pri rep docs.count docs.deleted store.size pri.store.sizegreen open .monitoring-kibana-6-2020.04.05 dEiKRojsQv-o22ZL7POLVA 1 0 25917 0 3.2mb 3.2mbgreen open .monitoring-es-6-2020.04.05 dosbfiHqR_uQcDNS6KTXGw 1 0 95077 200 36.2mb 36.2mbyellow open bank 9X6hpCfMRgG0Hg_pldRghA 5 1 1000 0 483kb 483kbyellow open blog TWYzd5SgRsCR5VEu1szVSg 5 1 1110 0 329.1kb 329.1kbgreen open .monitoring-es-6-2020.04.12 L2kP2a1sRJmYv32WJiR9ug 1 0 34872 0 14.9mb 14.9mbgreen open .monitoring-kibana-6-2020.04.13 7JMe7HYlQaKr_SEAocLXuA 1 0 15 0 81.4kb 81.4kbgreen open .monitoring-es-6-2020.04.06 VIwdUGpxQ_q3GUNDaiBrFQ 1 0 10283 216 5mb 5mbgreen open .monitoring-kibana-6-2020.04.04 L3uJIJ9GQ2WxtDFUVqT0Xg 1 0 13629 0 1.9mb 1.9mbyellow open test 3wkfLrXHRXS-HZsWXkDYjg 5 1 2 0 10.8kb 10.8kbgreen open .monitoring-kibana-6-2020.04.12 7okTRX0VTrya7qCKusG6kQ 1 0 9184 0 1.1mb 1.1mbgreen open .monitoring-kibana-6-2020.04.06 Bq9YykB7Smi3IqY7KqSUew 1 0 2361 0 326kb 326kbgreen open .monitoring-es-6-2020.04.04 X05uCpFqTtupA5x9OKFCvA 1 0 45040 46 16.7mb 16.7mbgreen open .monitoring-kibana-6-2020.04.08 bpTl2-TdSn6hRKFG2WdPlQ 1 0 8 0 48.3kb 48.3kbgreen open .monitoring-es-6-2020.04.13 ku_cSQXDRIG88gKRmZy3cw 1 0 147 44 234.6kb 234.6kbgreen open .monitoring-es-6-2020.04.07 _GTr8c30Q1iam0Jq49MacQ 1 0 27084 203 11.2mb 11.2mbgreen open .monitoring-kibana-6-2020.04.07 or0a2MePRuiQ815Q7SQKlw 1 0 7180 0 1000.2kb 1000.2kbgreen open .monitoring-es-6-2023.11.04 UDOLcrBPSRGo0w_5XGuxuQ 1 0 3674 135 2.1mb 2.1mbgreen open .kibana 32YGBWOgSTK5cxPAyz1ZUA 1 0 5 0 27.5kb 27.5kb 查看索引的文档如果不存在会提示错误
curl -X GET localhost:9200/_cat/indices/blog
yellow open blog TWYzd5SgRsCR5VEu1szVSg 5 1 1110 0 329.1kb 329.1kb 查询索引中的数据pretty会让数据美化输出主要是按照层次结构输出下面命令中search应该是内置命令字
curl -X GET localhost:9200/blog/_search?pretty 执行accounts数据示例注意 会提示bulk命令需要一个回车换行其实是在accounts文件尾部增加一个回车换行
curl -H Content-Type: application/json -XPOST localhost:9200/bank/_doc/_bulk?prettyrefresh --data-binary accounts.json
现在就向elasticsearch中增加了bank这个索引并有1000个文档数据 curl localhost:9200/_cat/indices?v
查询所有索引可以看到有bank索引 检索特定索引这里是刚创建的bank索引
curl -X GET localhost:9200/bank/_search?q*sortaccount_number:ascpretty
后面是参数列表以分割。q表示匹配所有参数sort表示按照accountsnumber升序排列pretty表示美化输出
以上可以在安装包的Readme中查找到使用例子 下一步安装并启动logstash
logstash-6.4.3/bin/logstash --help
Unrecognized VM option UseParNewGC
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
注释掉config/jvm.options文件中的 -XX:UseParNewGC 行即可 运行出现exit查看输出日志是因为更新了JDK到11所致这个版本的JDK需要降低使用jdk1.8.0Logstash启动成功。 最后安装并启动kibana
发现启动kibana后elasticsearch就会出现killed
进一步分析发现kibana在启动过程中会连接elasticsearch
对于killed现象初步分析可能是jvm 内存出错导致很可能是内存不够
之前的Hadoop相关java进程都是以1g内存参数启动jvm的在elasticsearch中将其修改为512了这一点上两块使用java前后有所不同步
其次是否是因为这些java进程的存在消耗了大量jvm内存导致后面再开新的java进程会崩溃由于内存不够 关闭Hadoop相关进程使用jps重新运行elasticsearch和kibana成功可以通过web看到kibana的页面 jps只有elasticsearch一个进程kibana难道不是java进程启动
原来因为kibana是使用node.js写的所以进程在node中。但是查找到的node进程不一定就是kibana的
所以还需要根据端口进一步确认直接查看5601端口的占用情况确定下进程ID然后在查看下node进程的ID,
如果一致就可以确定该node进程就是kibana的进程了。 这是很关键的一点。之前出现过关闭elasticsearch后再次启动elasticsearch后出现kibana启动后卡住CPU占比接近100%的情况
无意中发现此时kibana的web端仍然是可用工作的才想起来它可能在后台工作并没有退出。
此时可通过netstat 查看5601端口是否仍然在工作 netstat -anlp | grep 5601
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 78985/bin/../node/b
进一步的找到进程78985
ps aux | grep 78985
ywg 78985 1.2 8.3 1439760 184632 ? Sl 06:59 2:37 bin/../node/bin/node --no-warnings bin/../src/cli
此即为kibana关联的node进程 进一步的测试数据的流动
Logstash 的配置文件中使用了网络的例子
input {file {path /var/log/bootstrap.log start_position beginningtype test}}
输入使用了上述日志文件并以beginning为开始标记 使用echo命令向上述日志文件中增加内容可以在Logstash的日志中看到新内容解析
{message Mytest ELK,timestamp 2023-11-04T14:20:08.571Z,path /var/log/bootstrap.log,type test,tags [[0] _grokparsefailure],host ubuntu,version 1} 从kibana中可以看到日志信息及统计信息变化 如果要添加索引项目可以在manager中添加索引匹配模式 下一步就是熟悉elasticsearch的数据结构这样在后续使用中才可以做到从心所欲。