关于elk:不背锅运维享一个具有高可用性和可伸缩性的ELK架构实战案例

写在开篇本文只分享各个链路环节的配置对接,对于环境的搭建,比方kafka集群、es集群的搭建等请自行实现。还有,业务利用的日志能够是你的其余业务日志,心愿本文能够起到抛砖援用的成果。测试架构 这个架构形容了一个将来自不同数据源的数据通过 Kafka 直达,而后应用 Logstash 将数据从 Kafka 中读取并解决,最终将解决后的数据再写回到 Kafka 中,以供 Elasticsearch 进行存储和剖析的过程。通过应用 Kafka 和 Logstash,能够将来自不同数据源的数据进行集中管理和解决,并将数据以牢靠的形式发送到 Elasticsearch 进行存储和剖析。这种架构具备高可用性和可伸缩性,并且能够在解决大量数据时提供良好的性能。同时,因为 Logstash 能够从多种起源读取数据,因而能够适应各种数据集成计划的需要。 留神:kafka集群a接管来自filebeat的音讯,并由logstash进行生产。kafka集群b接管来自logstash的音讯,并由es或者其余业务进行生产。 机器布局主机名角色IP备注srv-mysql8mysql+filebeat192.168.11.161业务数据库,filebeat读取mysql的日志wordpressnginx+filebeat192.168.11.170业务web利用,filebeat读取nginx的日志kafka01kafka节点192.168.11.247kafka集群a,broker.id=1kafka02kafka节点192.168.11.248kafka集群a,broker.id=2kafka03kafka节点192.168.11.249kafka集群a,broker.id=3logstash01logstash192.168.11.250第1套logstashkafka-b01kafka节点192.168.11.40kafka集群b,broker.id=10kafka-b02kafka节点192.168.11.41kafka集群b,broker.id=20kafka-b03kafka节点192.168.11.42kafka集群b,broker.id=30logstash02logstash192.168.11.133第2套logstashes-node01es节点(主)192.168.11.243es集群es-node02es节点192.168.11.244es集群es-node03es节点192.168.11.245es集群kibana-svrkibana192.168.11.246 留神:在同一个网段中,两个 Kafka 集群必须要应用不同的 broker.id,否则会导致抵触。因为 broker.id 是 Kafka 集群中惟一标识一个 Broker 的参数,同一个网段中不能存在两个具备雷同 broker.id 的 Broker。实战开撸创立kafka主题在kafka集群a中创立主题bin/kafka-topics.sh --create --zookeeper 192.168.11.247:2181 --replication-factor 2 --partitions 3 --topic wordpress-nginx-log装置和配置filebeat在装置了wordpress web的业务主机上进行装置下载和装置wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.6.2-x86_64.rpmrpm -ivh filebeat-8.6.2-x86_64.rpm filebeat version配置filebeat读取日志 关上和编辑/etc/filebeat/filebeat.yml配置文件,增加以下内容,使其读取Nginx拜访日志文件:filebeat.inputs:- type: log  enabled: true  paths:    - /usr/local/nginx/logs/wordpress.access.log  fields:    log_type: wordpress_accessoutput.kafka:  hosts: ["192.168.11.247:9092",192.168.11.248:9092,192.168.11.249:9092]  topic: "wordpress-nginx-log"启动filebeatsystemctl start filebeat配置logstash01,生产kafka集群a的音讯在logstash01主机上配置logstash,使其可能生产kafka集群a中主题为"wordpress-nginx-log"的音讯。 装置kafka插件bin/logstash-plugin install logstash-input-kafka留神:如果装置的时候提醒:ERROR: Installation aborted, plugin 'logstash-input-kafka' is already provided by 'logstash-integration-kafka',这个谬误提醒'logstash-input-kafka'插件曾经被Logstash集成插件'logstash-integration-kafka'提供了,能够间接应用 logstash-integration-kafka 插件生产 Kafka 音讯在 Logstash 的配置文件中应用 kafka 输出插件配置之前,先阐明下我的nginx日志自定义的格局: log_format my_log_format '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';创立和编辑配置文件config/wordpress-logstash.conf,增加以下内容: input { kafka { bootstrap_servers => "192.168.11.247:9092,192.168.11.248:9092,192.168.11.249:9092" topics => ["wordpress-nginx-log"] }}filter { # 解析Nginx日志行 grok { match => { "message" => '%{IPORHOST:clientip} - %{USERNAME:remote_user} [%{HTTPDATE:timestamp}] "%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:body_bytes_sent} "%{DATA:http_referer}" "%{DATA:user_agent}"' } } # 将工夫戳转换为ISO 8601格局 date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] target => "@timestamp" }}output { stdout { codec => rubydebug }}启动 Logstashbin/logstash -f config/wordpress-logstash.conf 在这里,先让其输入到屏幕,看看是否失常。确保logstash生产kafka集群a的音讯没问题、以及确保过滤没问题能够失常打印到屏幕之后,就能够持续上面的步骤了。配置logstash01,过滤后的音讯写入到kafka集群b持续在logstash01上配置,从kafka集群a中生产数据并过滤,解决后写入到kafka集群b中的主题wordpress-web-log。在kafka集群b中创立主题bin/kafka-topics.sh --create --zookeeper 192.168.11.40:2181 --replication-factor 2 --partitions 3 --topic wordpress-web-log编辑配置文件config/wordpress-logstash.conf,配置outputinput { kafka { bootstrap_servers => "192.168.11.247:9092,192.168.11.248:9092,192.168.11.249:9092" topics => ["wordpress-nginx-log"] }}filter { # 解析Nginx日志行 grok { match => { "message" => '%{IPORHOST:clientip} - %{USERNAME:remote_user} [%{HTTPDATE:timestamp}] "%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:body_bytes_sent} "%{DATA:http_referer}" "%{DATA:user_agent}"' } } # 将工夫戳转换为ISO 8601格局 date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] target => "@timestamp" }}output { kafka { bootstrap_servers => "192.168.11.40:9092,192.168.11.41:9092,192.168.11.42:9092" topic_id => "wordpress-web-log" }}编辑实现后,记得重启logstash哦。长期启动一个消费者,验证从kafka集群b生产主题wordpress-web-log的音讯bin/kafka-console-consumer.sh --bootstrap-server 192.168.11.40:9092 --topic wordpress-web-log如果能失常生产,读取到的音讯打印到管制台上,就能够持续上面的步骤了。配置logstash02,生产kafka集群a的音讯在logstash02主机上配置logstash,使其可能生产kafka集群b中主题为"wordpress-web-log"的音讯,并写入到ES集群关上并编辑config/logstash.conf,增加以下内容: ...

March 16, 2023 · 1 min · jiezi

关于elk:Filebeat-接入观测云用观测云替换-ELK

作者|小熊博望运维经理 —— 王明松 简略介绍一下ELK包含 ElasticSearch、Kibana 和 Logstash,Filebeat 负责在终端进行采集,将数据上报给 Logstash,存储在 ElasticSearch 或者其余存储(如 S3),最终通过 Kibana 来出现数据并进行剖析,设置告警等。咱们的原环境里一共有 5 个 ELK 集群,别离承当收集审计日志,收集业务日志,剖析业务日志的职能。其中收集审计日志是须要长期保留以供前期;收集业务日志是次要是谬误日志的收集和告警生成;剖析业务日志只是对业务状况进行实时展现,可靠性要求不高。通过评估,咱们筹备替换掉前两种收集审计日志和业务日志的共计 4 个 ELK 集群,只保留 1 个须要实时剖析业务日志的集群。观测云观测云是国内当先的可观测平台,基本功能能够齐全代替 ELK 来做日志收集,并且也能够做进一步的指标生成和告警告诉。DataKitDataKit 是观测云提供的需装置到主机上的采集器,也是数据上报给观测云的入口。(编者注:观测云还提供一种须要独立部署的可编程数据处理平台 DataFlux Func,也能够作数据采集器应用。)用观测云替换 ELK 的思路是什么?咱们尝试了以下几种替换计划: 计划一:Logstash 接入,只替换 ElasticSearch 和 Kibana 在咱们开始测试的时候,因过后 DataKit 1.2.19(2022 年 5 月 12 日之前的版本)不反对串联 Filebeat 采集器,而之后的 DataKit 版本尽管开始反对串联 Filebeat,但并不稳固,比方不反对 6.x 版本的 Filebeat。 所以过后的思路是 Logstash 对接 DataKit 的 Logstreaming 采集器,观测云代替掉 ElasticSearch 和 Kibana 性能,这不是一个完满的计划,咱们还须要保护十分消耗资源而且容易 crash 的 Logstash。这原本就是一个权宜之计,而且在 DataKit 1.4.0 下面试验用 Logstash 6.x 接入并不稳固,最终放弃。参考文档:https://docs.guance.com/integ... ...

January 14, 2023 · 2 min · jiezi

关于elk:Docker安装ELK8x

Docker装置ELK集成镜像一、下载ELK镜像搜寻镜像docker search sebp/elk [root@www ~]# docker search sebp/elkNAME DESCRIPTION STARS OFFICIAL AUTOMATEDsebp/elk Collect, search and visualise log data with … 1169 [OK]sebp/elkx Collect, search and visualise log data with … 43 [OK]下载镜像docker pull sebp/elk [root@www ~]# docker pull sebp/elkUsing default tag: latestlatest: Pulling from sebp/elkDigest: sha256:c5f1d0f845ab217ef509b8c6565d0c4a5dd8dea063a411b60dfb7c4508312acaStatus: Image is up to date for sebp/elk:latestdocker.io/sebp/elk:latest二、批改系统配置批改eleasticsearch用户权限vim /etc/security/limits.conf # 在最初面追加上面内容elk hard nofile 65536elk soft nofile 65536能够解决ELK启动报: ERROR: Elasticsearch did not exit normally - check the logs at /var/log/elasticsearch/elasticsearch.log错的问题 ...

September 6, 2022 · 2 min · jiezi

关于elk:为ELK提供SSL访问

五、设置ELK明码(可选)开启elasticsearch明码vim /data/elk/elasticsearch/config/elasticsearch.yml开端减少两行 # 开启明码xpack.security.transport.ssl.enabled: truexpack.security.enabled: true为kibana配置拜访明码vim /data/elk/kibana/config/kibana.yml开端减少用户名明码配置 # elk体系有很多的用户组,elastic是默认的用户组之一,能够应用默认的用户,也能够自定义用户elasticsearch.username: "elastic" elasticsearch.password: "1qaz@WSX3edc"重启ELKdocker restart elk重启可能报错. [elk] Exceptionorg.elasticsearch.ElasticsearchSecurityException: invalid SSL configuration for xpack.security.transport.ssl - server ssl configuration requires a key and certificate, but these have not been configured; you must set either [xpack.security.transport.ssl.keystore.path], or both [xpack.security.transport.ssl.key] and [xpack.security.transport.ssl.certificate] at org.elasticsearch.xpack.core.ssl.SSLService.validateServerConfiguration(SSLService.java:635) ~[?:?] at org.elasticsearch.xpack.core.ssl.SSLService.loadSslConfigurations(SSLService.java:612) ~[?:?] at org.elasticsearch.xpack.core.ssl.SSLService.<init>(SSLService.java:156) ~[?:?] at org.elasticsearch.xpack.core.XPackPlugin.createSSLService(XPackPlugin.java:461) ~[?:?] at org.elasticsearch.xpack.core.XPackPlugin.createComponents(XPackPlugin.java:310) ~[?:?] at org.elasticsearch.node.Node.lambda$new$14(Node.java:668) ~[elasticsearch-8.3.3.jar:?] at org.elasticsearch.plugins.PluginsService.lambda$flatMap$0(PluginsService.java:235) ~[elasticsearch-8.3.3.jar:?] at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) ~[?:?] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?] at java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:720) ~[?:?] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) ~[?:?] at java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) ~[?:?] at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) ~[?:?] at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622) ~[?:?] at java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627) ~[?:?] at org.elasticsearch.node.Node.<init>(Node.java:681) ~[elasticsearch-8.3.3.jar:?] at org.elasticsearch.node.Node.<init>(Node.java:300) ~[elasticsearch-8.3.3.jar:?] at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:230) ~[elasticsearch-8.3.3.jar:?] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:230) ~[elasticsearch-8.3.3.jar:?] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) [elasticsearch-8.3.3.jar:?] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:224) [elasticsearch-8.3.3.jar:?] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:67) [elasticsearch-8.3.3.jar:?][2022-09-05T19:41:12,778][ERROR][o.e.b.Elasticsearch ] [elk] fatal exception while booting Elasticsearchorg.elasticsearch.bootstrap.StartupException: org.elasticsearch.ElasticsearchSecurityException: invalid SSL configuration for xpack.security.transport.ssl - server ssl configuration requires a key and certificate, but these have not been configured; you must set either [xpack.security.transport.ssl.keystore.path], or both [xpack.security.transport.ssl.key] and [xpack.security.transport.ssl.certificate] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:228) [elasticsearch-8.3.3.jar:?] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:67) [elasticsearch-8.3.3.jar:?]Caused by: org.elasticsearch.ElasticsearchSecurityException: invalid SSL configuration for xpack.security.transport.ssl - server ssl configuration requires a key and certificate, but these have not been configured; you must set either [xpack.security.transport.ssl.keystore.path], or both [xpack.security.transport.ssl.key] and [xpack.security.transport.ssl.certificate]较新的版本开启明码须要SSL证书, 如果报以上谬误, 还原下面五-第一步的操作, 再重启ELK生成证书; 如果ELK失常重启, 跳过以下步骤。3.1 重启ELKdocker restart elk3.2 进入docker docker exec -it elk /bin/bash3.3 生成elastic-stack-ca.p12文件 ...

September 6, 2022 · 2 min · jiezi

关于elk:Censtos7-安装部署-elastalert日志告警

装置依赖包yum -y install gcc libffi-devel python-devel openssl-devel4 ca-certificates openssl-dev openssl python2-dev python2 py2-pip py2-yaml libffi-dev gcc musl-dev wgetyum -y install wget openssl openssl-devel gcc gcc-c++下载Python3.6.9wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz解压,编译装置tar xf Python-3.6.9.tgzcd Python-3.6.9./configure --prefix=/usr/local/python --with-opensslmake && make install创立软链接,降级pipln -s /usr/local/python/bin/python3 /usr/bin/python3ln -s /usr/local/python/bin/pip3 /usr/bin/pip3pip install --upgrade pip验证python -V下载安装elastalertgit clone https://github.com/Yelp/elastalert.gitcd elastalertpip3 install "elasticsearch<7,>6"pip3 install -r requirements.txtpython3 setup.py install装置胜利后能够看到四个命令ll /usr/local/python/bin/elastalert* /usr/local/python/bin/elastalert /usr/local/python/bin/elastalert-create-index /usr/local/python/bin/elastalert-rule-from-kibana /usr/local/python/bin/elastalert-test-rule软连贯到/usr/bin下,方便使用ln -s /usr/local/python/bin/elastalert* /usr/bin应用官网文档:https://elastalert.readthedocs.io规定文档:https://elastalert.readthedocs.io/en/latest/ruletypes.html依据模板来写config.yamlcp config.yaml.example config.yamlvim config.yaml配置文件模板# 用来加载rule的目录,默认是example_rulesrules_folder: rules# 用来设置定时向elasticsearch发送申请,也就是告警执行的频率run_every: minutes: 1# 用来设置申请里工夫字段的范畴buffer_time: minutes: 15# elasticsearch的host地址es_host: 10.3.0.41# elasticsearch的端口es_port: 9200# elastalert产生的日志在elasticsearch中的创立的索引writeback_index: elastalert_status# 失败重试的工夫限度alert_time_limit: #days: 2 minutes: 15创立告警索引执行elastalert-create-index命令在ES创立索引,这不是必须的步骤,然而强烈建议创立。因为对于审计和测试很有用,并且重启ES不影响计数和发送alert.$ elastalert-create-index/usr/lib/python2.7/site-packages/elastalert-0.1.37-py2.7.egg/elastalert/create_index.py:65: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. data = yaml.load(config_file)Elastic Version:6Mapping used for string:{'type': 'keyword'}New index elastalert_status createdDone!Rule配置它通过将Elasticsearch与两种类型的组件(规定类型和警报)联合应用。定期查问Elasticsearch,并将数据传递到规定类型,该规定类型确定何时找到匹配项。产生匹配时,将为该警报提供一个或多个警报,这些警报将依据匹配采取行动。这是由一组规定配置的,每个规定定义一个查问,一个规定类型和一组警报。 ...

June 6, 2022 · 2 min · jiezi

关于elk:Docker启动ELK失败

启动Docker时报错, 提醒vm.max_map_count值太小 bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]更改零碎vm.max_map_count设置值 [root@localhost /]# sysctl -w vm.max_map_count=262144vm.max_map_count = 262144# 再次查看[root@localhost /]# sysctl -a | grep vm.max_map_countvm.max_map_count = 262144

