ELK6.5.0+Filebeat ๆ—ฅๅฟ—็ณป็ปŸ้ƒจ็ฝฒ

ๅšๅฎขไฝœ่€…๏ผš่”็ณป่ฏท็‚นๅ‡ป๏ผŒๆฌ่ฟไธๆ˜“๏ผŒๅธŒๆœ›่ฏทไฝœ่€…ๅ–ๅ’–ๅ•ก๏ผŒๅฏไปฅ็‚นๅ‡ป่”็ณปๅšๅฎขไฝœ่€…

1. ๅผ•่จ€

  • Elasticsearchๆ˜ฏๅฎžๆ—ถๅ…จๆ–‡ๆœ็ดขๅ’Œๅˆ†ๆžๅผ•ๆ“Ž๏ผŒๆไพ›ๆœ้›†ใ€ๅˆ†ๆžใ€ๅญ˜ๅ‚จๆ•ฐๆฎไธ‰ๅคงๅŠŸ่ƒฝ๏ผ›ๆ˜ฏไธ€ๅฅ—ๅผ€ๆ”พRESTๅ’ŒJAVA API็ญ‰็ป“ๆž„ๆไพ›้ซ˜ๆ•ˆๆœ็ดขๅŠŸ่ƒฝ๏ผŒๅฏๆ‰ฉๅฑ•็š„ๅˆ†ๅธƒๅผ็ณป็ปŸใ€‚ๅฎƒๆž„ๅปบไบŽApache Luceneๆœ็ดขๅผ•ๆ“Žๅบ“ไน‹ไธŠใ€‚

  • Logstashๆ˜ฏไธ€ไธช็”จๆฅๆœ้›†ใ€ๅˆ†ๆžใ€่ฟ‡ๆปคๆ—ฅๅฟ—็š„ๅทฅๅ…ทใ€‚ๅฎƒๆ”ฏๆŒๅ‡ ไนŽไปปไฝ•็ฑปๅž‹็š„ๆ—ฅๅฟ—๏ผŒๅŒ…ๆ‹ฌ็ณป็ปŸๆ—ฅๅฟ—ใ€้”™่ฏฏๆ—ฅๅฟ—ๅ’Œ่‡ชๅฎšไน‰ๅบ”็”จ็จ‹ๅบๆ—ฅๅฟ—ใ€‚ๅฎƒๅฏไปฅไปŽ่ฎธๅคšๆฅๆบๆŽฅๆ”ถๆ—ฅๅฟ—๏ผŒ่ฟ™ไบ›ๆฅๆบๅŒ…ๆ‹ฌ syslogใ€ๆถˆๆฏไผ ้€’๏ผˆไพ‹ๅฆ‚ RabbitMQ๏ผ‰ๅ’ŒJMX๏ผŒๅฎƒ่ƒฝๅคŸไปฅๅคš็งๆ–นๅผ่พ“ๅ‡บๆ•ฐๆฎ๏ผŒๅŒ…ๆ‹ฌ็”ตๅญ้‚ฎไปถใ€websocketsๅ’ŒElasticsearchใ€‚

  • Kibanaๆ˜ฏไธ€ไธชๅŸบไบŽWeb็š„ๅ›พๅฝข็•Œ้ข๏ผŒ็”จไบŽๆœ็ดขใ€ๅˆ†ๆžๅ’Œๅฏ่ง†ๅŒ–ๅญ˜ๅ‚จๅœจ ElasticsearchๆŒ‡ๆ ‡ไธญ็š„ๆ—ฅๅฟ—ๆ•ฐๆฎใ€‚ๅฎƒๅˆฉ็”จElasticsearch็š„RESTๆŽฅๅฃๆฅๆฃ€็ดขๆ•ฐๆฎ๏ผŒไธไป…ๅ…่ฎธ็”จๆˆทๅˆ›ๅปบไป–ไปฌ่‡ชๅทฑ็š„ๆ•ฐๆฎ็š„ๅฎšๅˆถไปช่กจๆฟ่ง†ๅ›พ๏ผŒ่ฟ˜ๅ…่ฎธไป–ไปฌไปฅ็‰นๆฎŠ็š„ๆ–นๅผๆŸฅ่ฏขๅ’Œ่ฟ‡ๆปคๆ•ฐๆฎใ€‚

  • Filebeatๆ˜ฏๆœฌๅœฐๆ–‡ไปถ็š„ๆ—ฅๅฟ—ๆ•ฐๆฎ้‡‡้›†ๅ™จใ€‚ ไฝœไธบๆœๅŠกๅ™จไธŠ็š„ไปฃ็†ๅฎ‰่ฃ…๏ผŒFilebeat็›‘่ง†ๆ—ฅๅฟ—็›ฎๅฝ•ๆˆ–็‰นๅฎšๆ—ฅๅฟ—ๆ–‡ไปถ๏ผŒtail file๏ผŒๅนถๅฐ†ๅฎƒไปฌ่ฝฌๅ‘็ป™Elasticsearchๆˆ–Logstash่ฟ›่กŒ็ดขๅผ•ใ€kafka ็ญ‰ใ€‚

