最近一方面給本身開發的平臺套模板,一方面研究一些新的技術,好比今天介紹的elk,下面是介紹一下我是如何使用elk收集linux系統history與展現的。
node
1、效果圖linux
下面是效果圖,感受知足你需求在繼續看redis
下面是具體介紹json
一、Linux系統歷史命令數據總量centos
主要是展現所選時間段接收history數據總量,好比昨天我總共收集了1002條數據bash
二、Linux系統歷史命令監控主機數量服務器
主要是監控總共有多少臺主機開始收集history日誌數據架構
三、LInux系統歷史命令運行最多Top5app
主要是介紹運行最多的命令,好比第一個ll命令運行最多curl
四、Linux系統歷史命令登錄主機Top5
主要是介紹登錄主機ip最多的前5個
五、Linux系統歷史命令時間數據總量
主要介紹各時間段收集的數據總量
六、Linux系統歷史命令數據
主要是展現每條收集數據內容,包括收集時間、收集的主機名、當前登錄ip、登錄用戶、當前用戶、運行命令。
2、logstash安裝
我使用的elk架構以下
ps:這個圖是網上找的
個人elk版本分別爲
logstash 1.5.4-1
redis 3.0.4
elasticsearch 1.7.1
kibana 4.1.1
下面介紹如何安裝elk
其實shipper與indexer的logstash安裝同樣,只不過是配置文件不同
先介紹如何安裝logstash
我使用yum安裝,下面是安裝yum源
cat >>/etc/yum.repos.d/logstash.repo<EOF [logstash-1.5] name=Logstash repository for 1.5.x packages baseurl=http://packages.elasticsearch.org/logstash/1.5/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1 EOF
而後安裝
yum install logstash -y
下面是shipper的配置
[root@puppet ~]# cat /etc/logstash/conf.d/logstash_agent.conf input { file { path => ["/var/log/command.log"] type => "command" codec => "json" } } output { redis { host => ["10.10.125.8:6379"] data_type =>"list" key => "logstash:redis" } }
這個配置就是收集/var/log/command.log的日誌,這個日誌是記錄history命令的,output輸出到redis服務。
下面是如何記錄history歷史命令
在/etc/bashrc裏添加
HISTDIR='/var/log/command.log' if [ ! -f $HISTDIR ];then touch $HISTDIR chmod 666 $HISTDIR fi export HISTTIMEFORMAT="{\"TIME\":\"%F %T\",\"HOSTNAME\":\"$HOSTNAME\",\"LI\":\"$(who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g')\",\"LU\":\"$(who am i|awk '{print $1}')\",\"NU\":\"${USER}\",\"CMD\":\"" export PROMPT_COMMAND='history 1|tail -1|sed "s/^[ ]\+[0-9]\+ //"|sed "s/$/\"}/">> /var/log/command.log'
而後source /etc/bashrc
查看一下/var/log/command.log
是一個json格式的,包括時間、主機名、登錄ip、登錄用戶、當前用戶、命令
下面是indexer的配置
09:25:19 # cat /etc/logstash/conf.d/logstash_indexer.conf input { redis { host => "10.10.125.8" port => "6379" data_type => "list" key => "logstash:redis" type => "redis-input" } } output { elasticsearch { host =>"172.16.3.72" codec => "json" protocol => "http" } stdout {} }
其中10.10.125.8是redis服務器,172.16.3.72是elasticsearch的ip
啓動的話就使用/etc/init.d/logstash start
3、redis安裝
一、下載
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
二、解壓
tar zxvf redis-3.0.4.tar.gz -C /usr/local/
三、安裝
cd /usr/local/redis-3.0.4 make
四、複製程序變量
cp src/redis-cli /usr/bin cp src/redis-server /usr/bin
五、建立目錄
mkdir conf log db data
六、配置文件
[root@ip-10-10-125-8 redis-3.0.4]# cat conf/redis-6379.conf |grep -v "^#"|sed '/^$/d' daemonize yes pidfile /var/run/redis_6379.pid port 6379 bind 10.10.125.8 timeout 0 tcp-keepalive 0 loglevel notice logfile /var/log/redis/redis_6379.log databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename redis_6379.rdb dir /usr/local/redis-3.0.4/db/ slave-serve-stale-data yes slave-read-only yes repl-disable-tcp-nodelay no slave-priority 100 appendonly no appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes
七、啓動redis
redis-server /usr/local/redis-3.0.4/conf/redis-6379.conf
4、安裝elasticsearch
一、安裝
curl -L -O https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.zip unzip elasticsearch-1.7.1.zip cd elasticsearch-17.1
二、配置
09:52:38 # grep -v "^#" config/elasticsearch.yml |sed '/^$/d' cluster.name: dl-elk node.name: "elk-bj-1-server" node.master: true
就配置了集羣命令與節點名字
三、啓動
bin/elasticsearch -d
這樣elk就都安裝完成了,我也沒寫的太詳細,你們有需求能夠本身查看官方介紹安裝。
附件裏我把個人Dashboard與相應視圖都export了,你們須要能夠自行import,但必定注意版本。
導入的順序是:
一、Linux系統歷史命令圖形.json;
二、Linux系統歷史命令搜索.json;
三、Linux系統歷史命令數據視圖.json.