±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcnblogs£¬ÎÄÕÂÖ÷Òª¼Ç¼
Elasticsearch ºÍ Kibana »·¾³µÄÅäÖã¬ÒÔ¼°²É¼¯·þÎñ×·×ÙÊý¾ÝµÄÏÔ³ö´¦Àí¡£ |
|
1. ELK Stack ¼ò½é
ELK ÊÇÈý¸ö¿ªÔ´Èí¼þµÄËõд£¬·Ö±ðΪ£ºElasticsearch¡¢Logstash ÒÔ¼° Kibana£¬ËüÃǶ¼ÊÇ¿ªÔ´Èí¼þ¡£²»¹ýÏÖÔÚ»¹ÐÂÔöÁËÒ»¸ö
Beats£¬ËüÊÇÒ»¸öÇáÁ¿¼¶µÄÈÕÖ¾ÊÕ¼¯´¦Àí¹¤¾ß£¨Agent£©£¬Beats Õ¼ÓÃ×ÊÔ´ÉÙ£¬ÊʺÏÓÚÔÚ¸÷¸ö·þÎñÆ÷ÉÏËѼ¯ÈÕÖ¾ºó´«Ê䏸
Logstash£¬¹Ù·½Ò²ÍƼö´Ë¹¤¾ß£¬Ä¿Ç°ÓÉÓÚÔ±¾µÄ ELK Stack ³ÉÔ±ÖмÓÈëÁË Beats ¹¤¾ßËùÒÔÒѸÄÃûΪ
Elastic Stack¡£
¸ù¾Ý Google Trend µÄÐÅÏ¢ÏÔʾ£¬Elastic Stack ÒѾ³ÉΪĿǰ×îÁ÷Ðеļ¯ÖÐʽÈÕÖ¾½â¾ö·½°¸¡£
Elastic Stack °üº¬£º
Elasticsearch ÊǸö¿ªÔ´·Ö²¼Ê½ËÑË÷ÒýÇæ£¬ÌṩËѼ¯¡¢·ÖÎö¡¢´æ´¢Êý¾ÝÈý´ó¹¦ÄÜ¡£ËüµÄÌØµãÓУº·Ö²¼Ê½£¬ÁãÅäÖã¬×Ô¶¯·¢ÏÖ£¬Ë÷Òý×Ô¶¯·ÖƬ£¬Ë÷Òý¸±±¾»úÖÆ£¬restful
·ç¸ñ½Ó¿Ú£¬¶àÊý¾ÝÔ´£¬×Ô¶¯ËÑË÷¸ºÔصȡ£Ïêϸ¿É²Î¿¼ Elasticsearch ȨÍþÖ¸ÄÏ
Logstash Ö÷ÒªÊÇÓÃÀ´ÈÕÖ¾µÄËѼ¯¡¢·ÖÎö¡¢¹ýÂËÈÕÖ¾µÄ¹¤¾ß£¬Ö§³Ö´óÁ¿µÄÊý¾Ý»ñÈ¡·½Ê½¡£Ò»°ã¹¤×÷·½Ê½Îª
c/s ¼Ü¹¹£¬client ¶Ë°²×°ÔÚÐèÒªÊÕ¼¯ÈÕÖ¾µÄÖ÷»úÉÏ£¬server ¶Ë¸ºÔð½«ÊÕµ½µÄ¸÷½ÚµãÈÕÖ¾½øÐйýÂË¡¢Ð޸ĵȲÙ×÷ÔÚÒ»²¢·¢Íù
Elasticsearch ÉÏÈ¥¡£
Kibana Ò²ÊÇÒ»¸ö¿ªÔ´ºÍÃâ·ÑµÄ¹¤¾ß£¬Kibana ¿ÉÒÔΪ Logstash ºÍ ElasticSearch
ÌṩµÄÈÕÖ¾·ÖÎöÓÑºÃµÄ Web ½çÃæ£¬¿ÉÒÔ°ïÖú»ã×Ü¡¢·ÖÎöºÍËÑË÷ÖØÒªÊý¾ÝÈÕÖ¾¡£
Beats ÔÚÕâÀïÊÇÒ»¸öÇáÁ¿¼¶ÈÕÖ¾²É¼¯Æ÷£¬Æäʵ Beats ¼Ò×åÓÐ 6 ¸ö³ÉÔ±£¬ÔçÆÚµÄ ELK ¼Ü¹¹ÖÐʹÓÃ
Logstash ÊÕ¼¯¡¢½âÎöÈÕÖ¾£¬µ«ÊÇ Logstash ¶ÔÄÚ´æ¡¢cpu¡¢io µÈ×ÊÔ´ÏûºÄ±È½Ï¸ß¡£Ïà±È
Logstash£¬Beats ËùռϵͳµÄ CPU ºÍÄڴ漸ºõ¿ÉÒÔºöÂÔ²»¼Æ¡£
ELK Stack £¨5.0°æ±¾Ö®ºó£©--> Elastic Stack == £¨ELK Stack
+ Beats£©¡£
Ŀǰ Beats °üº¬ÁùÖÖ¹¤¾ß£º
Packetbeat£º ÍøÂçÊý¾Ý£¨ÊÕ¼¯ÍøÂçÁ÷Á¿Êý¾Ý£©
Metricbeat£º Ö¸±ê£¨ÊÕ¼¯ÏµÍ³¡¢½ø³ÌºÍÎļþϵͳ¼¶±ðµÄ CPU ºÍÄÚ´æÊ¹ÓÃÇé¿öµÈÊý¾Ý£©
Filebeat£º ÈÕÖ¾Îļþ£¨ÊÕ¼¯ÎļþÊý¾Ý£©
Winlogbeat£º windows ʼþÈÕÖ¾£¨ÊÕ¼¯ Windows ʼþÈÕÖ¾Êý¾Ý£©
Auditbeat£ºÉó¼ÆÊý¾Ý£¨ÊÕ¼¯Éó¼ÆÈÕÖ¾£©
Heartbeat£ºÔËÐÐʱ¼ä¼à¿Ø£¨ÊÕ¼¯ÏµÍ³ÔËÐÐʱµÄÊý¾Ý£©
ELK ¼òµ¥¼Ü¹¹Í¼£º