1.1 ็ผ–ๅ†™็›ฎ็š„

ELK ไธๆ˜ฏไธ€ๆฌพ่ฝฏไปถ๏ผŒ่€Œๆ˜ฏ Elasticsearchใ€Logstash ๅ’Œ Kibana ไธ‰็ง่ฝฏไปถไบงๅ“็š„้ฆ–ๅญ—ๆฏ็ผฉๅ†™ใ€‚่ฟ™ไธ‰่€…้ƒฝๆ˜ฏๅผ€ๆบ่ฝฏไปถ๏ผŒ้€šๅธธ้…ๅˆไฝฟ็”จ๏ผŒ่€Œไธ”ๅˆๅ…ˆๅŽๅฝ’ไบŽ Elastic.co ๅ…ฌๅธๅไธ‹๏ผŒๆ‰€ไปฅ่ขซ็ฎ€็งฐไธบ ELK Stackใ€‚ๆ นๆฎ Google Trend ็š„ไฟกๆฏๆ˜พ็คบ๏ผŒELK Stack ๅทฒ็ปๆˆไธบ็›ฎๅ‰ๆœ€ๆต่กŒ็š„้›†ไธญๅผๆ—ฅๅฟ—่งฃๅ†ณๆ–นๆกˆใ€‚

2. ้ƒจ็ฝฒๅฏน่ฑก่ฏดๆ˜Ž

2.1 ็จ‹ๅบๅ็งฐ

Elasticsearch๏ผšๅˆ†ๅธƒๅผๆœ็ดขๅ’Œๅˆ†ๆžๅผ•ๆ“Ž๏ผŒๅ…ทๆœ‰้ซ˜ๅฏไผธ็ผฉใ€้ซ˜ๅฏ้ ๅ’Œๆ˜“็ฎก็†็ญ‰็‰น็‚นใ€‚ๅŸบไบŽ Apache Lucene ๆž„ๅปบ๏ผŒ่ƒฝๅฏนๅคงๅฎน้‡็š„ๆ•ฐๆฎ่ฟ›่กŒๆŽฅ่ฟ‘ๅฎžๆ—ถ็š„ๅญ˜ๅ‚จใ€ๆœ็ดขๅ’Œๅˆ†ๆžๆ“ไฝœใ€‚้€šๅธธ่ขซ็”จไฝœๆŸไบ›ๅบ”็”จ็š„ๅŸบ็ก€ๆœ็ดขๅผ•ๆ“Ž๏ผŒไฝฟๅ…ถๅ…ทๆœ‰ๅคๆ‚็š„ๆœ็ดขๅŠŸ่ƒฝ๏ผ›

Logstash๏ผšๆ•ฐๆฎๆ”ถ้›†ๅผ•ๆ“Žใ€‚ๅฎƒๆ”ฏๆŒๅŠจๆ€็š„ไปŽๅ„็งๆ•ฐๆฎๆบๆœ้›†ๆ•ฐๆฎ๏ผŒๅนถๅฏนๆ•ฐๆฎ่ฟ›่กŒ่ฟ‡ๆปคใ€ๅˆ†ๆžใ€ไธฐๅฏŒใ€็ปŸไธ€ๆ ผๅผ็ญ‰ๆ“ไฝœ๏ผŒ็„ถๅŽๅญ˜ๅ‚จๅˆฐ็”จๆˆทๆŒ‡ๅฎš็š„ไฝ็ฝฎ๏ผ›

Kibana๏ผšๆ•ฐๆฎๅˆ†ๆžๅ’Œๅฏ่ง†ๅŒ–ๅนณๅฐใ€‚้€šๅธธไธŽ Elasticsearch ้…ๅˆไฝฟ็”จ๏ผŒๅฏนๅ…ถไธญๆ•ฐๆฎ่ฟ›่กŒๆœ็ดขใ€ๅˆ†ๆžๅ’Œไปฅ็ปŸ่ฎกๅ›พ่กจ็š„ๆ–นๅผๅฑ•็คบ๏ผ›

Filebeat๏ผšELK ๅ่ฎฎๆ ˆ็š„ๆ–ฐๆˆๅ‘˜๏ผŒไธ€ไธช่ฝป้‡็บงๅผ€ๆบๆ—ฅๅฟ—ๆ–‡ไปถๆ•ฐๆฎๆœ้›†ๅ™จ๏ผŒๅŸบไบŽ Logstash-Forwarder ๆบไปฃ็ ๅผ€ๅ‘๏ผŒๆ˜ฏๅฏนๅฎƒ็š„ๆ›ฟไปฃใ€‚ๅœจ้œ€่ฆ้‡‡้›†ๆ—ฅๅฟ—ๆ•ฐๆฎ็š„ server ไธŠๅฎ‰่ฃ… Filebeat๏ผŒๅนถๆŒ‡ๅฎšๆ—ฅๅฟ—็›ฎๅฝ•ๆˆ–ๆ—ฅๅฟ—ๆ–‡ไปถๅŽ๏ผŒFilebeat ๅฐฑ่ƒฝ่ฏปๅ–ๆ•ฐๆฎ๏ผŒ่ฟ…้€Ÿ5.Logstash ่ฟ›่กŒ่งฃๆž๏ผŒไบฆๆˆ–็›ดๆŽฅๅ‘้€ๅˆฐ Elasticsearch ่ฟ›่กŒ้›†ไธญๅผๅญ˜ๅ‚จๅ’Œๅˆ†ๆžใ€‚