May 26, 2022 · 1 min · jiezi

关于elk:Centos7一键部署elasticsearch脚本

在脚本外面配置信息即可 #!/bin/bashinstall_es(){#配置信息HOSTNAME=`hostname`#所有节点NODE_1=node-1NODE_2=node-2NODE_3=node-3NODE_1_IP=10.0.0.21NODE_2_IP=10.0.0.22NODE_3_IP=10.0.0.23#启动用户明码es_userES_USER_PASSWORD=123cd /etc cat >> sysctl.conf <<EOF vm.max_map_count=262144EOFsysctl -pcd /usr/lib/sysctl.d/ cat >> 00-system.conf <<EOFnet.ipv4.ip_forward=1EOFsystemctl restart networkulimit -ncd /etc/security/cat >> limits.conf <<EOF* soft nofile 65535* hard nofile 65535* hard nproc 4096* soft nproc 4096EOF#创立es用户(ELK都用自建用户启动)useradd es_user#批改es用户明码echo "${ES_USER_PASSWORD}" | passwd --stdin es_user#同一目录mkdir -p {/data/software,/data/modules}cd /data/software/file="elasticsearch-7.16.1-linux-x86_64.tar.gz"if [ ! -f $file ]; then yum install -y wget && wget -c wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.1-linux-x86_64.tar.gz #exit 0fi#解压elasticsearch安装包cd /data/softwaretar -zxvf elasticsearch-7.16.1-linux-x86_64.tar.gz -C /data/modules/cd /data/modulesmv elasticsearch-7.16.1 escd /data/modules/es/configcat > elasticsearch.yml << EOF#node-1配置文件# 集群名称cluster.name: my-application# 集群节点名称node.name: ${HOSTNAME}# ES默认 只容许本地 127.0.0.1 和[::1] 拜访# 也能够设置成0.0.0.0 容许所有IP主机拜访# 如果不配置就默认认为是开发者模式,如果配置不正确会写入正告然而能正确运行# 如果配置了就会认为进入了生产环境, 如果配置不正确就会降级为异样,ES无奈正确启动。network.host: 0.0.0.0# 默认ES节点端口9200,如果是伪集群(在一台服务器上搭建集群),须要批改。http.port: 9200# 设置数据寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.data: /data/modules/es/data/# 设置日志寄存门路,倡议批改这个门路到ES的装置文件夹里面,防止ES降级误删掉这个文件夹path.logs: /data/modules/es/log/# 发现其余节点主机配置 这里配置的是ES所在服务器的公网IP地址discovery.seed_hosts: ["${NODE_1_IP}:9300","${NODE_2_IP}:9300","${NODE_3_IP}:9300"]# 哪些节点能够被选举为主节点配置cluster.initial_master_nodes: ["${NODE_1}", "${NODE_2}","${NODE_3}"]EOF#配置内置JAVAcd /data/modules/es/bincat >> elasticsearch << EOFexport JAVA_HOME=/data/modules/es/jdkexport PATH=$JAVA_HOME/bin:$PATHEOFsleep 1s# 授予执行权限,modules文件夹权限受权给es_user 用户chmod u+x /data/modules/es/binchown -R es_user:es_user /data/modules/es# 将ES数据存储文件夹权限受权给es_user用户mkdir -p /data/modules/es/datachown -R es_user /data/modules/es/data# 将ES 日志存储文件夹权限受权给es_user用户mkdir -p /data/modules/es/log/chown -R es_user /data/modules/es/log/#端口firewall-cmd --zone=public --add-port=9200/tcp --permanent;firewall-cmd --zone=public --add-port=9300/tcp --permanent;firewall-cmd --zone=public --add-service=http --permanent;firewall-cmd --zone=public --add-service=https --permanent;firewall-cmd --reload;firewall-cmd --list-all;# 切换用户cd /data/modules/essu es_user}install_es手动启动./bin/elasticsearch