2. »·¾³×¼±¸
·þÎñÆ÷»·¾³£ºCentos 7.0£¨Ä¿Ç°µ¥»ú£¬ºóÐøÔÙ²¿Êð¼¯Èº£©
Elasticsearch ºÍ Logstash ÐèÒª Java »·¾³£¬Elasticsearch
ÍÆ¼öµÄ°æ±¾Îª Java 8£¬°²×°½Ì³Ì£ºÈ·¶¨Îȶ¨µÄ Spring Cloud Ïà¹Ø»·¾³°æ±¾
ÁíÍ⣬ÎÒÃÇÐèÒªÐÞ¸ÄÏ·þÎñÆ÷Ö÷»úÐÅÏ¢£º
[root@node1
~]# vi /etc/hostname
node1
[root@node1 ~]# vi /etc/hosts
192.168.0.11 node1
127.0.0.1 node1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1 node1 localhost localhost.localdomain local
host6 localhost6.localdomain6 |
×¢Ò⣺ÎÒ֮ǰ°²×° Elasticsearch ºÍ Kibana ¶¼ÊÇ×îа汾£¨6.x£©£¬µ«ºÍ Spring
Cloud ¼¯³ÉÓÐЩÎÊÌ⣬ËùÒԾͲÉÓÃÁË 5.x °æ±¾£¨¾ßÌå 5.6.9 °æ±¾£©
3. °²×° Elasticsearch
ÔËÐÐÒÔÏÂÃüÁ Elasticsearch ¹«¹² GPG ÃÜÔ¿µ¼Èë
rpm£º
[root@node1
~]# rpm --import https: // artifacts . elastic
.co /GPG - KEY - elasticsearch |
ÔÚ/etc/yum.repos.d/Ŀ¼ÖУ¬´´½¨Ò»¸öÃûΪelasticsearch.repoµÄÎļþ£¬Ìí¼ÓÏÂÃæÅäÖãº
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl = https: // artifacts . elastic . co /
packages /5.x /yum
gpgcheck = 1
gpgkey = https: // artifacts.elastic.co /GPG -
KEY - elasticsearch
enabled = 1
autorefresh = 1
type = rpm - md |
Elasticsearch Ô´´´½¨Íê³ÉÖ®ºó£¬Í¨¹ý makecache
²é¿´Ô´ÊÇ·ñ¿ÉÓã¬È»ºóͨ¹ý yum °²×° Elasticsearch£º
[root@node1
~] # yum makecache && yum install elasticsearch
- y |
ÐÞ¸ÄÅäÖã¨Æô¶¯µØÖ·ºÍ¶Ë¿Ú£©£º
[root@node1
~]# vi / etc / elasticsearch / elasticsearch .yml
network.host: node1 # ĬÈÏlocalhost£¬×Ô¶¨ÒåΪip
http .port : 9200 |
Òª½« Elasticsearch ÅäÖÃΪÔÚϵͳÒýµ¼Ê±×Ô¶¯Æô¶¯£¬ÔËÐÐÒÔÏÂÃüÁ
[root@node1
~]# sudo / bin /systemctl daemon - reload
[root@node1 ~]# sudo / bin /systemctl enable elasticsearch
.service |
Elasticsearch ¿ÉÒÔ°´ÈçÏ·½Ê½Æô¶¯ºÍÍ£Ö¹£º
[root@node1
~]# sudo systemctl start elastic search .service
[root@node1 ~]# sudo systemctl stop elastic search
.service |
Áгö Elasticsearch ·þÎñµÄÈÕÖ¾£º
[root@node1
~]# sudo journalctl --unit elastic search
-- Logs begin at Èý 2018-05-09 10:13:46 CEST, end
at Èý 2018-05-09 10:53:53 CEST. --
5ÔÂ 09 10:53:43 node1 systemd [1]: [/ usr /lib
/ systemd / system / elasticsearch.service : 8
] Unknown lvalue 'RuntimeDirectory' in section
' Service '
5ÔÂ 09 10:53:43 node1 systemd [1]: [/usr /lib /systemd
/system / elasticsearch.service : 8 ] Unknown
lvalue 'RuntimeDirectory' in section ' Service
'
5ÔÂ 09 10:53:48 node1 systemd [1]: Starting Elastic
search...
5ÔÂ 09 10:53:48 node1 systemd [1]: Started Elastic
search.
5ÔÂ 09 10:53:48 node1 elasticsearch[2908]: which:
no java in (/usr /local /sbin: /usr/ local/ bin:/
usr /sbin :/usr /bin )
5ÔÂ 09 10:53:48 node1 elasticsearch[2908]: could
not find java; set JAVA_HOME or ensure java is
in PATH
5ÔÂ 09 10:53:48 node1 systemd [1]: elasticsearch.
service : main process exited, code = exited ,
status = 1 / FAILURE
5ÔÂ 09 10:53:48 node1 systemd [1]: Unit elastic
search .service entered failed state. |
³öÏÖÁË´íÎ󣬾ßÌåÐÅÏ¢ÊÇδÕÒµ½JAVA_HOME»·¾³±äÁ¿£¬µ«ÎÒÃÇÃ÷Ã÷ÒѾÅäÖùýÁË¡£
½â¾ö·½Ê½£¨²Î¿¼×ÊÁÏ£ºhttps://segmentfault.com/q/1010000004715131£©£º
[root@node1
~]# vi / etc / sysconfig / elastic search
JAVA _ HOME = /usr/ local /java |
ÖØÐÂÆô¶¯£º
sudo systemctl
restart elasticsearch .service |
»òÕßͨ¹ýsystemctlÃüÁ²é¿´ Elasticsearch Æô¶¯×´Ì¬£º
[root@node1
~]# systemctl status elasticsearch.service
elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/ systemd/system /elasticsearch.
service ; enabled )
Active: active (running) since Ò» 2018- 05- 14
05:13:45 CEST; 4h 5min ago
Docs: http: // www.elastic.co
Process: 951 ExecStartPre= /usr/share /elasticsearch
/bin / elasticsearch - systemd-pre-exec (code
= exited, status = 0/SUCCESS)
Main PID: 953 (java)
CGroup: /system.slice /elasticsearch .service
©¸©¤ 953 /usr /local/java/bin/java - Xms2g - Xmx2g
-XX: + UseConcMarkSweepGC - XX : CMSInitiatingO...
5ÔÂ 14 05:13:45 node1 systemd[1]: Started Elasticsearch. |
·¢ÏÖ Elasticsearch ÒѾ³É¹¦Æô¶¯¡£
²é¿´ Elasticsearch ÐÅÏ¢£º
[root@node1
~]# curl - XGET 'http: // node1: 9200 / ?pretty
'
{ "name" : "AKmrtMm",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "r7lG3UBXQ-uTLHInJxbOJA",
"version" : { "number"
: "5.6.9",
"build _ hash" : "877a590",
"build _ date" : "2018- 04- 12T16:
25:14.838Z",
"build _ snapshot" : false,
"lucene _ version" : "6.6.1"
}, "tagline" : "You Know, for
Search"
} |
4. °²×° Kibana
ÔËÐÐÒÔÏÂÃüÁ Elasticsearch ¹«¹² GPG ÃÜÔ¿µ¼Èë
rpm£º
[root@node1
~]# rpm -- import https: //artifacts .elastic
.co /GPG-KEY-elasticsearch |
ÔÚ/etc/yum.repos.d/Ŀ¼ÖУ¬´´½¨Ò»¸öÃûΪkibana.repoµÄÎļþ£¬Ìí¼ÓÏÂÃæÅäÖãº
[kibana-5.x]
name = Kibana repository for 5.x packages
baseurl = https: //artifacts .elastic.co /packages
/ 5.x /yum
gpgcheck = 1
gpgkey = https://artifacts.elastic.co/GPG-KEY-elastic
search
enabled = 1
autorefresh = 1
type = rpm - md |
°²×° Kibana£º
[root@node1
~]# yum makecache && yum install kibana
- y |
ÐÞ¸ÄÅäÖ㨵ØÖ·ºÍ¶Ë¿Ú£¬ÒÔ¼° Elasticsearch µÄµØÖ·£¬×¢Òâserver.hostÖ»ÄÜÌîд·þÎñÆ÷µÄ
IP µØÖ·£©£º
[root@node1
~]# vi /etc/ kibana / kibana.yml
# Kibana is served by a back end server. This
setting specifies the port to use.
server.port : 5601
# Specifies the address to which the Kibana
server will bind. IP addresses and host names
are both valid values.
# The default is 'localhost', which usually
means remote machines will not be able to connect.
# To allow connections from remote users, set
this parameter to a non-loopback address.
server.host: "192.168.0.11"
# The Kibana server's name. This is used for
display purposes.
server . name : "kibana - server"
# The URL of the Elasticsearch instance to
use for all your queries.
elasticsearch.url : "http: //node1:9200"
# ÅäÖÃkibanaµÄÈÕÖ¾Îļþ·¾¶£¬²»È»Ä¬ÈÏÊÇ messages Àï¼Ç¼ÈÕÖ¾
logging.dest: /var /log /kibana.log |
´´½¨ÈÕÖ¾Îļþ£º
[root@node1
~]# touch / var /log / kibana.log ; chmod 777
/var /log/ kibana.log |
Òª½« Kibana ÅäÖÃΪÔÚϵͳÒýµ¼Ê±×Ô¶¯Æô¶¯£¬ÔËÐÐÒÔÏÂÃüÁ
[root@node1
~]# sudo / bin / systemctl daemon - reload
[root@node1 ~]# sudo / bin / systemctl enable
kibana .service |
Kibana ¿ÉÒÔÈçÏÂÆô¶¯ºÍÍ£Ö¹
[root@node1
~]# sudo systemctl start kibana . service
[root@node1 ~]# sudo systemctl stop kibana . service |
²é¿´Æô¶¯ÈÕÖ¾£º
[root@node1
~]# sudo journalctl -- unit kibana
5ÔÂ 09 11:14:48 node1 systemd [1]: Starting Kibana...
5ÔÂ 09 11:14:48 node1 systemd [1]: Started Kibana. |
È»ºóä¯ÀÀÆ÷·ÃÎÊ£ºhttp://node1:5601