ๅฆ‚ๆžœๆ‚จๅฏน ELK Stack ่ฟ˜ๅฐšไธไบ†่งฃ๏ผŒๆˆ–ๆ˜ฏๆƒณไบ†่งฃๆ›ดๅคš๏ผŒ่ฏท็‚นๅ‡ป้›†ไธญๅผๆ—ฅๅฟ—็ณป็ปŸ ELK ๅ่ฎฎๆ ˆ่ฏฆ่งฃ๏ผŒๆŸฅ็œ‹ๅ…ทไฝ“ไป‹็ปใ€‚

2.2 ็จ‹ๅบๅŠŸ่ƒฝ

  • Elasticsearch๏ผšๅˆ†ๅธƒๅผ็š„ๆœ็ดขๅผ•ๆ“Žๅ’Œๆ•ฐๆฎๅˆ†ๆžๅผ•ๆ“Ž

  • Logstash๏ผšๆ•ฐๆฎๆ”ถ้›†ๅผ•ๆ“Ž

  • Kibana๏ผšๆ•ฐๆฎๅˆ†ๆžๅ’Œๅฏ่ง†ๅŒ–ๅนณๅฐ

  • Filebeat๏ผš่ฝป้‡ๅž‹ๆ—ฅๅฟ—้‡‡้›†ๅ™จ

3. ้ƒจ็ฝฒๆ“ไฝœ

3.1 ็Žฏๅขƒๅ‡†ๅค‡

ELK5.3ไปฅๅŽไพ่ต–JDK๏ผŒๆ‰€ไปฅๆˆ‘ไปฌๅ…ˆๅœจๆœๅŠกๅ™จๅฎ‰่ฃ…ไพ่ต– ๏ผˆJDK็‰ˆๆœฌ1.8.0ๅŠไปฅไธŠ๏ผ‰

OpenJDKไธ‹่ฝฝ็ฝ‘็ซ™๏ผš

OpenJDKๅฎ‰่ฃ…ๆ–‡ๆกฃ็ฝ‘็ซ™๏ผš

yum -y install java-1.8.0-openjdk  wget lrzsz vim net-tools coreutils npm
yum groupinstall 'Development Tools'

ๆฃ€ๆŸฅไธ€ไธ‹JAVA็ŽฏๅขƒๅŠ็‰ˆๆœฌ

java -version

ๅ…ณ้—ญ้˜ฒ็ซๅข™ๅ’Œ้…็ฝฎSELinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 
setenforce 0                      #ๅฏไปฅ่ฎพ็ฝฎ้…็ฝฎๆ–‡ไปถๆฐธไน…ๅ…ณ้—ญ
systemctl stop firewalld.service

ELKๅฎ˜ๆ–นไธ‹่ฝฝ็ฝ‘็ซ™๏ผš

Elasticsearchไธ‹่ฝฝ๏ผš

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz

Logstashไธ‹่ฝฝ๏ผš

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.0.zip

Kibanaไธ‹่ฝฝ๏ผš

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.0-linux-x86_64.tar.gz

Filebeatไธ‹่ฝฝ๏ผš

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.0-linux-x86_64.tar.gz

3.2 ๅฎ‰่ฃ…ๆญฅ้ชค

ๅฎ‰่ฃ…elasticsearch

tar -zvxf elasticsearch-6.5.0.tar.gz -C /usr/local/

