CentOS 7.x 搭建 ELK 日誌監控系統
阿新 • • 發佈:2018-12-08
一、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包含四種工具:
-
- Packetbeat(蒐集網路流量資料)
- Topbeat(蒐集系統、程序和檔案系統級別的 CPU 和記憶體使用情況等資料)
- Filebeat(蒐集檔案資料)
- 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