³õ´ÎʹÓÃʱ£¬»áÈÃÄãÅäÖÃÒ»¸öĬÈ쵀 index£¬Ò²¾ÍÊÇÄãÖÁÉÙÐèÒª¹ØÁªÒ»¸ö Elasticsearch
ÀïµÄ Index£¬¿ÉÒÔʹÓà pattern ÕýÔòÆ¥Åä¡£
×¢Ò⣺Èç¹û Elasticsearch ÖÐûÓÐÊý¾ÝµÄ»°£¬ÄãÊÇÎÞ·¨´´½¨ Index µÄ¡£
Èç¹û Spring Cloud Sleuth Zipkin + Stream + RabbitMQ
ÅäÖÃÕýÈ·µÄ»°£¨ÒÔºóÔÙÏêϸ˵Ã÷£©£¬·þÎñ×·×ÙµÄÊý¾Ý¾ÍÒѾ´æ´¢ÔÚ Elasticsearch ÖÐÁË¡£
5. Kibana ʹÓÃ
´´½¨zipkin:*Ë÷Òý£¨*Æ¥ÅäºóÃæËùÓÐ×Ö·û£©£º

È»ºó¾Í¿ÉÒԲ鿴·þÎñ×·×ÙµÄÊý¾ÝÁË£º