February 18, 2022 · 1 min · jiezi

关于ELK:ELKkafkafilebeatPrometheusGrafana

ELK+Kafka+FileBeat高可用集群环境筹备点击查看ELK对操作系统是否兼容点击查看ELK对JDK是否兼容信息列表ELK 是Elasticsearch ,Logstash, Kibana 的简称缩写,次要专一于可视化日志剖析和查问 Elastic Stack 次要包含三大部分: 海量数据存储和检索----- Elasticsearch 分布式存储和查问可视化界面和图表生成----Kibana 可提供可视化界面和各种图表的生成。可视化界面和图表生成----Kibana 可提供可视化界面和各种图表的生成。ELK 不过是Elastic Stack 用法中日志剖析栈的一部分 阐明: 不晓得你们有没有留神到,官网仿佛曾经无意在应用FileBeat 替换Logstash 采集日志了。Logstash 是由 Elastic 公司推出的一款开源的服务器端数据处理管道,可能同时从多个起源采集数据,转换数据,而后将数据发送指定的存储库中。Logstash 官网介绍。Filebeat 是 Elastic 公司为解决 Logstash “太重” 的问题推出的一款轻量级日志采集器,在解决数量泛滥的服务器、虚拟机和容器生成的日志时可应用 Logstash + Filebeat 的日志采集形式。Filebeat 官网介绍。架构图服务器IP主机名软件列表10.0.0.11Master-1Kibana,Prometheus+grafana,node_exporter10.0.0.12Master-2Kibana,kafka,zookeeper,node_exporter10.0.0.21Node-1Elasticsearch,Logstash,kafka,zookeeper,node_exporter10.0.0.22Node-2Elasticsearch,Logstash,kafka,zookeeper,node_exporter10.0.0.23Node-3Elasticsearch,Mysql,Nginx,redis,FileBeat,Logstashnode_exporter 软件应用版本 elasticsearch-7.16.1-linux-x86_64.tar.gzfilebeat-7.16.1-linux-x86_64.tar.gzlogstash-7.16.2-linux-x86_64.tar.gzkafka_2.13-3.0.0.tgzkibana-7.16.1-linux-x86_64.tar.gzprometheus-2.32.1.linux-amd64.tar.gzgrafana-enterprise-8.3.3.linux-amd64.tar.gz网盘链接 链接:https://pan.baidu.com/s/192mr...提取码:7777机器的配置都是 批改过程在Centos7 Linux 操作系统中,默认单个过程能够关上的最多文件数是1024 然而ES 对操作系统有些特殊要求 要求操作系统单个过程能够关上的最大文件数起码要达到65535.而且ES 将会应用很多线程,也须要批改下操作系统限度。如果不配置就会报错如下所示: bootstrap checks failed. You must address the points described in the following [3] lines before starting Elasticsearch.bootstrap check failure [1] of [3]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]bootstrap check failure [2] of [3]: max number of threads [3687] for user [elasticsearch] is too low, increase to at least [4096]bootstrap check failure [3] of [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]查看以后操作系统反对单个过程能够关上的最多文件数,返回值如果没批改会显示1024 ...