vim /usr/local/elasticsearch-6.5.0/config/elasticsearch.yml
17 cluster.name: elk-cluster     #้›†็พคๅ็งฐ
23 node.name: node-1             #่Š‚็‚นๅ็งฐ
33 path.data: /usr/local/elasticsearch-6.5.0/data #่ฎพ็ฝฎ็ดขๅผ•ๆ•ฐๆฎ็š„ๅญ˜ๅ‚จ่ทฏๅพ„๏ผŒ้ป˜่ฎคๆ˜ฏesๆ น็›ฎๅฝ•ไธ‹็š„dataๆ–‡ไปถๅคน๏ผŒๅฏไปฅ่ฎพ็ฝฎๅคšไธชๅญ˜ๅ‚จ่ทฏๅพ„๏ผŒ็”จ้€—ๅท้š”ๅผ€
37 path.logs: /usr/local/elasticsearch-6.5.0/logs #่ฎพ็ฝฎๆ—ฅๅฟ—ๆ–‡ไปถ็š„ๅญ˜ๅ‚จ่ทฏๅพ„๏ผŒ้ป˜่ฎคๆ˜ฏesๆ น็›ฎๅฝ•ไธ‹็š„logsๆ–‡ไปถๅคน
55 network.host: 10.88.216.26          #ๅฝ“ๅ‰่Š‚็‚นIPๅœฐๅ€
59 http.port: 9200                     #่ฎพ็ฝฎๅฏนๅค–ๆœๅŠก็š„http็ซฏๅฃ๏ผŒ้ป˜่ฎคไธบ9200ใ€‚
68 discovery.seed_hosts: ["10.88.216.17","10.88.216.19", "10.88.216.22"]     #้›†็พคๆฏไธช่Š‚็‚นIPๅœฐๅ€๏ผŒไนŸๅฏไปฅไฝฟ็”จelsใ€els.shuaiguoxia.com็ญ‰ๅ็งฐ๏ผŒ้œ€่ฆๅ„่Š‚็‚น่ƒฝๅคŸ่งฃๆž
72 cluster.initial_master_nodes: ["node-1", "node-2","node-3"]               #ๅˆๅง‹ไธป่Š‚็‚นๅบ”็”ฑๅ…ถๆ ‡่ฏ† ่Š‚็‚นๅ็งฐ๏ผŒ้ป˜่ฎคไธบๅ…ถไธปๆœบๅใ€‚็กฎไฟๅ€ผcluster.initial_master_nodesไธŽ่Š‚็‚นๅ็งฐ็กฎๅˆ‡ๅŒน้…ใ€‚
80 gateway.recover_after_nodes: 3      #่ฎพ็ฝฎ้›†็พคไธญNไธช่Š‚็‚นๅฏๅŠจๆ—ถ่ฟ›่กŒๆ•ฐๆฎๆขๅค๏ผŒ้ป˜่ฎคไธบ3ใ€‚

ๅ…ทไฝ“่ฏฆ็ป†้…็ฝฎ้˜…่ฏปๅฎ˜ๆ–นๆ–‡ๆกฃไบ†่งฃๆ›ดๅคš๏ผš

mkdir -p /usr/local/elasticsearch-6.5.0/data

ไฟฎๆ”นsysctlๅ†…ๆ ธๅ‚ๆ•ฐ

echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p
vim /etc/security/limits.conf ๏ผˆๆทปๅŠ ไธ‹้ขๅ‚ๆ•ฐ๏ผ‰
*       soft    nofile  65536
*       hard    nofile  65536

3.3 ็จ‹ๅบ่ฟ่กŒๆˆๅŠŸ็Šถๆ€ๆฃ€ๆŸฅ

ESๆ’ไปถ็š„ไฝฟ็”จ

headๆ’ไปถ(ๆŸฅ็œ‹,ๅบ“็บงๅˆซ็š„ๆ“ไฝœ)

ๅฎ‰่ฃ…node

็”ฑไบŽheadๆ’ไปถๆœฌ่ดจไธŠ่ฟ˜ๆ˜ฏไธ€ไธชnode.js็š„ๅทฅ็จ‹๏ผŒๅ› ๆญค้œ€่ฆๅฎ‰่ฃ…node๏ผŒไฝฟ็”จnpmๆฅๅฎ‰่ฃ…ไพ่ต–็š„ๅŒ…ใ€‚๏ผˆnpmๅฏไปฅ็†่งฃไธบmaven๏ผ‰

ๅฎ˜็ฝ‘ไธ‹่ฝฝๅฏนๅบ”็‰ˆๆœฌ็š„node:

wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz

ๅฎ‰่ฃ…็ผ–่ฏ‘่ฝฏไปถ

yum gcc gcc-c++ kernel-devel make

็„ถๅŽ่งฃๅŽ‹node็š„ๅฎ‰่ฃ…ๅŒ…

tar -xvf node-v0.10.24.tar.gz -C /usr/local/
cd /usr/local/node-v0.10.24/

ๆบ็ ็ผ–่ฏ‘ๅฎ‰่ฃ…

./configure && make && make install

ๆŸฅ็œ‹ๆ˜ฏๅฆๅฎ‰่ฃ…ๆˆๅŠŸ๏ผŒ-vๆŸฅ็œ‹็‰ˆๆœฌ

node -v

ไฝฟ็”จไธ‹้ข็š„ๅ‘ฝไปคๅ–ๆถˆssl้ชŒ่ฏ

npm config set strict-ssl false

ๅฆ‚้‡้”™่ฏฏerror-code-ELIFECYCLE๏ผŒๆ‰ง่กŒๅฆ‚ไธ‹ๅ‘ฝไปค

npm cache clear --force
npm install -g npm

ไธ‹่ฝฝelasticsearch-headๆ’ไปถ

