1. 程式人生 > >CentOS 7.x 搭建 ELK 日誌監控系統

CentOS 7.x 搭建 ELK 日誌監控系統

一、ELK介紹

    

ELK簡介:

ELK是三個開源軟體的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟體。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat佔用資源少,適合於在各個伺服器上搜集日誌後傳輸給Logstash,官方也推薦此工具。

Elasticsearch是個開源分散式搜尋引擎,提供蒐集、分析、儲存資料三大功能。它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。

Logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支援大量的資料獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。

Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以幫助彙總、分析和搜尋重要資料日誌。

Filebeat隸屬於Beats。目前Beats包含四種工具:

    1. Packetbeat(蒐集網路流量資料)
    2. Topbeat(蒐集系統、程序和檔案系統級別的 CPU 和記憶體使用情況等資料)
    3. Filebeat(蒐集檔案資料)
    4. Winlogbeat(蒐集 Windows 事件日誌資料)

二、環境

   實驗環境配置

# vim /etc/security/limit.conf

* hard nofile 65536
* soft nofile 65536
* soft nproc 65536
* hard nproc 65536


# vim /etc/sysctl.conf
vm.max_map_count = 262144
net.core.somaxconn=65535
net.ipv4.ip_forward = 1
# yum install java-1.8.0-openjdk -y
# sysctl -p
# systemctl disable firewalld
# systemctl stop firewalld
# iptables -F

 

三、ELK+Filebeat的安裝

   配置yum源

[[email protected] ~]# ntpdate 0.centos.pool.ntp.org
[[email protected] ~]# vim /etc/yum.repos.d/elk.repo
[elk]
name=elk
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/
enable=1
gpgcheck=0

  安裝配置Elasticsearch Logstash Kibana Filebeat

[[email protected] ~]# yum install elasticsearch logstash kibana nodejs filebeat -y

 注:nodejs 可能安裝失敗

  使用安裝 nodejs 8.9.4

  解決方案:#在ROOT許可權下

   curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

   sudo yum install -y nodejs

   sudo yum install gcc-c++ make

   curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo

   sudo yum install yarn

  檢測:

[[email protected] ~]# node -v
v8.12.0
[[email protected] ~]# npm -v
6.4.1

Elasticsearch

[[email protected] ~]# grep -v ^# /etc/elasticsearch/elasticsearch.yml

cluster.name: elk-stack

node.name: elk.node1

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 0.0.0.0

http.port: 9200

discovery.zen.ping.unicast.hosts: ["本機IP:9300"]

discovery.zen.minimum_master_nodes: 1



[[email protected] ~]# systemctl start elasticsearch

[[email protected] ~]# ss -ntlup| grep -E "9200|9300"

tcp LISTEN 0 65535 :::9200 :::* users:(("java",pid=1624,fd=184))

tcp LISTEN 0 65535 :::9300 :::* users:(("java",pid=1624,fd=183))

 

Kibana

[[email protected] ~]# egrep -v "^#|^$" /etc/kibana/kibana.yml

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://本機IP:9200"

kibana.index: ".kibana"



漢化Kibana

[[email protected] ~]# yum install -y git

[[email protected] ~]# git clone https://github.com/anbai-inc/Kibana_Hanization.git

[[email protected] ~]# cd Kibana_Hanization

[[email protected] ~]# python main.py /usr/share/kibana



[[email protected] ~]# systemctl restart kibana

[[email protected] ~]# ss -ntlup| grep 5601

tcp LISTEN 0 511 *:5601 *:* users:(("node",pid=1885,fd=12))

Logstash

[[email protected] ~]# echo 'path.config: /etc/logstash/conf.d' >>/etc/logstash/logstash.yml

新增日誌處理檔案

[[email protected] ~]# vim /etc/logstash/conf.d/local_syslog.conf

input {

#filebeat客戶端

beats {

port => 5044

    }
}


#篩選

#filter { }

output {

# 輸出到es

elasticsearch {

hosts => ["http://本機IP:9200"]

index => "syslog-%{+YYYY.MM.dd}"

  }

}

[[email protected] ~]# systemctl start logstash

[[email protected] ~]# lsof -i:5044

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

java 2427 logstash 88u IPv6 27356 0t0 TCP *:lxi-evntsvc (LISTEN)

Filebeat

[[email protected] ~]# vim /etc/filebeat/filebeat.yml

filebeat.inputs:

- type: log

enabled: true

paths:

- /var/log/messages

filebeat.config.modules:

path: ${path.config}/modules.d/*.yml

reload.enabled: false

setup.template.settings:

index.number_of_shards: 3

output.logstash:

hosts: ["本機IP:5044"]



[[email protected] ~]# systemctl start filebeat

 

瀏覽器訪問Kabana

127.0.0.1:5601

ELK部署完成