December 27, 2021 · 7 min · jiezi

关于elk:elk7151安装部署搭建

ELK简介 ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称(然而前期呈现的Filebeat(beats中的一种)能够用来代替Logstash的数据收集性能,比拟轻量级)。市面上也被成为Elastic Stack。 Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监督您指定的日志文件或地位,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。Filebeat的工作形式如下:启动Filebeat时,它将启动一个或多个输出,这些输出将在为日志数据指定的地位中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将汇集事件,并将汇集的数据发送到为Filebeat配置的输入。 Logstash是收费且凋谢的服务器端数据处理管道,可能从多个起源采集数据,转换数据,而后将数据发送到您最喜爱的“存储库”中。Logstash可能动静地采集、转换和传输数据,不受格局或复杂度的影响。利用Grok从非结构化数据中派生出构造,从IP地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。 Elasticsearch是Elastic Stack外围的分布式搜寻和剖析引擎,是一个基于Lucene、分布式、通过Restful形式进行交互的近实时搜寻平台框架。Elasticsearch为所有类型的数据提供近乎实时的搜寻和剖析。无论您是结构化文本还是非结构化文本,数字数据或天文空间数据,Elasticsearch都能以反对疾速搜寻的形式无效地对其进行存储和索引。 Kibana是一个针对Elasticsearch的开源剖析及可视化平台,用来搜寻、查看交互存储在Elasticsearch索引中的数据。应用Kibana,能够通过各种图表进行高级数据分析及展现。并且能够为Logstash和ElasticSearch提供的日志剖析敌对的 Web 界面,能够汇总、剖析和搜寻重要数据日志。还能够让海量数据更容易了解。它操作简略,基于浏览器的用户界面能够疾速创立仪表板(Dashboard)实时显示Elasticsearch查问动静 残缺日志零碎基本特征 收集:可能采集多种起源的日志数据 传输:可能稳固的把日志数据解析过滤并传输到存储系统 存储:存储日志数据 剖析:反对UI剖析 正告:可能提供错误报告,监控机制 装置jdk17环境 root@elk:~# mkdir jdkroot@elk:~# cd jdkroot@elk:~/jdk# wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gzroot@elk:~/jdk# tar xf jdk-17_linux-x64_bin.tar.gzroot@elk:~/jdk# cd ..root@elk:~#root@elk:~# mv jdk/ /root@elk:~# vim /etc/profileroot@elk:~#root@elk:~#root@elk:~# tail -n 4 /etc/profileexport JAVA_HOME=/jdk/jdk-17.0.1/export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarroot@elk:~#root@elk:~# source /etc/profileroot@elk:~# chmod -R 777 /jdk/创立elk文件夹,并下载所需包 root@elk:~# mkdir elkroot@elk:~# cd elkroot@elk:~/elk# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.1-linux-x86_64.tar.gzroot@elk:~/elk# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.15.1-linux-x86_64.tar.gzroot@elk:~/elk# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.15.1-linux-x86_64.tar.gz解压安装包 root@elk:~/elk# tar xf elasticsearch-7.15.1-linux-x86_64.tar.gzroot@elk:~/elk# tar xf kibana-7.15.1-linux-x86_64.tar.gzroot@elk:~/elk# tar xf logstash-7.15.1-linux-x86_64.tar.gzroot@elk:~/elk# lltotal 970288drwxr-xr-x 5 root root 4096 Oct 20 06:09 ./drwx------ 7 root root 4096 Oct 20 06:04 ../drwxr-xr-x 9 root root 4096 Oct 7 22:00 elasticsearch-7.15.1/-rw-r--r-- 1 root root 340849929 Oct 14 13:28 elasticsearch-7.15.1-linux-x86_64.tar.gzdrwxr-xr-x 10 root root 4096 Oct 20 06:09 kibana-7.15.1-linux-x86_64/-rw-r--r-- 1 root root 283752241 Oct 14 13:34 kibana-7.15.1-linux-x86_64.tar.gzdrwxr-xr-x 13 root root 4096 Oct 20 06:09 logstash-7.15.1/-rw-r--r-- 1 root root 368944379 Oct 14 13:38 logstash-7.15.1-linux-x86_64.tar.gz创立用户并设置权限 ...