headไธ‹่ฝฝๅœฐๅ€๏ผšhttps://github.com/mobz/elasticsearch-head

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install         #ๅฎ‰่ฃ…ไพ่ต–

ไฟฎๆ”นๅฏๅŠจๆ–‡ไปถ

ๆ‰€ๆœ‰ไพ่ต–ๅŒ…ๅฎ‰่ฃ…ๆˆๅŠŸๅŽ๏ผŒไฟฎๆ”น elasticsearch-head ็›ฎๅฝ•ไธ‹็š„ Gruntfile.js ๆ–‡ไปถ๏ผŒๅœจ options ๅฑžๆ€งๅ†…ๅขžๅŠ  hostname๏ผŒ่ฎพ็ฝฎไธบ 0.0.0.0ใ€‚

vim Gruntfile.js

ไฟฎๆ”น Elasticsearch ้…็ฝฎๆ–‡ไปถ config/elasticsearch.ymlๆ”ฏๆŒ่ทจๅŸŸ่ฎฟ้—ฎ

ๅ…ทไฝ“้…็ฝฎๅ‚่€ƒๅฎ˜ๆ–นๆ–‡ๆกฃ

vim /usr/local/elasticsearch-6.5.0/config/elasticsearch.yml ๏ผˆๅœจๆœซ่กŒๆทปๅŠ ๅฆ‚ไธ‹ไธคๆก้…็ฝฎ๏ผ‰
89 http.cors.enabled: true
90 http.cors.allow-origin: '*'

Elasticsearch่‡ช5็‰ˆๆœฌไน‹ๅŽ๏ผŒๅค„ไบŽๅฎ‰ๅ…จ่€ƒ่™‘๏ผŒไธๅ…่ฎธไฝฟ็”จroot็”จๆˆท่ฟ่กŒใ€‚

่งฃๅ†ณ๏ผšๅˆ›ๅปบไธ€ไธชๆ™ฎ้€š็”จๆˆท๏ผŒๅฐ†elasticsearch ๅฎ‰่ฃ…็›ฎๅฝ•ๆƒ้™ไฟฎๆ”นไธ€ไธ‹๏ผŒๅˆ‡ๆข่‡ณๆ™ฎ้€š็”จๆˆท่ฟ่กŒelasticsearchๅฐฑๅฏไปฅไบ†

useradd elasticsearch
mv elasticsearch-head /usr/local/
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-head
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-6.5.0

ๅˆ‡ๆข็”จๆˆทๅฏๅŠจๆœๅŠก

su โ€“ elasticsearch
nohup /usr/local/elasticsearch-6.5.0/bin/elasticsearch & #ๅฟฝ็•ฅ่พ“ๅ…ฅๅนถๆŠŠ่พ“ๅ‡บ่ฟฝๅŠ ๅˆฐ"nohup.outโ€
cd /usr/local/elasticsearch-head/
nohup npm run start &

ๆŸฅ็œ‹ๆœๅŠกๅฏๅŠจ็ซฏๅฃ

ss -ntulp | grep -E "9100|9200|9300"

่ฎฟ้—ฎ http://10.88.216.26:9100 ๅœฐๅ€๏ผŒๅฐฑๅฏไปฅ็œ‹ๅˆฐๅฝ“ๅ‰ Elasticsearch ้›†็พคไฟกๆฏ

Cereboๆ˜ฏkopfๅœจes5ไธŠ็š„ๆ›ฟไปฃ่€…(้›†็พคๆ“ไฝœ)

Cerebroไธ‹่ฝฝ็ฝ‘็ซ™๏ผš

wget https://github.com/lmenezes/cerebro/releases/download/v0.8.4/cerebro-0.8.4.tgz
tar -zvxf cerebro-0.8.4.tgz -C /usr/local/
cd /usr/local/cerebro-0.8.4/
vim /usr/local/cerebro-0.8.4/conf/application.conf
nohup ./bin/cerebro -Dhttp.port=[ๅฎšไน‰ๅฏๅŠจ็š„็ซฏๅฃ] -Dhttp.address=[ๅฎšไน‰ๅฏๅŠจIP] &

ๆŸฅ็œ‹ๅฏๅŠจๅนถ่ฎฟ้—ฎ่Š‚็‚น

http://10.88.216.26:9000

Bigdeskๆ’ไปถ(้›†็พค็Šถๆ€ๆŸฅ็œ‹)

wget https://github.com/hlstudio/bigdesk/archive/master.zip
unzip master.zip -d /usr/local/
cd /usr/local/bigdesk-master/_site/

ๅฏๅŠจwebๆœๅŠกๅ™จ

python -m SimpleHTTPServer                 #้ป˜่ฎค็›‘ๅฌ็ซฏๅฃๅทๆ˜ฏ 8000
nohup python -m SimpleHTTPServer 8900 &    #ๆŒ‡ๅฎšๅฏๅŠจ็ซฏๅฃ,ๅนถๅŽๅฐๅฏๅŠจ