Ò²¿ÉÒÔ´´½¨×Ô¶¨ÒåÒDZíÅÌ£º

6. Elasticsearch ÃüÁî
´´½¨Ë÷Òý£º
$ curl -XPUT
'http: // node1:9200 / twitter' |
²é¿´ Index Ë÷ÒýÁÐ±í£º
$ curl -XGET
http: //node1:9200/_ cat /indices
yellow open twitter k1KnzWyYRDeckjt7GASh8w 5 1
1 0 5.1kb 5.1kb
yellow open .kibana 8zJGQkq8TwC4s3JJLMX44g 1 1
1 0 4kb 4kb
yellow open student iZPqPcwrQbifGOfE9DQYvg 5 1
0 0 955b 955b |
Ìí¼Ó Document Êý¾Ý£º
$ curl -XPUT
'http: //node1:9200/ twitter/ tweet / 1' - d '{
" user " : " kimchy ",
" post_date " : "2009- 11- 15T14:12:12
",
"message" : " trying out Elastic
Search "
} ' |
»ñÈ¡ Document Êý¾Ý£º
$ curl -XGET
'http: //node1:9200 /twitter /tweet /1'
{"_index" : "twitter","_
type":"tweet","_ id"
: "1" ," _ version " :1 ,
"found" : true,"_ source "
: {
"user" : "kimchy",
"post_date" : "2009- 11- 15T14
:12: 12", "message"
: "trying out Elastic Search"
}}% |
²éѯzipkinË÷ÒýÏÂÃæµÄÊý¾Ý£º
$ curl - XGET
'http : // node1:9200 /zipkin:* /_ search' |
|