October 22, 2021 · 3 min · jiezi

关于ELK:ELK79-及Kafka-222-安装与配置

一、Kafka 2.2.21、server.properties 配置文件broker.id=128listeners=PLAINTEXT://cwbg001:9092num.network.threads=3num.io.threads=4socket.send.buffer.bytes=1024000socket.receive.buffer.bytes=1024000socket.request.max.bytes=104857600log.dirs=/home/kafka/kafka_2.12-2.2.2/datanum.partitions=3num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000zookeeper.connect=192.168.32.128:2181zookeeper.connection.timeout.ms=6000group.initial.rebalance.delay.ms=3000二、Filebeat7.9.3 1、filebeat.ymlfilebeat.inputs:- type: log enabled: true paths: - /home/elastic/elasticsearch-7.9.3/logs/elasticsearch_server.json fields: log_topic: 'prod-app-service-name-app-prod' exclude_files: [".tar$",".tgz$",".gz$",".bz2$",".zip$"]filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false# output kafkaoutput.kafka: hosts: ["192.168.32.128:9092"] topic: '%{[fields.log_topic]}' partition.round_robin: reachable_only: true required_acks: 1 compression: gzip max_message_bytes: 1000000三、logstash 7.9.11、logstash.conf

July 31, 2021 · 1 min · jiezi

关于ELK:Centos6搭建ELK-02-安装使用Filebeat和Logstash

装置Filebeat官网文档:https://www.elastic.co/guide/... curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.13.3-x86_64.rpmsudo rpm -vi filebeat-7.13.3-x86_64.rpm配置文件门路 vim /etc/filebeat/filebeat.yml filebeat.config.modules: path: ${path.config}/modules.d/*.yml装置Logstash官网文档:https://www.elastic.co/cn/dow... vim /etc/yum.repos.d/logstash.repo[logstash-7.x]name=Elastic repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md装置 sudo yum install logstashrpm -ql logstash #查看装置目录ln -s /usr/share/logstash/bin/logstash /bin/ #创立软链接测试 logstash -e 'input { stdin { } } output { stdout {} }' #运行胜利后输出任意内容测试

July 21, 2021 · 1 min · jiezi

关于elk:CentOS7中搭建ELK分布式日志收集和分析-集群

介绍 体系结构 指标 在CentOS7中搭建ELK分布式日志治理;相熟ElasticSearch 集群配置;相熟Logstash+FileBeat数据采集配置;相熟Kibana可视化治理配置;环境 VMwareCentOS7Jdk 1.8elasticsearch-7.13.3-linux-x86_64.tar.gzkibana-7.13.3-linux-x86_64.tar.gzlogstash-7.13.3-linux-x86_64.tar.gzfilebeat-7.13.3-linux-x86_64.tar.gz剖析 ElasticSearch 集群构建 节点阐明192.168.157.120ES集群1192.168.157.121ES集群2Logstash + FileBeat 日志采集节点 节点阐明192.168.157.130日志节点192.168.157.131日志节点192.168.157.132日志节点Kibana 可视化治理 节点阐明192.168.157.122:5601可视化地址约定 下载寄存目录:/mysoft装置程序:ElasticSearch -> Kibana -> Logstash + filebeatElasticSearch 约定 模块内容软件装置地位/usr/local/elasticsearch集群端口9200集群名称ES数据文件寄存目录/usr/local/elasticsearch/data日志文件寄存目录/usr/local/elasticsearch/logs用户(非root)elastic明码(非root)elasticKibana 约定 模块内容软件装置地位/usr/local/Kibana本机端口5601本机地址192.168.157.122ES集群节点["http://192.168.157.120:9200","http://192.168.157.121:9200"]用户(非root)kibana明码(非root)kibanaLogstash +fileBeat 约定 模块内容Logstash装置地位/usr/local/elk/logstashFileBeat装置地位/usr/local/elk/fileBeat发送ES节点["http://192.168.157.120:9200","http://192.168.157.121:9200"]ElasticSearch 装置 通用操作进入目录cm /mysoft解压包tar zxvf elasticsearch-7.13.3-linux-x86_64.tar.gz挪动并批改名称mv elasticsearch-7.13.3 /usr/local/elasticsearchjdk问题解决vi /usr/local/elasticsearch/bin/elasticsearch-env用户与受权 # 创立用户useradd elastic# 设置明码passwd elastic# 赋予用户权限chown -R elastic:elastic /usr/local/elasticsearch/配置ES节点-1 #设置集群名称(集群名称,节点之间要保持一致)cluster.name: my-application#设置节点名称(节点名称,集群内要惟一 例:node-1 ,node-2)node.name: node-1# elasticsearch数据文件寄存目录path.data: /usr/local/elasticsearch/data# elasticsearch日志文件寄存目录path.logs: /usr/local/elasticsearch/logs#对所有IP凋谢network.host: 0.0.0.0# HTTP端口号http.port: 9200# ES集群地址discovery.seed_hosts: ["192.168.157.120", "192.168.157.121"]# ES集群节点cluster.initial_master_nodes: ["node-1", "node-2"]#跨域配置#action.destructive_requires_name: true配置ES节点-2 #设置集群名称(集群名称,节点之间要保持一致)cluster.name: my-application#设置节点名称(节点名称,集群内要惟一 例:node-1 ,node-2)node.name: node-2# elasticsearch数据文件寄存目录path.data: /usr/local/elasticsearch/data# elasticsearch日志文件寄存目录path.logs: /usr/local/elasticsearch/logs#对所有IP凋谢network.host: 0.0.0.0# HTTP端口号http.port: 9200# ES集群地址discovery.seed_hosts: ["192.168.157.120", "192.168.157.121"]# ES集群节点cluster.initial_master_nodes: ["node-1", "node-2"]#跨域配置#action.destructive_requires_name: true启动ES集群 ...

July 14, 2021 · 1 min · jiezi

关于ELK:Centos6搭建ELK-01-安装Elasticsearch

更换yum源CentOS 6曾经进行更新反对,同时官网也把yum源删除了,目前CentOS 6零碎应用yum命令装置软件包根本都是失败,因而须要更换yum源。 wget -O /etc/yum.repos.d/CentOS-Base.repo http://file.kangle.odata.cc/repo/Centos-6.repowget -O /etc/yum.repos.d/epel.repo http://file.kangle.odata.cc/repo/epel-6.repoyum makecache* 留神先备份一下原有的repo文件,免得出问题无奈复原 装置elasticsearch装置 yum install -y elasticsearch配置 vim /etc/elasticsearch/elasticsearch.ymlnode.name: master-nodepath.data: /data/elasticsearch/es-datapath.logs: /data/elasticsearch/es-loghttp.port: 9200vim /etc/elasticsearch/jvm.options-Xms1g-Xmx1g启动 开机启动 service elasticsearch startchkconfig elasticsearch on装置elasticsearch-head chrome浏览器插件下载地址https://files.cnblogs.com/fil... 查看端口占用 lsof -i:9100