ๆŸฅ็œ‹ๅฏๅŠจๅนถ่ฎฟ้—ฎ่Š‚็‚น

่ฎฟ้—ฎๅนถ่ฟžๆŽฅ่Š‚็‚นๆŸฅ็œ‹

่ฎฟ้—ฎhttp://10.88.216.26:8900ๅณๅฏ่ฟ›ๅ…ฅ็›‘ๆŽง้กต้ข

Beatsๅฏไปฅ็›ดๆŽฅ๏ผˆๆˆ–่€…้€š่ฟ‡Logstash๏ผ‰ๅฐ†ๆ•ฐๆฎๅ‘้€ๅˆฐElasticsearch๏ผŒๅœจ้‚ฃ้‡Œไฝ ๅฏไปฅ่ฟ›ไธ€ๆญฅๅค„็†ๅ’Œๅขžๅผบๆ•ฐๆฎ๏ผŒ็„ถๅŽๅœจKibanaไธญๅฐ†ๅ…ถๅฏ่ง†ๅŒ–ใ€‚

Filebeatๅฎ‰่ฃ…้ƒจ็ฝฒ

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.0-linux-x86_64.tar.gz
tar -zvxf filebeat-6.5.0-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/filebeat-6.5.0-linux-x86_64/

้…็ฝฎFilebeat

ๅฎ˜ๆ–นๅ‚่€ƒๆ–‡ๆกฃ๏ผš

vim /usr/local/filebeat-6.5.0-linux-x86_64/filebeat.yml

Logstashๅฎ‰่ฃ…้ƒจ็ฝฒ

Logstash็š„ๆ•ฐๆฎๅค„็†่ฟ‡็จ‹ไธป่ฆๅŒ…ๆ‹ฌ๏ผš่พ“ๅ…ฅ๏ผŒ่ฟ‡ๆปคๅ™จ๏ผŒ่พ“ๅ‡บไธ‰้ƒจๅˆ†๏ผŒๅฆๅค–ๅœจ่พ“ๅ…ฅๅ’Œ่พ“ๅ‡บไธญๅฏไปฅไฝฟ็”จCodecsๅฏนๆ•ฐๆฎๆ ผๅผ่ฟ›่กŒๅค„็†ใ€‚่ฟ™ๅ››ไธช้ƒจๅˆ†ๅ‡ไปฅๆ’ไปถๅฝขๅผๅญ˜ๅœจ๏ผŒ็”จๆˆท้€š่ฟ‡ๅฎšไน‰็ฎก้“้…็ฝฎๆ–‡ไปถ๏ผŒ่ฎพ็ฝฎ้œ€่ฆไฝฟ็”จ็š„่พ“ๅ…ฅ๏ผŒ่ฟ‡ๆปคๅ™จ๏ผŒ่พ“ๅ‡บ๏ผŒ็ผ–่งฃ็ ๅ™จๆ’ไปถ๏ผŒไปฅๅฎž็Žฐ็‰นๅฎš็š„ๆ•ฐๆฎ้‡‡้›†๏ผŒๆ•ฐๆฎๅค„็†๏ผŒๆ•ฐๆฎ่พ“ๅ‡บ็ญ‰ๅŠŸ่ƒฝ

  • ๏ผˆ1๏ผ‰่พ“ๅ…ฅ๏ผš็”จไบŽไปŽๆ•ฐๆฎๆบ่Žทๅ–ๆ•ฐๆฎ๏ผŒๅธธ่ง็š„ๆ’ไปถๅฆ‚file๏ผŒsyslog๏ผŒredis๏ผŒbeats็ญ‰[ ่ฏฆ็ป†ๅ‚่€ƒ ]

  • ๏ผˆ2๏ผ‰่ฟ‡ๆปคๅ™จ๏ผš็”จไบŽๅค„็†ๆ•ฐๆฎๅฆ‚ๆ ผๅผ่ฝฌๆข๏ผŒๆ•ฐๆฎๆดพ็”Ÿ็ญ‰๏ผŒๅธธ่ง็š„ๆ’ไปถๅฆ‚grok๏ผŒmutate๏ผŒdrop๏ผŒclone๏ผŒgeoip็ญ‰[ ่ฏฆ็ป†ๅ‚่€ƒ ]

  • ๏ผˆ3๏ผ‰่พ“ๅ‡บ๏ผš็”จไบŽๆ•ฐๆฎ่พ“ๅ‡บ๏ผŒๅธธ่ง็š„ๆ’ไปถๅฆ‚elastcisearch๏ผŒfile๏ผŒgraphite๏ผŒstatsd็ญ‰[ ่ฏฆ็ป†ๅ‚่€ƒ ]

  • ๏ผˆ4๏ผ‰็ผ–่งฃ็ ๅ™จ๏ผš็ผ–่งฃ็ ๅ™จไธๆ˜ฏไธ€ไธชๅ•็‹ฌ็š„ๆต็จ‹๏ผŒ่€Œๆ˜ฏๅœจ่พ“ๅ…ฅๅ’Œ่พ“ๅ‡บ็ญ‰ๆ’ไปถไธญ็”จไบŽๆ•ฐๆฎ่ฝฌๆข็š„ๆจกๅ—๏ผŒ็”จไบŽๅฏนๆ•ฐๆฎ่ฟ›่กŒ็ผ–็ ๅค„็†๏ผŒๅธธ่ง็š„ๆ’ไปถๅฆ‚json๏ผŒmultiline [ ่ฏฆ็ป†ๅ‚่€ƒ ]

