最近一方面给自己开发的平台套模板,一方面研究一些新的技术,比如今天介绍的elk,下面是介绍一下我是如何使用elk收集linux系统history与展示的。
一、效果图
下面是效果图,感觉满足你需求在继续看
下面是具体介绍
1、Linux系统历史命令数据总量
主要是展示所选时间段接收history数据总量,比如昨天我总共收集了1002条数据
2、Linux系统历史命令监控主机数量
主要是监控总共有多少台主机开始收集history日志数据
3、LInux系统历史命令运行最多Top5
主要是介绍运行最多的命令,比如第一个ll命令运行最多
4、Linux系统历史命令登陆主机Top5
主要是介绍登陆主机ip最多的前5个
5、Linux系统历史命令时间数据总量
主要介绍各时间段收集的数据总量
6、Linux系统历史命令数据
主要是展示每条收集数据内容,包括收集时间、收集的主机名、当前登陆ip、登陆用户、当前用户、运行命令。
二、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源
1
2
3
4
5
6
7
8
|
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的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[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里添加
1
2
3
4
5
6
7
8
9
|
cat
>>
/etc/bashrc
<<EOF
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'
EOF
|
然后source /etc/bashrc
查看一下/var/log/command.log
是一个json格式的,包括时间、主机名、登陆ip、登陆用户、当前用户、命令
下面是indexer的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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
三、redis安装
1、下载
1
|
wget http:
//download
.redis.io
/releases/redis-3
.0.4.
tar
.gz
|
2、解压
1
|
tar
zxvf redis-3.0.4.
tar
.gz -C
/usr/local/
|
3、安装
1
2
|
cd
/usr/local/redis-3
.0.4
make
|
4、复制程序变量
1
2
|
cp
src
/redis-cli
/usr/bin
cp
src
/redis-server
/usr/bin
|
5、创建目录
1
|
mkdir
conf log db data
|
6、配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
[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
|
7、启动redis
1
|
redis-server
/usr/local/redis-3
.0.4
/conf/redis-6379
.conf
|
四、安装elasticsearch
1、安装
1
2
3
|
curl -L -O https:
//download
.elastic.co
/elasticsearch/elasticsearch/elasticsearch-1
.7.1.zip
unzip elasticsearch-1.7.1.zip
cd
elasticsearch-17.1
|
2、配置
1
2
3
4
|
09:52:38
# grep -v "^#" config/elasticsearch.yml |sed '/^$/d'
cluster.name: dl-elk
node.name:
"elk-bj-1-server"
node.master:
true
|
就配置了集群命令与节点名字
3、启动
1
|
bin
/elasticsearch
-d
|
这样elk就都安装完成了,我也没写的太详细,大家有需求可以自己查看官方介绍安装。
附件里我把我的Dashboard与相应视图都export了,大家需要可以自行import,但一定注意版本。
导入的顺序是:
1、Linux系统历史命令图形.json;
2、Linux系统历史命令搜索.json;
3、Linux系统历史命令数据视图.json.