July 10, 2021 · 1 min · jiezi

关于ELK:ELK-本地安装

1、下载EShttps://www.elastic.co/cn/dow...2、启动ES3、查看http://localhost:9200/4、下载logstashhttps://www.elastic.co/cn/dow...5、装置logstatsh5.1配置logstash input { tcp { port => "5044" codec => json } }output { elasticsearch { hosts => ["localhost:9200"] index => "document" } stdout { codec => rubydebug } }启动logstash D:\logstash-7.12.0\bin>logstash.bat -f ../config/logstash.conf装置logstash插件 D:\logstash-7.12.0\bin>logstash-plugin install 插件名6、下载kibanahttps://www.elastic.co/cn/dow...装置kibana,配置文件在config目录下 启动kibana 7、logback.xml配置 maven依赖 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.9</version> </dependency>logback.xml配置 <configuration> <springProperty name="LOG_PATH" source="logging.path" defaultValue="/usr/data/applicationName" /> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>127.0.0.1:5044</destination> <!-- <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" /> --> <!-- 日志输入编码 --> <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "severity": "%level", "service": "applicationName", "thread": "%thread", "class": "%logger{40}", "msg": "%message" } </pattern> </pattern> </providers> </encoder> </appender> <root level="ERROR"> <appender-ref ref="LOGSTASH" /> </root></configuration>注意事项,装置目录最好不要有中文字符 ...

April 14, 2021 · 1 min · jiezi

关于ELK:ESElasticsearch集群常见问题Unassigned

问题一、索引呈现Unassigned问题如图问题呈现起因:因为该索引的主分片的正本未调配胜利导致。(根本原因应该是内存缓和)解决形式:1.确定有问题的索引列表(通过kibana查看:Kibana提供了Console UI来通过REST API与Elasticsearch交互,Console位于Kibana的Dev Tools栏下。) #查问索引列表及状态 GET /_cat/shards?v&h=index,shard,prirep,state,unassigned.reason #查问后果如下index shard prirep state unassigned.reason gaczrk 4 p STARTED gaczrk 4 r UNASSIGNED CLUSTER_RECOVERED gaczrk 2 p STARTED gaczrk 2 r UNASSIGNED CLUSTER_RECOVERED gaczrk 1 p STARTED#起因INDEX_CREATED: 因为创立索引的API导致未调配。CLUSTER_RECOVERED: 因为齐全集群复原导致未调配。INDEX_REOPENED: 因为关上open或敞开close一个索引导致未调配。DANGLING_INDEX_IMPORTED: 因为导入dangling索引的后果导致未调配。NEW_INDEX_RESTORED: 因为复原到新索引导致未调配。EXISTING_INDEX_RESTORED: 因为复原到已敞开的索引导致未调配。REPLICA_ADDED: 因为显式增加正本分片导致未调配。ALLOCATION_FAILED: 因为分片调配失败导致未调配。NODE_LEFT: 因为承载该分片的节点来到集群导致未调配。REINITIALIZED: 因为当分片从开始挪动到初始化时导致未调配(例如,应用影子shadow正本分片)。REROUTE_CANCELLED: 作为显式勾销从新路由命令的后果勾销调配。REALLOCATED_REPLICA: 确定更好的正本地位被标定应用,导致现有的正本调配被勾销,呈现未调配。# 2.查问单个索引配置信息GET /driver-2021.03.03/_settings# 后果如下{ "driver-2021.03.04" : { "settings" : { "index" : { "refresh_interval" : "5s", "number_of_shards" : "1", "provided_name" : "driver-2021.03.04", "creation_date" : "1614729630195", "number_of_replicas" : "1", "uuid" : "vUOn0P-9TkKCojmsEEjCdg", "version" : { "created" : "7060199" } } } }}#3.查问单个索引分片信息GET /driver-2021.03.04/_search_shards#后果如下:{ "nodes" : { "qKQnEdF6TMePf9GLiH-4Ng" : { "name" : "es-node2", "ephemeral_id" : "ksU4VNkhR4iMI-mPHOLu0Q", "transport_address" : "", "attributes" : { "ml.machine_memory" : "33531363328", "xpack.installed" : "true", "ml.max_open_jobs" : "20" } } }, "indices" : { "driver-2021.03.04" : { } }, "shards" : [ [ { "state" : "STARTED", "primary" : true, "node" : "qKQnEdF6TMePf9GLiH-4Ng", "relocating_node" : null, "shard" : 0, "index" : "driver-2021.03.04", "allocation_id" : { "id" : "q3luk6zmSw29aO16ZplWXw" } } ] ]}##联合2,3剖析:## number_of_shards(每个索引的主分片数) 1## number_of_replicas(每个主分片的正本数)1## 分片所占节点数=正本数+1理论节点数就只有一个,所以是索引的正本未调配 解决形式:重新分配正本数即.重置正本数 ...

March 4, 2021 · 1 min · jiezi

关于ELK:ELK