Logstashไธ‹่ฝฝ๏ผš๏ผˆ้œ€่ฆ้ข„ๅ…ˆๅฎ‰่ฃ…JDK8๏ผ‰

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.0.zip
unzip logstash-6.5.0.zip -d /usr/local/
cd /usr/local/logstash-6.5.0/
#็ฎ€ๅ•ๆต‹่ฏ•
# bin/logstash -e 'input { stdin { } } output { stdout {} }'

logstash้…็ฝฎ่ฏญๅฅ่ฏฆ่งฃ

logstash้…็ฝฎๆ–‡ไปถๅŒ…ๅซไธ‰ไธช้…็ฝฎ้ƒจๅˆ†๏ผŒๅˆ†ๅˆซไธบ๏ผšinput{}ใ€filter{}ใ€output{}ใ€‚

{} ๅฎšไน‰ๅŒบๅŸŸ๏ผŒๅŒบๅŸŸๅ†…ๅฏไปฅๅฎšไน‰ไธ€ไธชๆˆ–ๅคšไธชๆ’ไปถ๏ผŒ้€š่ฟ‡ๆ’ไปถๅฏนๆ•ฐๆฎ่ฟ›่กŒๆ”ถ้›†๏ผŒๅŠ ๅทฅๅค„็†๏ผŒ่พ“ๅ‡บใ€‚

logstash.yml

  • ๅŒ…ๅซLogstash้…็ฝฎๆ ‡ๅฟ—๏ผŒไฝ ๅฏไปฅๅœจ่ฟ™ไธชๆ–‡ไปถไธญ่ฎพ็ฝฎๆ ‡ๅฟ—๏ผŒ่€Œไธๆ˜ฏๅœจๅ‘ฝไปค่กŒไธญไผ ้€’ๆ ‡ๅฟ—๏ผŒๅœจๅ‘ฝไปค่กŒไธญ่ฎพ็ฝฎ็š„ไปปไฝ•ๆ ‡ๅฟ—้ƒฝ่ฆ†็›–logstash.ymlๆ–‡ไปถไธญ็š„็›ธๅบ”่ฎพ็ฝฎ๏ผŒๆ›ดๅคšไฟกๆฏ่งlogstash.ymlๅฎ˜ๆ–นๅ‚่€ƒๆ–‡ๆกฃใ€‚

Logstashๆฒกๆœ‰้ป˜่ฎค็š„้…็ฝฎๆ–‡ไปถ,้œ€่ฆๆ‰‹ๅŠจ้…

ๆ•ฐๆฎ็ฑปๅž‹๏ผš

  • ๅธƒๅฐ”ๅ€ผ็ฑปๅž‹: ssl_enable => true

  • ๅญ—่Š‚็ฑปๅž‹: bytes => "1MiB"

  • ๅญ—็ฌฆไธฒ็ฑปๅž‹: name => "xkops"

  • ๆ•ฐๅ€ผ็ฑปๅž‹: port => 22

  • ๆ•ฐ็ป„: match => ["datetime","UNIX"]

  • ๅ“ˆๅธŒ: options => {key1 => "value1",key2 => "value2"}

  • ็ผ–็ ่งฃ็ : codec => "json"

  • ่ทฏๅพ„: file_path => "/tmp/filename"

  • ๆณจ้‡Š: #

ๆกไปถๅˆคๆ–ญ๏ผš

  • ็ญ‰ไบŽ: ==

  • ไธ็ญ‰ไบŽ: !=

  • ๅฐไบŽ: <

  • ๅคงไบŽ: >

  • ๅฐไบŽ็ญ‰ไบŽ: <=

  • ๅคงไบŽ็ญ‰ไบŽ: >=

  • ๅŒน้…ๆญฃๅˆ™: =~

  • ไธๅŒน้…ๆญฃๅˆ™: !~

  • ๅŒ…ๅซ: in

  • ไธๅŒ…ๅซ: not in

  • ไธŽ: and

  • ๆˆ–: or

  • ้žไธŽ: nand

  • ้žๆˆ–: xor

  • ๅคๅˆ่กจ่พพๅผ: ()

  • ๅ–ๅ็ฌฆๅˆ: !()

ๅˆ›ๅปบlogstash.conf้…็ฝฎๆ–‡ไปถ๏ผš

