大數(shù)據(jù)
Elk是一個數(shù)據(jù)分析技術棧,在我們的信息時代最重要的就是信息藐唠,通過對信息的分析右钾,我們可以了解到一切我們想了解的事情。
elk分析日志只是其中一個很小的功能复旬,它更多的功能是結(jié)合Hadoop做一個大數(shù)據(jù)的分析垦缅。
什么是大數(shù)據(jù)?
大數(shù)據(jù)(big data)驹碍,指無法在一定時間范圍內(nèi)用常規(guī)軟件工具進行捕捉壁涎、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強的決策力志秃、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量怔球、高增長率和多樣化的信息資產(chǎn)。
我們Elk做的就是大數(shù)據(jù)的分析浮还,大數(shù)據(jù)的功能體現(xiàn)在哪竟坛?
在我們用淘寶京東購買商品的時候,他會根據(jù)你的喜好推薦一些你喜歡的物品碑定,做一個刺激消費流码。
比如我很喜歡鍵盤,多次搜索機械鍵盤 延刘,那么他的算法就會根據(jù)鍵盤給你推薦一些不同價位的鍵盤,這是如果我看到喜歡的鍵盤 就會買下來六敬,這就起到了一個刺激消費的結(jié)果碘赖,你以為這就完了? 這才剛開始!
他會根據(jù)你買東西的價位來估算你的經(jīng)濟條件普泡,根據(jù)你的搜索判斷你的職業(yè)播掷,根據(jù)算法給你推薦符合你經(jīng)濟條件,且需要的商品撼班,來刺激你消費歧匈。
還有一個很重要的問題,我們打開很多APP 都會彈出領取紅包砰嘁,獎金之類的選項件炉,它們都是有使用條件的,如果你覺得麻煩 矮湘,不差這點紅包而不去點擊這些按鈕斟冕,就進入了一個算法,它會認為你不需要優(yōu)惠缅阳,這類人 如果對比的話磕蛇,就會發(fā)現(xiàn)同一個商品你手機里的購買價格和別人手機里的價格是不同的,這些優(yōu)惠的價格 據(jù)我推測十办,因為它默認你不接受優(yōu)惠所以就把這筆錢賺走了秀撇,積少成多!
在信息時代 我們身邊處處都是大數(shù)據(jù)向族,作為一個IT工作者捌袜,我們應該對大數(shù)據(jù)做一定的了解,我采用的是ELK數(shù)據(jù)分析技術棧炸枣。
日志也是數(shù)據(jù)的一種虏等,下面我會簡述ELK分析nginx的日志
ELK介紹
ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana
1适肠、Elasticsearch是個開源分布式搜索引擎霍衫,提供搜集、分析侯养、存儲數(shù)據(jù)三大功能敦跌。
它的特點有:分布式,零配置逛揩,自動發(fā)現(xiàn)柠傍,索引自動分片,索引副本機制辩稽,restful風格接口惧笛,多數(shù)據(jù)源,自動搜索負載等逞泄。
2患整、Logstash 主要是用來日志的搜集拜效、分析、過濾日志的工具各谚,支持大量的數(shù)據(jù)獲取方式紧憾。
一般工作方式為c/s架構(gòu),client端安裝在需要收集日志的主機上昌渤,server端負責將收到的各節(jié)點日志進行過濾赴穗、修改等操作在一并發(fā)往elasticsearch上去。
3膀息、Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面般眉,可以幫助匯總、分析和搜索重要數(shù)據(jù)日志履婉。
4煤篙、FileBeat,它是一個輕量級的日志收集處理工具(Agent)毁腿,F(xiàn)ilebeat占用資源少辑奈,適合于在各個服務器上搜集日志后傳輸給Logstash,官方也推薦此工具已烤。
準備環(huán)境
兩臺測試服務器
服務器一號 192.168.14.111 Elasticsearch Kibana
服務器二號 192.168.14.222 Logstash Nginx
關閉防火墻
同步時間
在1鸠窗,2服務器上 安裝 ntpdate
在1服務器上
vim /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 192.168.14.111
allow 192.168.14.0/24
local stratum 10
重啟chronyd
在2服務器上
ntpdate 192.168.14.111
9 Apr 13:48:44 ntpdate[2327]: adjust time server 192.168.14.111 offset -0.000198 sec
在一號服務器上傳包 安裝els
ls
anaconda-ks.cfg elasticsearch-6.6.0.rpm
yum -y install java-1.8.0-openjdk
rpm -ivh elasticsearch-6.6.0.rpm
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-application
node.name: node-1
network.host: 192.168.14.111
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.14.111"]
在一號服務器上啟動,設置開機自啟
systemctl start elasticsearch
systemctl enable elasticsearch
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
我們測試一下
成功胯究!
在二號服務器上安裝logstash
ls
anaconda-ks.cfg logstash-6.6.0.rpm
yum -y install java-1.8.0-openjdk
rpm -ivh logstash-6.6.0.rpm
chmod 644 /var/log/messages
chmod 644 /usr/local/nginx/logs/access.log
vim /etc/logstash/conf.d/syslog.conf
input {
file {
path => "/var/log/messages"
type => "systemlog"
start_position => "beginning"
stat_interval => "2"
}
}
output {
elasticsearch {
hosts => ["192.168.100.100:9200"]
index => "logstash-systemlog-%{+YYYY.MM.dd}"
}
}
vim /etc/logstash/conf.d/nginx.conf
input{
file{
path => "/usr/local/nginx/logs/access.log"
type => "nginxlog"
start_position => "begining"
stat_interval => "2"
}
}
output{
elasticsearch {
hosts => ["192.168.14.111:9200"]
index => "logstash-nginxlog-%{+YYYY.MM.dd}"
}
}
systemctl start logstash
systemctl enable logstash
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
#驗證是否成功
在一號服務器上配置kibana
ls
anaconda-ks.cfg elasticsearch-6.6.0.rpm kibana-6.6.0-x86_64.rpm
rpm -ivh kibana-6.6.0-x86_64.rpm
vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "192.168.14.111"
elasticsearch.hosts: ["http://192.168.14.111:9200"]
systemctl start kibana
systemctl enable kibana
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
測試一下
使用apache自帶的壓力測試工具ab