[client] vi /etc/rsyslog.conf <code># rsyslog configuration file manager by ansble#### MODULES ####$ModLoad imuxsock$ModLoad imjournal$ModLoad imklog#### GLOBAL DIRECTIVES ####$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Use default timestamp format$WorkDirectory /var/lib/rsyslog # Where to place auxiliary files$IncludeConfig /etc/rsyslog.d/*.conf # Include all config files in /etc/rsyslog.d/$MaxMessageSize 128k$OmitLocalLogging on$IMJournalStateFile imjournal.state#### RULES ##### ### begin forwarding rule ###$ActionQueueFileName fwdRule1 # unique name prefix for spool files$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)$ActionQueueSaveOnShutdown on # save messages to disk on shutdown$ActionQueueType LinkedList # run asynchronously$ActionResumeRetryCount -1 # infinite retries if host is down*.* @@10.1.100.12:514# ### end of the forwarding rule ###</code>systemctl restart rsyslogsystemctl status rsyslog[server]==rsyslog==mkdir -p /var/log/LOGSfirewall-cmd --add-rich-rule='rule family="ipv4" source address="10.1.0.0/16" port port="514" protocol="tcp" accept' --permanentvi /etc/rsyslog.conf<code>$MaxMessageSize 128k$ModLoad imuxsock.so$ModLoad imklog.so$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat$SystemLogRateLimitInterval 0$SystemLogRateLimitBurst 0$ModLoad imtcp$InputTCPServerRun 514:msg,contains,"GET /daemon.php?tableid" ~:rawmsg,contains,"ASKMQ-WORKER 29" ~# Standard System Services$template DYNmessages,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages"$template DYNsecure,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/secure"$template DYNmaillog,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/maillog"$template DYNcron,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron"$template DYNspooler,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/spooler"$template DYNboot,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/boot.log"$template DYNiptables,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/iptables.log"$template DYNaudit,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/audit.log"$template DYNapache-access,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/apache-access.log"$template DYNapache-error,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/apache-error.log"if $programname == 'apache-access' then ?DYNapache-access&~if $programname == 'apache-error' then ?DYNapache-error&~if $programname == 'audispd' then ?DYNaudit&~if $msg contains 'iptables:' then ?DYNiptables&~if $syslogseverity <= '6' and ( $syslogfacility-text != 'mail' and $syslogfacility-text != 'authpriv' and $syslogfacility-text != 'cron') then ?DYNmessagesif $syslogfacility-text == 'authpriv' then ?DYNsecureif $syslogfacility-text == 'mail' then -?DYNmaillogif $syslogfacility-text == 'cron' then ?DYNcronif ( $syslogfacility-text == 'uucp' or $syslogfacility-text == 'news' ) and $syslogseverity-text == 'crit' then ?DYNspoolerif $syslogfacility-text == 'local7' then ?DYNboot</code>systemctl restart rsyslogsystemctl status rsyslogll /var/log/LOGS==logstash==参考文档https://www.elastic.co/cn/downloads/logstashrpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchvi /etc/yum.repos.d/logstash.repo<code>[logstash-7.x]name=Elastic repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md</code>yum install logstashvi /etc/systemd/system/logstash.service<code>#User=logstash#Group=logstashUser=rootGroup=root</code>vi /etc/logstash/jvm.options<code># Xms represents the initial size of total heap space# Xmx represents the maximum size of total heap space-Xms8g-Xmx24g</code>systemctl start logstashsystemctl status logstashvi /etc/logstash/conf.d/apache.conf <code>input { file { type => "syslog" path => [ "/var/log/LOGS/**/cron", "/var/log/LOGS/**/messages", "/var/log/LOGS/**/secure" ] start_position => "beginning" exclude => ["*.gz"] } file { type => "apache-access" path => [ "/var/log/LOGS/**/apache-access.log" ] start_position => "beginning" exclude => ["*.gz"] } file { type => "apache-error" path => [ "/var/log/LOGS/**/apache-error.log" ] start_position => "beginning" exclude => ["*.gz"] }}filter { if [type] == "apache-access" { grok { match => { "message" => "%{SYSLOGTIMESTAMP} %{SYSLOGHOST:webserver} %{SYSLOGPROG}: %{HOSTNAME:host} \"%{GREEDYDATA:X-Forwarded-For}\" %{IPORHOST:HA_IP} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response:int} (?:%{NUMBER:bytes:int}|-) \"%{GREEDYDATA:referrer}\" \"%{GREEDYDATA:agent}\""} } if [X-Forwarded-For] == "-" { drop {} } mutate { remove_field => [ "message"] split => { "X-Forwarded-For" => ", " } } geoip { source => "X-Forwarded-For" } date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] remove_field => ["timestamp"] } } if [type] == "apache-error" { grok { match => { "message" => "%{SYSLOGTIMESTAMP} %{SYSLOGHOST:hostname} %{DATA}: \[%{HTTPDERROR_DATE:timestamp}\] \[%{LOGLEVEL:loglevel}\] (?:\[client %{IPORHOST:clientip}\] ){0,1}%{GREEDYDATA:error_message}" } } date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] } mutate { rename => ["hostname", "host"] } }}</code>vi /etc/logstash/conf.d/output.conf<code>output { elasticsearch { hosts => ["127.0.0.1:9200"] index => "logstash-%{type}-%{+YYYY.MM.dd}" template_overwrite => true }}</code>===elasticsearch===参考: https://www.elastic.co/cn/downloads/elasticsearchrpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchvi /etc/yum.repos.d/elasticsearch.repo <code>[elasticsearch]name=Elasticsearch repository for 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=0autorefresh=1type=rpm-md</code>yum install --enablerepo=elasticsearch elasticsearchvi /etc/elasticsearch/elasticsearch.yml<code>cluster.name: gwj-elknode.name: gwj-logpath.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchbootstrap.memory_lock: truenetwork.host: 0.0.0.0http.port: 9200cluster.initial_master_nodes: ["gwj-log"]</code>vi /etc/elasticsearch/jvm.options<code># Xms represents the initial size of total heap space# Xmx represents the maximum size of total heap space-Xms4g-Xmx4g</code>vi /etc/security/limits.conf<code>elasticsearch soft memlock unlimitedelasticsearch hard memlock unlimited</code>systemctl edit elasticsearch<code>[Service]LimitMEMLOCK=infinity</code>systemctl restart elasticsearchsystemctl status elasticsearchnetstat -tlncurl http://localhost:9200<code>{ "name" : "gwj-log", "cluster_name" : "gwj-elk", "cluster_uuid" : "8KPET2yDSCaQwfwncWSTQQ", "version" : { "number" : "7.10.0", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96", "build_date" : "2020-11-09T21:30:33.964949Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search"}</code>查看是否生成索引ls -lh /var/lib/elasticsearch/nodes/0/indices/http://10.1.100.12:9200/_cat/indices?v===kibana===参考: https://www.elastic.co/guide/en/kibana/current/install.htmlrpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchvi /etc/systemd/system/kibana.service<code>[Unit]Description=Kibana[Service]Type=simpleUser=kibanaGroup=kibana# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.# Prefixing the path with '-' makes it try to load, but if the file doesn't# exist, it continues onward.EnvironmentFile=-/etc/default/kibanaEnvironmentFile=-/etc/sysconfig/kibanaExecStart=/usr/share/kibana/bin/kibanaRestart=on-failureRestartSec=3StartLimitBurst=3StartLimitInterval=60WorkingDirectory=/[Install]WantedBy=multi-user.target</code>yum install kibanasystemctl restart kibanasystemctl status kibanakibana - management - stack managementkibana - Index Patterns - create index pattern http://10.1.100.12:9200/_cat/indices?v

February 23, 2021 · 3 min · jiezi

关于elk:ELK-Filebeat-搭建日志系统

之前也介绍过 开源组件ELK日志系统配置与治理明天也聊一聊 ELK + Filebeat 搭建日志零碎 Elasticsearch分布式搜寻和剖析引擎。具备高可伸缩、高牢靠和易治理等特点。基于 Apache Lucene 构建,能对大容量的数据进行靠近实时的存储、搜寻和剖析操作。 Logstash日志收集器。收集各种数据源,并对数据进行过滤、剖析、格式化等操作,而后存储到 Elasticsearch。 Kibana数据分析和可视化平台。与 Elasticsearch 配合应用,对其中数据进行搜寻、剖析、图表展现。 Filebeat一个轻量级开源日志文件数据收集器,Filebeat 读取文件内容,发送到 Logstash 进行解析后进入 Elasticsearch,或间接发送到 Elasticsearch 进行集中式存储和剖析。 架构介绍基于ELK的应用形式,Logstash 作为日志收集器,Elasticsearch 进行日志存储,Kibana作为日志出现,大抵以下几种架构。 架构一 图中 Logstash 多个的起因是思考到程序是分布式架构的状况,每台机器都须要部署一个 Logstash,如果的确是单服务器的状况部署一个 Logstash 即可。 后面提到 Logstash 会对数据进行剖析、过滤、格式化等操作,这一系列操作对服务器的 CPU 和内存资源的耗费都是比拟高的,所以这种架构会影响每台服务器的性能,所以并不举荐采纳。 架构二 相比于架构一,减少了一个MQ 和 Logstash, Logstash 的输入和输出反对 Kafka、Redis、RabbitMQ 等常见音讯队列, MQ 前的 Logstash 只作为日志收集和传输,并不解析和过滤,先将日志退出队列,由 MQ 前面的 Logstash 持续解析和过滤,这样就不至于每台服务器耗费资源都很多。 架构三 这种架构是基于架构二简化来的,理论在应用过程中也是能够采取的,日志间接进入 MQ,Logstash 生产 MQ 数据即可。 架构四 这种架构在日志数据源和 Logstash(或 Elasticsearch) 中减少了 Beats 。Beats 汇合了多种繁多用处数据采集器,每款采集器都是以用于转发数据的通用库 libbeat 为基石,beat 所占的零碎CPU和内存简直能够忽略不计,libbeat平台还提供了检测机制,当上游服务器负载高或网络拥挤时,会主动升高产生速率。上面的例子咱们应用 Filebeat 来对文件日志的收集,其余的 beat 能够疏忽。 ...