mkdir /usr/local/logstash-6.5.0/config.d
vim /usr/local/logstash-6.5.0/config.d/logstash.conf
input {
 beats {
 port => 5044 #ๅฎšไน‰ๆœๅŠก็›‘ๅฌ็š„็ซฏๅฃ
 }
}
filter {
 if [fields][logtype] == "syslog" {
 grok {
 match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
 add_field => [ "received_at", "%{@timestamp}" ]
 add_field => [ "received_from", "%{host}" ]
 }
 syslog_pri { }
 date {
 match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
 }
 }
 if [fields][logtype] == "spring-boot-log4j2" {
 json {
 source => "message"
 target => "data"
 }
 }
}
output {
 if [fields][logtype] == "spring-boot-log4j2"{
 elasticsearch {
 hosts => ["10.88.216.26:9200"]
 index => "spring-boot-log4j2-%{+YYYY.MM.dd}"
 }
 }
 if [fields][logtype] == "syslog"{
 elasticsearch {
 hosts => ["10.88.216.26:9200"]
 index => "filebeat-%{+YYYY.MM.dd}"
 }
 }
}

ๆฃ€ๆŸฅ้…็ฝฎๅนถๅฏๅŠจLogstash

cd /usr/local/logstash-6.5.0/
bin/logstash -f config.d/logstash.conf --config.test_and_exit       #--config.test_and_exit้€‰้กน็š„ๆ„ๆ€ๆ˜ฏ่งฃๆž้…็ฝฎๆ–‡ไปถๅนถๆŠฅๅ‘Šไปปไฝ•้”™่ฏฏ
bin/logstash -f config.d/logstash.conf --config.reload.automatic    #config.reload.automatic้€‰้กน็š„ๆ„ๆ€ๆ˜ฏๅฏ็”จ่‡ชๅŠจ้…็ฝฎๅŠ ่ฝฝ๏ผŒไปฅ่‡ณไบŽๆฏๆฌกไฝ ไฟฎๆ”นๅฎŒ้…็ฝฎๆ–‡ไปถไปฅๅŽๆ— ้œ€ๅœๆญข็„ถๅŽ้‡ๅฏLogstash

logstashไธ‰็งๅฏๅŠจๆ–นๅผ๏ผš

-e                          #sting็ฑปๅž‹ๅฏๅŠจ
-f                          #ๆŒ‡ๅฎš้…็ฝฎๆ–‡ไปถๅฏๅŠจ
service logstash start      #ๆœๅŠกๅฏๅŠจ

logstashๅธธ็”จๆ’ไปถ

ๆ–‡ๆกฃๅŠๆ’ไปถๅ‚่€ƒๅœฐๅ€

ๆŸฅ็œ‹ๆ’ไปถ็š„ๆ–นๅผ

cd /usr/local/logstash-6.5.0/bin
./logstash-plugin list
  • inputๆ’ไปถ๏ผŒๅธธ็”จ็š„ๆ’ไปถ๏ผšfileใ€tcpใ€udpใ€syslog๏ผŒbeats

  • filterๆ’ไปถ๏ผŒๅธธ็”จ็š„ๆ’ไปถ๏ผšjsonใ€grok

  • outputๆ’ไปถ๏ผŒๅธธ็”จ็š„ๆ’ไปถ๏ผšfile; tcp/udp; redis/kfaka; elasticsearch

  • codec็ฑปๆ’ไปถ๏ผŒๅธธ็”จ็š„ๆ’ไปถ๏ผšplainใ€jsonใ€json_linesใ€rubydebugใ€multiline็ญ‰

ๅฏๅŠจfilebeatๅ’Œlogstash

cd /usr/local/filebeat-6.5.0-linux-x86_64/
nohup ./filebeat -e -c filebeat.yml -d "publish" &
cd /usr/local/logstash-6.5.0/
nohup bin/logstash -f config.d/logstash.conf --config.reload.automatic &

ๅฎ‰่ฃ…kibana

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.0-linux-x86_64.tar.gz
tar -zvxf kibana-6.5.0-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/kibana-6.5.0-linux-x86_64/

ไฟฎๆ”น้…็ฝฎๆ–‡ไปถ

vim /usr/local/kibana-6.5.0-linux-x86_64/config/kibana.yml

ๆฑ‰ๅŒ–kibanaๆ’ไปถไธ‹่ฝฝๅœฐๅ€๏ผš

git clone https://github.com/anbai-inc/Kibana_Hanization.git
cd Kibana_Hanization/old/
python main.py /usr/local/kibana-6.5.0-linux-x86_64

ๆฑ‰ๅŒ–ๆˆๅŠŸๅŽๅฏๅŠจkibana

cd /usr/local/kibana-6.5.0-linux-x86_64/bin/
nohup ./kibana &
ss -ntulp | grep 5601

ๆต่งˆๅ™จ่ฎฟ้—ฎ๏ผšhttp://ๆœๅŠกๅ™จIP:5601/

ๆœ€ๅŽๆ›ดๆ–ฐไบŽ

่ฟ™ๆœ‰ๅธฎๅŠฉๅ—๏ผŸ