ELKそれは何ですか?
一般的には、サービスの可用性を向上させるためには、サーバが複数のインスタンスを配置する必要があり、各インスタンスは、負荷を分散した後に転送されますが、また、昔ながらの方法では、エラーログは非常に可能性が尾-f xxx.logへのログインサーバーではない場合現在のサーバーに表示されて、あなたはまた、あなたが問題を見つけるためにログを見つけるまで、このプロセスを繰り返す必要があります。幸いなことに、2つのまたは3つのユニット、そのインスタンスの数百?人間と時々貧しいです。この時点ではELKデビュー、その後、何ELKはい?
ELKはElasticsearch(インデックスベース)/ Logstash(インデックスライブラリへのログフィルタを保存)/ Kibana(フロントエンドツールのログを参照)を含む、フルテキスト検索システムのログを配布されます
この記事の説明
モノマー構造のこの選択は、複数の成分がモノマー形態で展開され、(含むELKアセンブリであるElasticsearch
、)Logstash
、根拠がある(logbackインターフェース実装)カフカクライアントクライアントがこれらの構成要素の統合によって完成されますここで使用されるログビルモノマー系がダウンロードされ、直接取り付けるのではなく、基準部が配置されていてもよいですKibana
Zookeeper
Kafka
tar.gz
システムアーキテクチャは以下の通りであります
カフカは、ログを書いて、過度防止、バッファ層でください本明細書中で使用される、両方のデータ書き込み速度は、によって引き起こさelasticsearchのlogstashと損失を維持するために
フォローアップでは、ヘラジカクラスタレベルのデモ版をドッキングウィンドウ-構成なので、お楽しみポイントもたらすでしょう!
環境の準備
- Ubuntuのサーバ18.04.2を使用すると、十分なメモリとハードディスクの空き容量があることを確認して、(なぜならすべてにsystemdの、CentOSに7に置き換えることができます)
- ELK 7.1.1
- Kafka_2.12-2.2.0
- 飼育係は、カフカ自身を使用します
- 世代のデモ、コードをログに記録し、https://github.com/HellxZ/LogDemoを参照してください>
問題の概要
問題の概要を参照してください概要ELKを構築する過程で発生する問題と解決策、私は基本的にプロセスをテストELKの質問が解決されました
カフカの問題は、ネットワークが接続できない外、を参照してください。
ビル・プロセス
以下の相対的な位置は、ファイルをダウンロードされますので、予めご了承ください。nohupを別の紙に帰り道を使用し、各コマンドを終了するには、Ctrl + Cを使用して実行された後の処理には影響しません、[ログの表示xxx.out -f尾を使用
設定Elasticsearch
tar zxvf elasticsearch-7.1.1-linux-x86_64.tar.gz # 解压
mkdir single-elk # 创建目录改名移动
mv elasticsearch-7.1.1 single-elk/elasticsearch
cd single-elk/elasticsearch && vim config/elasticsearch.yml # 进入配置文件夹,修改es配置文件
# 要修改的内容有
# 1.放开node.name注释,节点名可DIY
node.name: node-1
# 2.放开network.host,修改ip为当前服务器ip或0.0.0.0,供外部访问
network.host: 0.0.0.0
# 3.放开cluster.initial_master_nodes,指定当前node.name名称即可
cluster.initial_master_nodes: ["node-1"] #与node.name保持一致
bootstrap.memory_lock: true #锁内存,防止内存占用过大,官方推荐使用系统内存的一半,但不要达到32GB
# 保存退出
ES_JAVA_OPTS="-Xms512m -Xmx512m" bin/elasticsearch -d # 后台启动es,默认绑定端口号9200和9300,接口访问9200测试,9300为es集群之间通信
ログインするように求められたら
ERROR: [1] bootstrap checks failed [1]: memory locking requested for elasticsearch process but memory is not locked
現在のホストエスが1G以上に割り当てることができる場合は、提供することができない
bootstrap.memory_lock: true
テスト環境と言う当然ここで、;など他の公式勧告の-Xmx -Xmsのトップとして、正式な環境やメモリを制限する必要性を50%、システムメモリによって占有されていますが、 32Gを超えないようにしてください。これで問題が解決しない場合は、ES_JAVA_OPTSによって制限される場合があり、ご参照くださいhttps://www.cnblogs.com/hellxz/p/11009634.htmlを
ブラウザのアクセスhttp://192.168.87.133:9200/(自発的にIP交換してください)
唯一の5つの個別のメンテナンスリリースにgithubの最新版ではオプションelasticsearchヘッドビューはまだ76を持っていない、と一般的に利用できるので、公式問題に、当局者は、各断片化をESことを除いて、一時的にアップグレードする意欲を表明していませんおよびその他の情報が一致しません。。。道への関心の欠如を見て、プラグインとしてインストールされたES、プラグイングーグル・クロムの使用は、使用しないでください
飼育係の構成とカフカ
tar -zxvf kafka_2.12-2.2.0.tgz
mv kafka_2.12-2.2.0 single-elk/kafka
cd single-elk/kafka; vim config/zookeeper.properties #修改下data-dir就可以了,保存退出
vim config/server.properties #修改kafka配置
#需要修改内容如下
listeners=PLAINTEXT://kafka:9092
advertised.listeners=PLAINTEXT://kafka:9092
#保存退出
#编辑/etc/hosts,在hosts文件中追加kafka映射,注意是内网ip需要替换
192.168.87.133 kafka #其实写127.0.0.1也行 ==
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper.out & #启动zookeeper,出现绑定端口号即成功
nohup bin/kafka-server-start.sh config/server.properties > kafka.out & #启动kafka
#日志中出现started即成功
ここでキーに飼育係に登録されたドメイン名の変更IPを使用するために必要な外部ネットワークへのアクセスは、ドメイン名が含まれている場合、それは本明細書中で使用され、道の/ etc / hostsファイルを変更することであるためである、私は他の人を知らないカフカを書くことは、これを解決する方法であります問題、あなたは以下のコメントを歓迎するためのより良い方法を持っている場合!
設定Logstash
tar zxvf logstash-7.1.1.tar.gz # 解压
mv logstash-7.1.1 single-elk/logstash
cd single-elk/logstash
vim config/logstash.conf # 创建配置文件,设置参数可参考logstash.sample.conf,详情见官网
カスタム構成ファイルを使用して、起動時に指定する必要があります。
# logstash.conf
# 本人配置的是使用kafka做了一层缓冲层,这个不用我多说了,请按需配置
input {
kafka {
bootstrap_servers => "192.168.87.133:9092"
topics => ["all_logs"]
group_id => "logstash"
codec => json
}
}
# 过滤器我没有配置,目前只是先看看效果
filter {
}
output {
elasticsearch {
hosts => ["192.168.87.133:9200"]
index => "all-logs-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
stdout {
codec => rubydebug
}
}
保存して終了
nohup bin/logstash -f config/logstash.conf > logstash.out & #后台启动Logstash
ソウログが表示されSuccessfully started Logstash API endpoint {:port=>9600}
正常に起動することを、
配置Kibana
# Kibana是基于node.js的前端项目,不过我测试服务器没装node.js也正常启动,看来ELK这些都自带了依赖环境
tar zxvf kibana-7.1.1-linux-x86_64.tar.gz
mv kibana-7.1.1-linux-x86_64 single-elk/kibana
cd single-elk/kibana && vim config/kibana.yml
#kibana.yml 以下配置均为解开注释,修改而成,使用搜索修改
# 指定kibana占用端口号,如无其它端口需要,可以不开启,默认5601
server.port: 5601
# 指定kibana绑定的ip地址,这里写kibana所在的ip即可
server.host: "192.168.87.133"
# es节点的ip地址
elasticsearch.hosts: ["http://192.168.87.133:9200"]
# kibana.index是kibana在es中创建的索引,会保存搜索记录,无需改变
kibana.index: ".kibana"
# 设置查询es超时时间,单位为milliseconds必须为整数
elasticsearch.requestTimeout: 30000
# 其余按需配置
# 中文化
i18n.locale: "zh-CN"
#保存退出
nohup bin/kibana > kibana.out & # 后台启动kibana
表示されるServer running at http://192.168.87.133:5601"
類似した単語を、訪問を完了するために、起動してご覧ください
設定のテストコード
使用代码的环境需要设置hosts文件,映射到kafka为刚才的ip,我的是192.168.87.133 kafka
项目是springboot的直接启动DemoApplication就好,还可以通过访问TestController中的方法来生产日志。
Connection to node -1 could not be established. Broker may not be available.
出现这个问题请参考【Kafka问题解决】Connection to xxx could not be established. Broker may not be available.检查配置文件。
如需修改kafka的映射名称,记得修改logback-spring.xml中的<producerConfig>bootstrap.servers=your-kafka-domain:kafka-port
查看效果
使用Elasticsearch-head
进入google-chrome的Elasticsearch-head插件,连接项目我们可以简单看到多出了几个绿色的0
当然了,由于这个插件官方没有对Elasticsearch 7.X进行优化支持,显示的图并不准确,好在我们可以看到索引和数据浏览
我的虚拟机没内存了。。所以集群状态变成yellow了,仅为只读状态,大家可以通过在配置文件中限制es的内存,默认是1G的。官方建议设置内存为系统内存的一半,但不要超过32GB,且最大内存与最小内存最好相等防止经常GC,参考自config/elasticsearch.yml
启动es的时候就需要指定内存参数, 如
ES_JAVA_OPTS="-Xms512m -Xmx512m" bin/elasticsearch -d
使用kibana
此时我已经修复了内存不够的问题,配置文件也在上边更新了,大家可以放心测试
访问 <你的kibana-ip:5601> 我的是<192.168.87.133:5061>
Kibana默认是不会给我们添加展示的索引的,需要我们去匹配,这里我们去添加
下一步,选择@timestamp或者其它,我这里选择@timestamp,然后创建索引模式即可
索引创建完成,我们去仪表盘查看下,点这个Discover
结束
最近在做ELK日志系统这块,还做了个demo级的docker-compose的ELK集群,因为生产环境我们是不会将多个es和多个kafka放在同一台机器上的。稍后我会整理下发上来,供大家借鉴。