【引自吟—技术交流的博客】最近一方面给自己开发的平台套模板,一方面研究一些新的技术,比如今天介绍的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源。
cat >>/etc/yum.repos.d/logstash.repo
[logstash-1.5]
name=Logstash repositoryfor1.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的配置。
这个配置就是收集/var/log/command.log的日志,这个日志是记录history命令的,output输出到redis服务。
下面是如何记录history历史命令,在/etc/bashrc里添加:
cat >>/etc/bashrc<
HISTDIR&#61;&#39;/var/log/command.log&#39;
if [ ! -f $HISTDIR ];then
touch $HISTDIR
chmod 666 $HISTDIR
fi
export HISTTIMEFORMAT&#61;"{\"TIME\":\"%F %T\",\"HOSTNAME\":\"$HOSTNAME\",\"LI\":\"$(who -u am i 2>/dev/null| awk &#39;{print $NF}&#39;|sed -e &#39;s/[()]//g&#39;)\",\"LU\":\"$(who am i|awk &#39;{print $1}&#39;)\",\"NU\":\"${USER}\",\"CMD\":\""
export PROMPT_COMMAND&#61;&#39;history 1|tail -1|sed "s/^[ ]\&#43;[0-9]\&#43; //"|sed "s/$/\"}/">> /var/log/command.log&#39;
EOF
然后source /etc/bashrc。
查看一下/var/log/command.log。
这是一个json格式的&#xff0c;包括时间、主机名、登陆ip、登陆用户、当前用户、命令。
下面是indexer的配置&#xff1a;
09:25:19 # cat /etc/logstash/conf.d/logstash_indexer.conf
input {
redis {
host &#61;> "10.10.125.8"
port &#61;> "6379"
data_type &#61;> "list"
key&#61;>"logstash:redis"
type &#61;> "redis-input"
}
}
output{
elasticsearch {
host &#61;>"172.16.3.72"
codec &#61;> "json"
protocol &#61;> "http"
}
stdout {}
}
其中10.10.125.8是redis服务器&#xff0c;172.16.3.72是elasticsearch的ip。
启动的话就使用/etc/init.d/logstash start。
三、redis安装
1.下载
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
2.解压
tar zxvf redis-3.0.4.tar.gz -C /usr/local/
3.安装
cd /usr/local/redis-3.0.4
make
4.复制程序变量
cp src/redis-cli /usr/bin
cp src/redis-server /usr/bin
5.创建目录
mkdir conf log db data
6.配置文件
[root&#64;ip-10-10-125-8 redis-3.0.4]# cat conf/redis-6379.conf |grep -v"^#"|sed&#39;/^$/d&#39;
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-onlyyes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfsync everysec
no-appendfsync-on-rewriteno
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size64mb
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
redis-server /usr/local/redis-3.0.4/conf/redis-6379.conf
四、安装elasticsearch
1.安装
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.配置
09:52:38 # grep -v"^#"config/elasticsearch.yml |sed&#39;/^$/d&#39;
cluster.name: dl-elk
node.name:"elk-bj-1-server"
node.master: true
就配置了集群命令与节点名字。
3.启动
bin/elasticsearch -d
这样elk就都安装完成了&#xff0c;我也没写的太详细&#xff0c;大家有需求可以自己查看官方介绍安装。
附件里我把我的Dashboard与相应视图都export了&#xff0c;大家需要可以自行import&#xff0c;但一定注意版本。
导入的顺序是&#xff1a;
1.Linux系统历史命令图形.json&#xff1b;
2.Linux系统历史命令搜索.json;
3.Linux系统历史命令数据视图.json.