November 25, 2020 · 2 min · jiezi

关于elk:集中日志系统ELK

作用以前都是登陆到每个机器去看日志,特地是一个服务有多个机器集群部署,还要下载多个机器的日志(运维下载日志,而后给开发排查问题),当初elk是集中式日志零碎,所有的我的项目和我的项目集群都在一个日志零碎里,而且能够搜寻。 界面 组成L是收集日志,还有解析日志 E是搜索引擎,就是ElasticSearch K就是界面 流程原始日志(L的客户端)——收集和解析日志(L的服务器端)——搜索引擎(E)——界面展现(K) 解释1.收集日志和解析日志 收集日志就是客户端到服务器,就是把L客户端装置到部署我的项目的机器,而后读原始日志文件,再写到L的服务器端。这是收集日志,就是:原始日志文件——L的客户端——L的服务器。 L的服务器还要解析日志,次要是解析为固定的几个字段,比方工夫、IP(哪个机器的日志)、日志自身的内容、我的项目名字(哪个我的项目的日志)。这几个固定字段是搜索引擎须要的字段。 2.搜索引擎 方才解析之后的字段,再写给搜索引擎。 3.界面 filebeat为什么要用filebeat,因为L的客户端性能不好,影响部署我的项目的机器,所以换了filebeat作为L的客户端,作用和L的客户端一样,都是收集日志,实质就是先读原始日志文件,而后再写到L的服务器。这就是filebeat的作用,对部署我的项目的机器无影响。 kafka为什么要用kafka,因为日志产生和日志生产的速度不匹配,还有因为网络起因,可能会导致数据失落,所以才要加消息中间件,因为消息中间件能够缓存海量数据,并且数据不会失落(失落可能性极小,不会大量失落数据)。 架构图的演变只有ELK L的客户端没有应用filebeat。 换了filebeat L的客户端换成了filebeat。 加了消息中间件 双层L 从左往右看 从右往左看 第一层L作用只是分流,第二层L作用是解析为固定几个字段。 参考https://mp.weixin.qq.com/s/F8...https://www.cnblogs.com/wangx... https://blog.qiniu.com/archiv... https://jusene.github.io/2018...

October 3, 2020 · 1 min · jiezi

关于elk:太赞了大佬竟然用ELK搭建起了支撑TB级的日志监控系统

起源:_https://www.cnblogs.com/dengb...本文次要介绍怎么应用 ELK Stack 帮忙咱们打造一个撑持起日产 TB 级的日志监控零碎。在企业级的微服务环境中,跑着成千盈百个服务都算是比拟小的规模了。在生产环境上,日志扮演着很重要的角色,排查异样须要日志,性能优化须要日志,业务排查须要业务等等。 然而在生产上跑着成千盈百个服务,每个服务都只会简略的本地化存储,当须要日志帮助排查问题时,很难找到日志所在的节点。也很难开掘业务日志的数据价值。 那么将日志对立输入到一个中央集中管理,而后将日志解决化,把后果输入成运维、研发可用的数据是解决日志治理、帮助运维的可行计划,也是企业迫切解决日志的需要。 咱们的解决方案 通过下面的需要咱们推出了日志监控零碎,如上图: 日志对立收集、过滤荡涤。生成可视化界面、监控,告警,日志搜寻。 性能流程概览如上图:在每个服务节点上埋点,实时采集相干日志。对立日志收集服务、过滤、荡涤日志后生成可视化界面、告警性能。咱们的架构 ①日志文件采集端咱们应用 FileBeat,运维通过咱们的后盾治理界面化配置,每个机器对应一个 FileBeat,每个 FileBeat日志对应的 Topic 能够是一对一、多对一,依据日常的日志量配置不同的策略。 除了采集业务服务日志外,咱们还收集了 MySQL 的慢查问日志和谬误日志,还有别的第三方服务日志,如:Nginx 等。 最初联合咱们的自动化公布平台,主动公布并启动每一个 FileBeat 过程。 ②调用栈、链路、过程监控指标咱们应用的代理形式:Elastic APM,这样对于业务侧的程序无需任何改变。 对于曾经在经营中的业务零碎来说,为了退出监控而须要改变代码,那是不可取的,也是无奈承受的。 Elastic APM 能够帮咱们收集 HTTP 接口的调用链路、外部办法调用栈、应用的SQL、过程的 CPU、内存应用指标等。 可能有人会有疑难,用了 Elastic APM,其它日志根本都能够不必采集了。还要用 FileBeat 干嘛? 是的,Elastic APM 采集的信息的确能帮咱们定位 80% 以上的问题,然而它不是所有的语言都反对的比方:C。 其二、它无奈帮你采集你想要的非 Error 日志和所谓的要害日志,比方:某个接口调用时出了错,你想看出错工夫点的前后日志;还有打印业务相干不便做剖析的日志。 其三、自定义的业务异样,该异样属于非零碎异样,属于业务领域,APM 会把这类异样当成零碎异样上报。 如果你前面对系统异样做告警,那这些异样将会烦扰告警的准确度,你也不能去过滤业务异样,因为自定义的业务异样品种也不少。 ③同时咱们对 Agent 进行了二开。采集更具体的 GC、堆栈、内存、线程信息。 ④服务器采集咱们采纳普罗米修斯。 ⑤因为咱们是 Saas 服务化,服务 N 多,很多的服务日志做不到对立规范化,这也跟历史遗留问题无关,一个与业务零碎无关的零碎去间接或间接地去对接已有的业务零碎,为了适配本人而让其更改代码,那是推不动的。 牛逼的设计是让本人去兼容他人,把对方当成攻打本人的对象。很多日志是没有意义的,比方:开发过程中为了不便排查跟踪问题,在 if else 里打印只是有标志性的日志,代表是走了 if 代码块还是 else 代码块。 ...

July 24, 2020 · 1 min · jiezi